Я хотел бы знать, возможно ли указать WndProc для дочернего окна, созданного CreateWindowEx
.
Я уже создал класс окна, главное окно, оконную процедуру и цикл сообщений. Код работает, и я решил оставить его для ясности моего вопроса.
Пока это мой Window Proc:
LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
// Creation of the Win32 Window
case WM_CREATE:
// Add an Edit Field
CreateWindowEx(
WS_EX_CLIENTEDGE,
"EDIT",
"",
WS_CHILD | WS_VISIBLE,
5, 5, 200, 24,
hwnd,
(HMENU)100,
g_Instance, // Comming from WinMain
NULL
);
return DefWindowProc(hwnd, uMsg, lParam, wParam);
case WM_KEYDOWN:
// Track key presses on the edit field
std::cout << "The key with the code " << wParam << " was pressed." << std::endl;
return 0;
case WM_PAINT:
// Some painting code...
return DefWindowProc(hwnd, uMsg, lParam, wParam);
default:
return DefWindowProc(hwnd, uMsg, lParam, wParam);
}
}
Я ожидал, что нажатие клавиши в дочернем поле редактирования, которое я создал, вызовет сообщение WM_KEYDOWN, но этого не произошло! Ключи просто добавляются в поле редактирования в моем окне, но не вызывают сообщения WM_KEYDOWN.
Кажется, что созданное окно редактирования не использует мой WndProc. Как я могу это изменить?