Comboboxes in normalen Fenster



  • Ich würds mal mit WM_ACTIVATE probieren. Bin mir aber nicht sicher, ob's funktioniert



  • Ich würde da eher EnableWindow nehmen 🕶



  • Also hier ist das versprochene Textstückchen:

    //.....
    	case WM_CTLCOLOREDIT:
    	case WM_CTLCOLORLISTBOX:
    		{
    			if((HWND)lparam == Fensterquelltexthandle)
    			{
    				SetBkColor((HDC)wparam, RGB(255, 80, 80));
    				SetTextColor((HDC)wparam, RGB(0, 0, 130));
    				return((LRESULT)CreateSolidBrush(RGB(255, 80, 80)));
    			}
    			else if((HWND)lparam != Fensternormalerlinkhandle && (HWND)lparam != Fensteraktiverlinkhandle && (HWND)lparam != Fensterbesuchterlinkhandle && (HWND)lparam != Fenstermauszeigerlinkhandle)
    			{
    				SetBkColor((HDC)wparam, RGB(255, 255, 80));
    				SetTextColor((HDC)wparam, RGB(0, 130, 0));
    				return((LRESULT)CreateSolidBrush(RGB(255, 255, 80)));
    			}
    			else
    			{
    				SetBkColor((HDC)wparam, RGB(121, 121, 255));
    				SetTextColor((HDC)wparam, RGB(255, 200, 255));
    				UpdateWindow(Fensternormalerlinkhandle);
    				UpdateWindow(Fensteraktiverlinkhandle);
    				UpdateWindow(Fensterbesuchterlinkhandle);
    				UpdateWindow(Fenstermauszeigerlinkhandle);
    				return((LRESULT)CreateSolidBrush(RGB(121, 121, 255)));
    			}
    		}
    
    //.......
    

    Zur Erklärung:

    ich finde hier im lparam heraus um welchen Handle es sich handelt (ich reagiere sowohl auf editfelder als auch comboboxen.
    Dann setzte ich die Textfarbe die Texthintergrundfarbe und gebe eine Brush als LRESULT konvertiert zurück, der dann den Hintergrund für die Combobox oder editbox angibt. Das HDC ist im wparam.
    Auf diese Nachrichten musst du im WindowProc vom Parent reagieren und du darfst nicht die Nachrichten selber schicken, sondern du kriegst sie automatisch geschickt. Hoffe es hat dir geholfen ;).


Anmelden zum Antworten