我有一個C++項目,我在其中使用Winapi開發一個帶有按鈕的窗口,並且我想在它被徘徊時更改按鈕的文本。例如,在徘徊時將「點擊我」更改爲「立即點擊我!」。我試過搜索,但我還沒有找到任何好的方法來做到這一點。Winapi檢測按鈕懸停
我注意到,當用戶懸停時,收到WM_NOTIFY
消息,但我不知道如何確保它已被鼠標懸停調用。我發現我可以使用TrackMouseEvent
來檢測懸停,但它僅限於一段時間,我希望在用戶每次懸停按鈕時執行一次操作。
這是我如何創建一個按鈕:
HWND Button = CreateWindow("BUTTON", "Click me",
WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON | BS_NOTIFY,
20, 240, 120, 20,
hwnd, (HMENU)101, NULL, NULL);
這我的窗口過程:
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_NOTIFY:
{
//??? Here is where I get a message everytime I hover the button, But I don't know any proper way to see if it has been executed by the button.
}
case WM_CREATE: //On Window Create
{
//...
}
case WM_COMMAND: //Command execution
{
//...
break;
}
case WM_DESTROY: //Form Destroyed
{
PostQuitMessage(0);
break;
}
}
return DefWindowProc(hwnd, msg, wParam, lParam);
}
謝謝你的回答,但你知道我該如何實現NMBCHOTITEM?據我所知,我需要包含commctrl.h,但它給了windows.h許多isues – MrDick