-3
我試圖弄清楚如何每秒更改一個按鈕的背景色。從一種顏色轉到另一種顏色。 這是我如何創建我的按鈕。或者如果可能的話,你怎麼能改變onPaint以外的HWND實例的顏色?改變窗口背景顏色在計時器
hButton = CreateWindowEx(WS_EX_TRANSPARENT, "Button","B",
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
20, 30, 20, 20, hwnd, (HMENU)ID_BUTTON,
hInst, NULL);
這裏是WndProc中變化的顏色情況。
case WM_ERASEBKGND:
RECT rc;
GetClientRect(hButton, &rc);
SetBkColor((HDC)wParam, 0x000000ff); // red
ExtTextOut((HDC)wParam, 0, 0, ETO_OPAQUE, &rc, 0, 0, 0);
return 1;
這是我如何設置我的計時器。
if (!SetTimer(hwnd, TIMER1, 20, NULL))
{
MessageBox(hwnd, "No Timers Available", "Info", MB_OK);
return FALSE;
}
該按鈕似乎變色,但它是快速。我不知道如何解決這個問題。
難道你不想讓WM_TIMER關閉WM_ERASEBKGND嗎? [使用計時器](https://msdn.microsoft.com/en-us/library/windows/desktop/ms644901(v = vs.85).aspx) –
您當前正在將超時值設置爲20毫秒你的計時器,所以我應該認爲顏色的變化*會很快!你有沒有試圖延長這一點?正如約翰尼暗示的那樣,您不會向我們展示您的WM_TIMER消息處理程序的代碼,但我認爲該部分是正確的。 –
除了@CodyGray的評論,我們還假設你在你的消息映射中有一個'ON_WM_TIMER()'條目。 – sergiol