0
我想在運行時更改按鈕的背景顏色。在Win32中更改子類按鈕的背景顏色
問題是,按鈕沒有黑色的背景,這是我的代碼應該產生的。 相反,它看起來有一個下拉控件的箭頭。
我究竟在做什麼錯在這裏?
首先,我子類的按鈕:
// HWND hParent is the parent window
// HINSTANCE hInstance is the current module
HWND h = CreateWindow("Button", NULL, WS_CHILD | WS_VISIBLE | SS_OWNERDRAW,
340, 10, 20, 20,
hParent, NULL, hInstance, NULL);
SetWindowSubclass(h, &MyWndProc, MyButtonId, NULL);
的ID被定義爲:
enum
{
MyButtonId = 100,
};
而子類過程:
LRESULT CALLBACK MyWndProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData)
{
if(uIdSubclass == MyButtonId)
{
switch(msg)
{
case WM_ERASEBKGND:
{
HDC dc = (HDC)wParam;
SetBkColor(dc, RGB(127,127,127));
return 0;
}
}
}
return DefSubclassProc(hWnd, msg, wParam, lParam);
}
感謝您的幫助。但我沒有父窗口的消息循環。所以我需要按照我所知的方式繼承按鈕。 –