Create TextBox with dithered background

Create TextBox with dithered background

If your video display has 256 colors or less and you assign a dithered color to the BackColor property of a TextBox control, you’ll find that the background color under the text inside the TextBox is displayed in a different (solid) color.

To work around this issue, you must trap the WM_CTLCOLOREDIT message, that the control sends to its parent form when its background is about to be redrawn, and you must explicitly set a transparent background for the control. Here’s the code that does the job:

' REQUIRES THE MSGHOOK.DLL COMPONENTPrivate Declare Function SetBkMode Lib "gdi32" (ByVal hdc As Long, _    ByVal nBkMode As Long) As LongConst WM_CTLCOLOREDIT = &H133Const TRANSPARENT = 1Dim WithEvents FormHook As MsgHookDim TextHWnd As LongPrivate Sub Form_Load()    Set FormHook = New MsgHook    FormHook.StartSubclass Me    TextHWnd = Text1.hWndEnd SubPrivate Sub FormHook_BeforeMessage(uMsg As Long, wParam As Long, lParam As Long, _    retValue As Long, Cancel As Boolean)    If uMsg = WM_CTLCOLOREDIT And lParam = TextHWnd Then       SetBkMode wParam, TRANSPARENT    End IfEnd Sub

See also  Why ChatGPT Is So Important Today

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist