<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Transparente Editbox]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte gerne eine Editbox (über den Ressourceneditor erstellt) in einem Dialog transparent auf eine Bitmap zeichnen. Den Rahmen konnte ich schon per Styleflags entfernen, aber wenn ich auf WM_CTLCOLOREDIT reagiere, indem ich SetBkMode(wParam, TRANSPARENT) aufrufe und anschließend noch einen HOLLOW_BRUSH zurückgebe, gibt es Probleme beim Zeichnen: Zwar hat die Editbox keinen Rahmen und keine Hintergrundfarbe mehr, aber wenn ich ein Wort eingebe und dieses wieder löschen will, bewegt sich nur das Caret wieder zurück. Der Text wird aber nicht entfernt.</p>
<p>Anscheinend gibt es ein Problem beim Neuzeichnen der Editbox. Ich vermute mal, dass irgendeine DefWndProc() mit meinem übergebenen HOLLOW_BRUSH die Editbox &quot;übermalen&quot; will, was natürlich erfolglos bleibt.</p>
<p>Hat jemand eine Idee, wie man dieses Problem lösen könnte? Bei google fand ich nur eine Umsetzung per MFC (ich hab keine Ahnung davon) und außerdem war da irgendwie nichts beschrieben, sondern lediglich ein kompletter Sourcecode des ganzen Projekts verfügbar.</p>
<p>ph4nt0m</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/193617/transparente-editbox</link><generator>RSS for Node</generator><lastBuildDate>Tue, 30 Jun 2026 05:49:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/193617.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 27 Sep 2007 22:13:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Transparente Editbox on Thu, 27 Sep 2007 22:13:36 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte gerne eine Editbox (über den Ressourceneditor erstellt) in einem Dialog transparent auf eine Bitmap zeichnen. Den Rahmen konnte ich schon per Styleflags entfernen, aber wenn ich auf WM_CTLCOLOREDIT reagiere, indem ich SetBkMode(wParam, TRANSPARENT) aufrufe und anschließend noch einen HOLLOW_BRUSH zurückgebe, gibt es Probleme beim Zeichnen: Zwar hat die Editbox keinen Rahmen und keine Hintergrundfarbe mehr, aber wenn ich ein Wort eingebe und dieses wieder löschen will, bewegt sich nur das Caret wieder zurück. Der Text wird aber nicht entfernt.</p>
<p>Anscheinend gibt es ein Problem beim Neuzeichnen der Editbox. Ich vermute mal, dass irgendeine DefWndProc() mit meinem übergebenen HOLLOW_BRUSH die Editbox &quot;übermalen&quot; will, was natürlich erfolglos bleibt.</p>
<p>Hat jemand eine Idee, wie man dieses Problem lösen könnte? Bei google fand ich nur eine Umsetzung per MFC (ich hab keine Ahnung davon) und außerdem war da irgendwie nichts beschrieben, sondern lediglich ein kompletter Sourcecode des ganzen Projekts verfügbar.</p>
<p>ph4nt0m</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1374098</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1374098</guid><dc:creator><![CDATA[ph4nt0m]]></dc:creator><pubDate>Thu, 27 Sep 2007 22:13:36 GMT</pubDate></item><item><title><![CDATA[Reply to Transparente Editbox on Fri, 28 Sep 2007 07:57:31 GMT]]></title><description><![CDATA[<p>Das ist doch auch klar. Der Hintergrund wird doch nicht neu gezeichnet.<br />
Und durch die Behandlung von WM_CTLCOLOREDIT verhinderst Du, dass der Background neu gezeichnet wird.<br />
So wie Du es machst ist das unmöglich. Die Standardfenster sehen nicht vor Transparent zu sein. Wenn müsstest Du in OnEraseBkGnd dafür sorgen, dass sich das Parent Fenster neu zeichnet...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1374209</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1374209</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Fri, 28 Sep 2007 07:57:31 GMT</pubDate></item><item><title><![CDATA[Reply to Transparente Editbox on Fri, 28 Sep 2007 16:37:04 GMT]]></title><description><![CDATA[<p>Danke, dann war meine Vermutung ja richtig. Wie genau meinst du denn das mit WM_ERASEBKGND? Diese Nachricht bezieht sich ja normalerweise auf meinen gesamten Dialog. Muss ich da irgendwie mit Subclassing ran und eine eigene WndProc nur für die Editbox schreiben? Wie soll ich dann von dort eine Neuzeichnung des Parentfensters veranlassen?</p>
<p>ph4nt0m</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1374517</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1374517</guid><dc:creator><![CDATA[ph4nt0m]]></dc:creator><pubDate>Fri, 28 Sep 2007 16:37:04 GMT</pubDate></item><item><title><![CDATA[Reply to Transparente Editbox on Fri, 28 Sep 2007 17:54:40 GMT]]></title><description><![CDATA[<p>Deine Edit Box bekommt genauso den Befehl den Hintergrund zu löschen. Durch das setzen des hollow brush wird das nun unterbunden. Dadurch wird aber der alte Inhalt auch nicht geöscht.</p>
<p>Du musst also veranllasen, dass beim WM_ERASEBKGND im Edit Control der Parent Hintergrund neu gezeichnet wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1374574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1374574</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Fri, 28 Sep 2007 17:54:40 GMT</pubDate></item><item><title><![CDATA[Reply to Transparente Editbox on Fri, 28 Sep 2007 18:31:47 GMT]]></title><description><![CDATA[<p>Ja, aber dafür muss ich doch eine gesonderte Fensterprozedur für die Editbox erstellen, oder? Wenn meine normale Prozedur WM_ERASEBKGND bekommt, dann bezieht sich das ja meines Wissens nach auf das gesamte Fenster. Und anhand von wParam oder lParam lässt sich der msdn zufolge auch nicht erkennen, an wen diese Nachricht gerichtet ist.</p>
<p>ph4nt0m</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1374591</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1374591</guid><dc:creator><![CDATA[ph4nt0m]]></dc:creator><pubDate>Fri, 28 Sep 2007 18:31:47 GMT</pubDate></item><item><title><![CDATA[Reply to Transparente Editbox on Sun, 30 Sep 2007 10:16:55 GMT]]></title><description><![CDATA[<p>Erstmal entschuldige ich mich für den Doppelpost <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Ich habe jetzt der Editbox eine eigene Fensterprozedur zugeordnet (Subclassing) und dann dort bei WM_ERASEBKGND ein Neuzeichnen des Parentfensters mit<br />
<em><strong>InvalidateRect(GetParent(hWnd), NULL, TRUE);</strong></em><br />
veranlasst.</p>
<p>Nun wird aber das gesamte Fenster anscheinend extrem oft neugezeichnet, obwohl ich noch gar nichts in die Editbox eingegeben habe und damit eigentlich kein Grund für zahlreiche Aufrufe von WM_ERASEBKGND besteht. Dennoch scheint diese Nachricht sehr oft an die Editbox gesendet zu werden... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Hat denn sonst vielleicht noch jemand einen Vorschlag?</p>
<p>ph4nt0m</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1375221</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1375221</guid><dc:creator><![CDATA[ph4nt0m]]></dc:creator><pubDate>Sun, 30 Sep 2007 10:16:55 GMT</pubDate></item><item><title><![CDATA[Reply to Transparente Editbox on Sun, 30 Sep 2007 11:08:59 GMT]]></title><description><![CDATA[<p>1. Mach keinen Invalidate. Zumindest wenn Du nicht auch sofort wieder ein UpdateWindow auslöst! Das verursacht evtl. in Deinem eigenen Fensterwieder eine Rückkopplung.<br />
2. Es ist tödlich wenn Du das ganze Fenter invalidierst. Warum besorgst Du Dir nicht das Clipping rectangle und invalidierst nur den Bereich des Parents, das kann schon helfen.<br />
3. Was spricht dagegen WM_ERASEBKGND direkt an das Parent weiterzusenden? Den DC hast Du ja schon und geclippt ist der auch schon!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1375251</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1375251</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Sun, 30 Sep 2007 11:08:59 GMT</pubDate></item><item><title><![CDATA[Reply to Transparente Editbox on Sun, 30 Sep 2007 11:21:43 GMT]]></title><description><![CDATA[<p>Es sollte sich vllt. einer irgendwann mal die Mühe machen, und für die F.A.Q. beschreiben, wie man ein Bild als Edit-Hintergrund bzw. ein transparentes Edit-Feld erzeugen kann. Weil die Frage wurde schon zum sonst wievielten mal gestellt. Ich hatte damit schonmal angefangen, aber habe keine Zeit mehr...</p>
<p>Mfg Ominion</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1375257</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1375257</guid><dc:creator><![CDATA[Ominion]]></dc:creator><pubDate>Sun, 30 Sep 2007 11:21:43 GMT</pubDate></item><item><title><![CDATA[Reply to Transparente Editbox on Sun, 30 Sep 2007 11:38:54 GMT]]></title><description><![CDATA[<p>Erstmal danke für die Antwort!</p>
<p>Leider funktioniert es bisher immer noch nicht. Ich habe jetzt einmal ein RECT entsprechend gefüllt und dann<br />
<em>InvalidateRect(GetParent(hWnd), &amp;rc, TRUE);<br />
UpdateWindow(GetParent(hWnd));</em><br />
als Reaktion auf WM_ERASEBKGND des Editfensters aufgerufen. Im Bereich des RECTs berfindet sich nun aber ein dauerhafter Streifen in dem standard &quot;Dialoggrau&quot;.</p>
<p>Auch ein Aufruf von<br />
<em>SendMessage(GetParent(hWnd), WM_ERASEBKGND, wParam, 0L);</em><br />
Bewirkt dieselbe graue Farbe, nur auf dem ganzen Dialog und nicht nur innerhalb des Clippingrechteckes.</p>
<p>Ich habe nach wie vor irgendwie den Verdacht, dass WM_ERASEBKGND extrem oft an die Editbox gesendet wird und daher durch das viele Löschen ein dauerhaftes Grau entsteht. Ist WM_ERASEBKGND vielleicht die falsche Nachricht, auf die ich beim Editcontrol reagieren sollte?</p>
<p>ph4nt0m</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1375268</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1375268</guid><dc:creator><![CDATA[ph4nt0m]]></dc:creator><pubDate>Sun, 30 Sep 2007 11:38:54 GMT</pubDate></item><item><title><![CDATA[Reply to Transparente Editbox on Sun, 30 Sep 2007 13:22:16 GMT]]></title><description><![CDATA[<p>Wie zeichnest Du denn den Hintergrund in dem Dialog? In einem WM_ERASEBKGND Handler oder in WM_PAINT?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1375321</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1375321</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Sun, 30 Sep 2007 13:22:16 GMT</pubDate></item><item><title><![CDATA[Reply to Transparente Editbox on Sun, 30 Sep 2007 13:33:44 GMT]]></title><description><![CDATA[<p>Ich zeichne den Hintergrund (ein Bitmap) in WM_PAINT.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1375331</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1375331</guid><dc:creator><![CDATA[ph4nt0m]]></dc:creator><pubDate>Sun, 30 Sep 2007 13:33:44 GMT</pubDate></item><item><title><![CDATA[Reply to Transparente Editbox on Mon, 01 Oct 2007 14:30:55 GMT]]></title><description><![CDATA[<p>Ich muss mich leider nochmal melden. Mein Problem ist immer noch nicht richtig gelöst, aber der Thread rutscht irgendwie immer wieder ab.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/35992">@Martin</a> Richter, deine sehr spezifische Frage, wo ich denn den Hintergrund zeichne, klang für mich so, als hättest du eine Lösung <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> Wäre sehr nett, wenn du dich da nochmal melden würdest.</p>
<p>ph4nt0m</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1376033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1376033</guid><dc:creator><![CDATA[ph4nt0m]]></dc:creator><pubDate>Mon, 01 Oct 2007 14:30:55 GMT</pubDate></item><item><title><![CDATA[Reply to Transparente Editbox on Mon, 01 Oct 2007 15:57:06 GMT]]></title><description><![CDATA[<p>Der Hintergrund gehört in WM_ERASEBKGND gezeichnet. Dnan kannst Du nämlich auch aus dem Handler des Edit Controls WM_ERASEBKGND an das Parent weiterleiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1376093</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1376093</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Mon, 01 Oct 2007 15:57:06 GMT</pubDate></item><item><title><![CDATA[Reply to Transparente Editbox on Mon, 01 Oct 2007 16:32:33 GMT]]></title><description><![CDATA[<p>Ok, ich habe jetzt alles aus WM_PAINT (hauptsächlich das Zeichnen des Hintergrundbitmaps) in WM_ERASEBKGND ausgelagert und halt den DC nicht mehr mit BeginPaint() sondern mit GetDC() ermittelt. Beim Editcontrol wird WM_ERASEBKGND jetzt durch <strong>SendMessage(GetParent(hWnd), WM_ERASEBKGND, wParam, 0L);</strong> an den Dialog weitergeleitet.</p>
<p>Aber was soll ich sagen: Es geht einfach immer noch nicht: Die eingegebenen Zeichen werden zwar angezeigt, aber beim anschließenden Löschen befinden sie sich immernoch auf dem Hintergrund. Ich hab echt keine Ahnung mehr, was da noch falsch sein könnte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>ph4nt0m</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1376114</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1376114</guid><dc:creator><![CDATA[ph4nt0m]]></dc:creator><pubDate>Mon, 01 Oct 2007 16:32:33 GMT</pubDate></item><item><title><![CDATA[Reply to Transparente Editbox on Mon, 01 Oct 2007 18:35:39 GMT]]></title><description><![CDATA[<p>Also ich habe hier ein kleines Beispiel gebaut (mit der MFC aber das Prinzip ist gleich).</p>
<p>Es geht mit zwei simplen Handlern. WM_CTLCOLOREDIT wird abgefangen und WM_ERASEBKGND.</p>
<pre><code class="language-cpp">IMPLEMENT_DYNAMIC(CTransparentEdit, CEdit)

CTransparentEdit::CTransparentEdit()
{

}

CTransparentEdit::~CTransparentEdit()
{
}

BEGIN_MESSAGE_MAP(CTransparentEdit, CEdit)
	ON_WM_ERASEBKGND()
	ON_WM_CTLCOLOR_REFLECT()
END_MESSAGE_MAP()

// CTransparentEdit message handlers

BOOL CTransparentEdit::OnEraseBkgnd(CDC* pDC)
{
	return static_cast&lt;BOOL&gt;(::SendMessage(GetParent()-&gt;GetSafeHwnd(),WM_ERASEBKGND,reinterpret_cast&lt;WPARAM&gt;(pDC-&gt;GetSafeHdc()),0));
}

HBRUSH CTransparentEdit::CtlColor(CDC* pDC, UINT /*nCtlColor*/)
{
	Default();
	pDC-&gt;SetBkMode(TRANSPARENT);
	return reinterpret_cast&lt;HBRUSH&gt;(GetStockObject(HOLLOW_BRUSH));
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1376152</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1376152</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Mon, 01 Oct 2007 18:35:39 GMT</pubDate></item><item><title><![CDATA[Reply to Transparente Editbox on Mon, 01 Oct 2007 19:01:59 GMT]]></title><description><![CDATA[<p>Danke für deine Mühe! Ich poste hier einfach mal die relevanten stellen aus meinem Code:</p>
<pre><code class="language-cpp">static LONG_PTR prevEditProc;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
	return DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DialogProc);
}

BOOL CALLBACK DialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{		
	HDC hDC;
	static IPicture * back;

	switch(message)
	{
	case WM_INITDIALOG: 
		prevEditProc = SetWindowLongPtr(GetDlgItem(hDlg, IDC_EDIT_NAME), GWLP_WNDPROC, (LONG_PTR) EditProc);
		back = LoadPicture(MAKEINTRESOURCE(IDB_BACKGROUND));
		return TRUE;

	case WM_ERASEBKGND:
		hDC = GetDC(hDlg);		
		DrawPicture(hDC, back, 0, 0);		
		ReleaseDC(hDlg, hDC);		
		return TRUE;

	case WM_CTLCOLOREDIT:		
		SetBkMode((HDC) wParam, TRANSPARENT);
		SetTextColor((HDC) wParam, RGB(255,255,255));
		return (BOOL) GetStockObject(HOLLOW_BRUSH);

	case WM_DESTROY:
	case WM_CLOSE:   
		SetWindowLongPtr(GetDlgItem(hDlg, IDC_EDIT_NAME), GWLP_WNDPROC, (LONG_PTR) prevEditProc);		
		EndDialog(hDlg,0);
		return TRUE;
	}
	return FALSE;
}

LRESULT CALLBACK EditProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch(message)
	{
	case WM_ERASEBKGND:		
		return SendMessage(GetParent(hWnd), WM_ERASEBKGND, wParam, 0L);

	default:
		break;
	}
	return CallWindowProc((WNDPROC) prevEditProc, hWnd, message, wParam, lParam);
}
</code></pre>
<p>Eigentlich müsste ich meines Wissens nach alles so gemacht haben wie du (mal von MFC-&gt;WinAPI abgesehen). Mir ist nur irgendwie aufgefallen, dass du WM_CTLCOLOREDIT beim Editcontrol selbst zu verarbeiten scheinst!? Ich mache das in der Dialogprozedur, aber daran kanns eigentlich nicht liegen, weil der Hintergrund ja schließlich transparent ist. Das Problem ist halt, dass das Hintergrundbitmap nicht neu gezeichnet wird, wenn sich der Inhalt der Editbox ändert...</p>
<p>ph4nt0m</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1376168</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1376168</guid><dc:creator><![CDATA[ph4nt0m]]></dc:creator><pubDate>Mon, 01 Oct 2007 19:01:59 GMT</pubDate></item><item><title><![CDATA[Reply to Transparente Editbox on Tue, 02 Oct 2007 17:48:33 GMT]]></title><description><![CDATA[<p>Mir ist noch was anderes aufgefallen: In deinem Code steht was von &quot;ON_WM_CTLCOLOR_REFLECT&quot;. Ich kann zwar überhaupt kein MFC, aber daraus würde ich ableiten, dass die entsprechende Nachricht WM_CTLCOLOR_REFLECT heißt? Ist das vielleicht die Lösung meines Problems? Andererseits finde ich in der MSDN dazu nichts und mein Compiler kennt diese Nachricht ebensowenig...</p>
<p>Was könnte ich denn noch ausprobieren? Ich bin für jeden Vorschlag dankbar. Mittlerweile hänge ich schon seit fast einer Woche an dem Problem und würde dafür so gerne endlich mal eine Lösung haben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>ph4nt0m</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1376797</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1376797</guid><dc:creator><![CDATA[ph4nt0m]]></dc:creator><pubDate>Tue, 02 Oct 2007 17:48:33 GMT</pubDate></item><item><title><![CDATA[Reply to Transparente Editbox on Tue, 02 Oct 2007 19:19:51 GMT]]></title><description><![CDATA[<p>Das Reflect bedeutet nur, dass ich die Nachricht, die normalerweise an das Parent gesendet wird von der Fensterklasse selbst behandelt wird.</p>
<p>Was ist denn jetzt noch Dein Problem. Mein Code funktioniert relativ gut. Besser wäre er noch wenn ich das Clipping auf das rect des Edit Controls beschränke.<br />
Ich habe aktuell aber keine Lust <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /> das ganze runterzuschreiben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1376849</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1376849</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 02 Oct 2007 19:19:51 GMT</pubDate></item><item><title><![CDATA[Reply to Transparente Editbox on Tue, 02 Oct 2007 19:50:15 GMT]]></title><description><![CDATA[<p>Was mein Problem ist? :p Es funktioniert immer noch nicht! Den Code, den ich oben gespostet habe, hatte ich vorher genau so wie nach deinem Post. Ich habe einfach nichts gefunden, was noch falsch an meiner Umsetzung sein könnte.</p>
<p>Allerdings habe ich folgendes entdeckt: Spy++ auf das Editcontrol angewandt zeigt bei Löschen des Inhalts nie WM_ERASEBKGND an. Und jetzt kommts noch besser: Ein direkter Breakpoint auf die Anweisung unter WM_ERASEBKGND des Editcontrols stoppt die Programmausführung nicht, wenn ich einen eingegebenen Text lösche. Ist das nicht ein Beweis dafür, dass WM_ERASEBKGND gar nicht an meine Editbox gesendet wird, wenn ich Text darin lösche, und somit auch keine Weiterleitung an das Parent geschieht -&gt; Hintergrund wird NICHT neu gezeichnet?</p>
<p>ph4nt0m</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1376858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1376858</guid><dc:creator><![CDATA[ph4nt0m]]></dc:creator><pubDate>Tue, 02 Oct 2007 19:50:15 GMT</pubDate></item><item><title><![CDATA[Reply to Transparente Editbox on Tue, 02 Oct 2007 20:31:17 GMT]]></title><description><![CDATA[<p>Jupp! Sieht so aus. Vermutlich zeichnet das Edit Control die ganze Sache sogar direkt bei der Eingabe.<br />
Ich habe nur einen groben Test mit meinem Code gemacht. Ich habe aktuell etwas wenig Zeit. Ich kann also nicht auschliessen, dass das ganze doch nicht 100% funktioniert.<br />
Aber das würde bedeuten, dass Du gar keine Chance zum eingreifen hast. Denn Du bekommst nur WM_CTLCOLOREDIT gesendet. Das Edit Control verwendet immer den Brush, den Du lieferst zum löschen des Backgrounds...</p>
<p>Such doch nochmal bei <a href="http://www.codeproject.com" rel="nofollow">www.codeproject.com</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1376875</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1376875</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 02 Oct 2007 20:31:17 GMT</pubDate></item><item><title><![CDATA[Reply to Transparente Editbox on Tue, 02 Oct 2007 20:35:26 GMT]]></title><description><![CDATA[<p>Versuch doch noch mal genau das bisherige Verfahren und zusätzlich nach jedem EN_CHANGE machst Du ein Invalidate().<br />
Dadurch habe ich auch das Löschen ins den Griff gekriegt. Ich habe es gerade noch mal probiert. Aber nun ist Schluß für heute...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1376878</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1376878</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 02 Oct 2007 20:35:26 GMT</pubDate></item><item><title><![CDATA[Reply to Transparente Editbox on Tue, 02 Oct 2007 20:40:48 GMT]]></title><description><![CDATA[<p>Hmm, das wäre ziemlich blöd. Mit der WinAPI hat man doch sonst schon so viele Möglichkeiten... Ich habe über google schon vor Erstellen dieses Threads <a href="http://www.codeguru.com/cpp/controls/editctrl/transparent/article.php/c3921/" rel="nofollow">das</a> gefunden. Nach Beschreibung genau das, was ich suche. Allerdings ist es in MFC (wie gesagt hab ich da keine Ahnung von) und die Kommentare unten drunter auf der Seite meinen teilweise, dass es sowieso nicht klappen würde. Testen kann ich es aber aus dem genannten Grund leider nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>ph4nt0m</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1376881</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1376881</guid><dc:creator><![CDATA[ph4nt0m]]></dc:creator><pubDate>Tue, 02 Oct 2007 20:40:48 GMT</pubDate></item><item><title><![CDATA[Reply to Transparente Editbox on Tue, 02 Oct 2007 22:43:30 GMT]]></title><description><![CDATA[<p>Also hab mir das Beispiel (von Deinem Link) mal angeguckt und finde das Resultat einfach nur lächerlich <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> . Ähm, das ist doch gar nicht 'echt' transparent... .</p>
<p>Hab Dir bei Codeproject mal das rausgesucht, das sieht ganz gut aus:<br />
- <a href="http://www.codeproject.com/dialog/pellucid.asp" rel="nofollow">http://www.codeproject.com/dialog/pellucid.asp</a><br />
- <a href="http://www.codeproject.com/staticctrl/transparentstatic.asp?df=100&amp;forumid=13858&amp;exp=0&amp;select=431984" rel="nofollow">http://www.codeproject.com/staticctrl/transparentstatic.asp?df=100&amp;forumid=13858&amp;exp=0&amp;select=431984</a></p>
<p>PS: Das ist auch alles (leider <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> ) MFC, aber ich bin der Meinung, wer die WinAPI und C++ beherrscht (naja, mit dem Begriff sollte man wohl vorsichtig umgehen), kann auch MFC-Code verstehen.</p>
<p>Leider geht es mit SetLayeredWindowAttributes *nicht*...das wäre ne schöne Sache :p gewesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1376934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1376934</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Tue, 02 Oct 2007 22:43:30 GMT</pubDate></item><item><title><![CDATA[Reply to Transparente Editbox on Thu, 04 Oct 2007 09:11:13 GMT]]></title><description><![CDATA[<p>So, also durch das Reagieren auf EN_CHANGE funktioniert das Löschen durch Drücken der Backspacetaste schonmal super <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Probleme gibt es aber leider noch, wenn ich den Text in der Editbox mit der Maus durch Ziehen erst markiere und anschließend den blau markierten Bereich wieder durch Ziehen verkleinere. Dann bleibt die blaue Markierung leider bestehen. Gibt es da eventuell auch eine weitere Nachricht, bei der man den Hintergrund löschen könnte?</p>
<p>Eine andere Frage: Ich habe neben dem Hintergrundbitmap auch zwei Bitmapbuttons in meinem Dialog. Das sind normale Buttons, allerdings ist das Flag BS_OWNERDRAW gesetzt. Als Reaktion auf WM_DRAWITEM werden diese dann gezeichnet.</p>
<p>Da aber zwischendurch ja jetzt durch das Editcontrol ein WM_ERASEBKGND an das Parent weitergeleitet wird, wird mein Bitmaphintergrund neugezeichnet, OHNE dass die Bitmapbuttons danach neugezeichnet werden. Sie sind also kurz gesagt nicht mehr zu sehen. Es wird nach dem WM_ERASEBKGND weder WM_DRAWITEM, noch WM_PAINT aufgerufen. Wie könnte ich diese Problem lösen? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>ph4nt0m</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1377650</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1377650</guid><dc:creator><![CDATA[ph4nt0m]]></dc:creator><pubDate>Thu, 04 Oct 2007 09:11:13 GMT</pubDate></item><item><title><![CDATA[Reply to Transparente Editbox on Thu, 04 Oct 2007 10:00:52 GMT]]></title><description><![CDATA[<p>Du musst das Löschen des Hintergrundes evtl. natürlich clippen.</p>
<p>Oder WS_CLIPCHILDREN verwenden für den Dialog.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1377691</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1377691</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 04 Oct 2007 10:00:52 GMT</pubDate></item><item><title><![CDATA[Reply to Transparente Editbox on Thu, 04 Oct 2007 10:30:35 GMT]]></title><description><![CDATA[<p>Danke für die schnelle Antwort <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> Ich habe das Flag jetzt für den Dialog gesetzt. Nun gibt es beim Verschieben des Fensters bei den beiden Schaltflächen aber ein unschönes Flackern (keine Ahnung woran das wieder liegen soll <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    />) und im Bereich der Editbox wird der Hintergrund überhaupt nicht gezeichnet. Der Dialog hat hier ein Loch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> Der Grund ist klar: Durch WS_CLIPCHILDREN wird bei WM_ERASEBKGND ja auch genau dieser Bereich ausgespart, dabei soll ja gerade NUR hier der Hintergrund neugezeichnet werden.</p>
<p>Es tut mir leid, wenn ich da langsam mit nerve. Ich hänge jetzt hier schon ewig mit diesem &quot;eigentlich&quot; trivialen Problem rum und halte dich damit irgendwie auf. Ich hätte am Anfang wirklich gedacht, dass das alles einfacher geht und nicht bei jedem Schritt wieder neue Probleme auftauchen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>ph4nt0m</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1377715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1377715</guid><dc:creator><![CDATA[ph4nt0m]]></dc:creator><pubDate>Thu, 04 Oct 2007 10:30:35 GMT</pubDate></item></channel></rss>