windows - hvordan man indstiller Button BackColor?

Indlæg af Hanne Mølgaard Plasc

Problem



Hvordan ændrer jeg baggrundsfarven på en knapkontrol, der er oprettet ved hjælp af CreateWindow? [3]

Bedste reference


Windows API tilbyder ikke mange muligheder for at tilpasse udseendet af standardkontroller længere.



  • WM\_CTLCOLORBTN kan håndteres ved hjælp af en parentes vindue for at styre nogle aspekter af et knapperudseende, men uxteme knapper bruger kun baggrundsborsten til at male området bag knappen. Udseendet af ansigtet bestemmes af det aktuelle tema. [4]

  • WM\_DRAWITEM kan også håndteres af modersvinduet ved at indstille BS\_OWNERDRAW stilen på knappen. Dette gør det muligt for modersvinduet at erstatte de normale knapper for malerielogik helt. [5]


Andre referencer 1


For at styre farven på kontrollerne i din dialogboks skal du tilføje en handler til WM\_CTLCOLOR-beskeden i din dialogklasse.

Du skal derefter tilføje nogle linjer sådan:


HBRUSH CYourDialogClass::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    if (pWnd->GetDlgCtrlID() == IDC\_OF\_YOUR\_BUTTON)
    {
        pDC->SetBkColor (RGB(0, 0, 255)); // BLUE color for background
        pDC->SetTextColor (RGB(255, 0, 0)); // RED color for text
    }

    return hbr;
}