Search code examples
winapitextboxtransparency

Transparent text box


I would like to use a transparent read-only text box as a replacement for a label; to allow users to select+copy the text. Exactly what Windows Explorer uses on the file properties window:

enter image description here

I've found similar question: Making a TextBox Transparent

Comments there suggest that proposed solutions do not work with ClearType. But my testing of suggested "AlphaBlendTextBox - A transparent/translucent textbox for .NET" component shows otherwise.

Anyway, the code looks quite complex for such a "simple task". They do save parent control image to a bitmap, drawing that bitmap over and over again with the text on top of it. I would expect there there has to be a solution delegating drawing of the background to parent control.

Possibly their solution is that complex because it allows alpha-blending too. I do not need that. I just want to see a parent background behind the text. Is there a simpler/smarter way?

Note that I'm happy with any winapi solution (pure winapi, MFC, WinForms, Delphi, whatever).


Solution

  • According to Spy++, it's a typical Edit control with WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR | WS_EX_NOPARENTNOTIFY as extended style and WS_CHILDWINDOW | WS_VISIBLE | ES_LEFT | ES_AUTOHSCROLL | ES_READONLY as original window style.

    I've tested it in Win32 and I can confirm that it does what you want it to do.

    Also, next time you want to mimic the appearances of other controls, simply fire up Spy++ to get the detailed information about them.

    enter image description here