Не могу понять, почему при наведении на кнопку не срабатывает событии, а на родительском окне срабатывает.
#include <Windows.h>
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
HWND g_hwnd = nullptr;
HWND g_button = nullptr;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
// Создание окна
WNDCLASSEX wc = { 0 };
wc.cbSize = sizeof(WNDCLASSEX);
wc.lpfnWndProc = WindowProc;
wc.hInstance = hInstance;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.lpszClassName = L"MyWindowClass";
RegisterClassEx(&wc);
g_hwnd = CreateWindowEx(
0,
L"MyWindowClass",
L"Пример",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
300, 200,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(g_hwnd, nCmdShow);
UpdateWindow(g_hwnd);
// Создание дочерней кнопки
g_button = CreateWindowEx(
0,
L"BUTTON",
L"Кнопка",
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
0, 0, 100, 30,
g_hwnd,
nullptr,
nullptr,
nullptr);
// Цикл обработки сообщений
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_MOUSEMOVE:
{
MessageBox(NULL, L"Наведение на кнопку", L"Сообщение", MB_OK);
break;
}
case WM_DESTROY:
{
PostQuitMessage(0);
break;
}
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return 0;
}
Как заставить что бы при наведении курсора на кнопку, выводилось сообщение с MessageBox?