Insinyur Saya Telah Membuat 3 Tombol Dengan Gaya BS_OWNERDRAW Sekarang Bagaimana Cara Menggosok

Fungsi WndProc(Hwnd,message,wparam,lparam) KASUS WM_CTLCOLORBTN Jika wparam=Button1 Kemudian WndProc=hBrushbtn1Elseif Wparam=Button2 Kemudian WndProc=hBrushbt 2 Berakhir jika Harus Mendapatkan Hwnd Dari Lparam Dari Wparam Dan Bagaimana ?

Saya tidak bisa mendapatkan pegangan Kuas Untuk Setiap tombol

-3
A.Gerailly 18 Maret 2019, 19:59

1 menjawab

Jawaban Terbaik

Menangani pesan WM_DRAWITEM di jendela induk saat pemilik- tombol ditarik ingin mengubah warnanya.

Buat tombol yang digambar pemilik dengan gaya BS_OWNERDRAW:

   hwndButton1 = CreateWindowW(L"BUTTON", NULL,      
       WS_CHILD | WS_VISIBLE | BS_OWNERDRAW,
       10, 10, 100, 100, 
       hWnd, NULL, (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE), NULL);

Dalam prosedur Window dari jendela induk tombol:

case WM_DRAWITEM:
{
    LPDRAWITEMSTRUCT lpDIS = (LPDRAWITEMSTRUCT)lParam;
    if (hwndButton1 == lpDIS->hwndItem)
    {
        SetDCBrushColor(lpDIS->hDC, RGB(255, 0, 0));

        SelectObject(lpDIS->hDC, GetStockObject(DC_BRUSH));

        RoundRect(lpDIS->hDC, lpDIS->rcItem.left, lpDIS->rcItem.top,
            lpDIS->rcItem.right, lpDIS->rcItem.bottom, 5, 5);

        return TRUE;
    }
}
    break;
0
Rita Han 22 Maret 2019, 08:37