000
14.03.2007, 10:07 Uhr
me-S-on
|
Nun , dies geht an den Threadschliesser von vorhin: Wir waren doch gerade dabei, es zu besänftigen. Ok, noch einen Thread, in dem ich normal frage, aber was dann als Antwort kommt, dafür kann ich nichts. Nun, mein Problem ist immer noch: Ein Parentfanster soll durch einen Klick auf einen child button die Hintergrundfarbe ändern. Der gesamte code steht im geschlossenen Thread dazu, hier nur die neuesten Änderungen, die aber IMMER NOCH NICHT klappen:
Code: |
// Hier das, was der child-Button beim Klick tut:
case WM_LBUTTONDOWN: { switch (LOWORD(wm_Wflags)) { case 2: { SendMessage(mwinhan,WM_PAINT,0,1); // LPARAM als Schalter //InvalidateRect( mwinhan,&clrect,TRUE); break; }
|
Nun, die MessageBox erscheint, das heisst, LPARAM wird gesetzt, wenn WM_PAINT versendet wird. Da aber WM_PAINT doch die zeichnen-funktionen unterstützt, frage ich mich, warum zum TEUFEL kein Viereck gezeichnet wird. Danach kann ich ja immer noch den Background ändern, aber ich hätte WNIGSTENS erstmal ein viereck. Das komische: Packe ich es in irgendwelche anderen Nachrichten-cases, zB den Buttonclick selber, und benutze GetDc, dann passiert was. Natürlich wird beim neuzeichnen der Inhalt wider gelöscht, aber er soll konstant bleiben, da dachte ich, ich packe es in dei WM_PAINT. Nun wird die Message-Box zwar ausgegeben, aber nicht das Viereck. Ich wette, ich übersehe nur ne Kleinigkeit ->
Code: |
// Hier das, was daraufhin mit dem Parent geschehen soll ( erst mal test: nur ein Rechteck)
case WM_PAINT: { if(wm_Lflags == 1) // wenn Schalter gesetzt, also Button geklickt wurde //------------------------------------------------------------------------------ { /* test, if wmLparam is set*/ MessageBox(NULL,"LPARAM is set", "Set?",MB_OK); hdevcon = BeginPaint( mwinhan,&paintinfo); HGDIOBJ anything = SelectObject(hdevcon,CreateSolidBrush(RGB(0,0,0))); // HINZUGEFÜGT: Resultat : nichts geschieht Rectangle(hdevcon,20,20,20,20); EndPaint( mwinhan,&paintinfo); //------------------------------------------------------------------------------ } else { const char szinfo[] = "Two button-children"; hdevcon = BeginPaint(mwinhan,&paintinfo); SetBkMode(hdevcon,TRANSPARENT);// <- HIER!!! TextOut(hdevcon,clrect.right/4,clrect.bottom/8,szinfo,strlen(szinfo)); EndPaint( mwinhan,&paintinfo); } break; }
|
Danke sehr schonmal -- - Bonus vir semper tiro - Dieser Post wurde am 14.03.2007 um 10:27 Uhr von me-S-on editiert. |