Button-Farbe ändern
-
Hallo!
Wüsste gerne, ob und wenn ja, wie ich die Farbe eines Buttons in MFC ändern
kann...
Ich kenne nur die Möglichkeit, die Hintergrundfarbe des Dialogs zu ändern.
Gruss & Merci
-
Den hintergrund kannst über die WM_CTLCOLORBTN bemhalen, wenn du mehr willst als nur den hintergrund, fange die WM_DRAWITEM ab und las deiner künstlerischen Ader freien lauf

-
Ich bin im Klassenassistenten auf meinen Button und hab ihm WM_DRAWITEM hinzugefügt.
Das schaut bei mir so aus:void Cclass_2_login::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemstruct) { //TODO CDialog::OnDrawItem(nIDCtl, lpDrawItemStruct); }War das richtig? (Anmerkung: Ich hab leider keine Ahnung...)
Was muss ich weiter tun?
thanks chaos.sb
-
Wie wars mit MSDN aufschlagen

Ist fast immer auch ein nettes Beispiel dabei wie z.B:BOOL CALLBACK OwnDrawProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdcMem; LPDRAWITEMSTRUCT lpdis; switch (message) { case WM_INITDIALOG: // hinst, hbm1 and hbm2 are defined globally. hbm1 = LoadBitmap((HANDLE) hinst, "OwnBit1"); hbm2 = LoadBitmap((HANDLE) hinst, "OwnBit2"); return TRUE; case WM_DRAWITEM: lpdis = (LPDRAWITEMSTRUCT) lParam; hdcMem = CreateCompatibleDC(lpdis->hDC); if (lpdis->itemState & ODS_SELECTED) // if selected SelectObject(hdcMem, hbm2); else SelectObject(hdcMem, hbm1); // Destination StretchBlt( lpdis->hDC, // destination DC lpdis->rcItem.left, // x upper left lpdis->rcItem.top, // y upper left // The next two lines specify the width and // height. lpdis->rcItem.right - lpdis->rcItem.left, lpdis->rcItem.bottom - lpdis->rcItem.top, hdcMem, // source device context 0, 0, // x and y upper left 32, // source bitmap width 32, // source bitmap height SRCCOPY); // raster operation DeleteDC(hdcMem); return TRUE; case WM_COMMAND: if (wParam == IDOK || wParam == IDCANCEL) { EndDialog(hDlg, TRUE); return TRUE; } if (HIWORD(wParam) == BN_CLICKED) { switch (LOWORD(wParam)) { case IDC_OWNERDRAW: // application-defined processing break; } } break; case WM_DESTROY: DeleteObject(hbm1); // delete bitmaps DeleteObject(hbm2); break; } return FALSE; UNREFERENCED_PARAMETER(lParam); }^^ Das verbaust du dann natlich MFC gerecht
