Я пытаюсь прикрепить обработчик события обратного вызова к элементу управления Windows. Мой код ниже:
URLInput.c
#include <windows.h>
#define ID_EDITCHILD 100
LRESULT CALLBACK URLInputWndProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
switch (uMsg) // Breakpoint set here never fires
{
...
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
}
HWND URLInput(HWND hwnd)
{
HINSTANCE hInstance = GetModuleHandle(NULL);
WNDCLASSW wc = { 0 };
wc.lpszClassName = L"Edit Control";
wc.lpfnWndProc = URLInputWndProc;
wc.hInstance = hInstance;
RegisterClassW(&wc);
hwnd = CreateWindowExW(
0,
L"EDIT",
NULL,
WS_CHILD | WS_VISIBLE | ES_LEFT | ES_AUTOVSCROLL,
0,
0,
100,
100,
hwnd,
(HMENU) ID_EDITCHILD,
(HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE),
NULL
);
if (hwnd == NULL) {
return 0;
}
return hwnd;
}
В main.c Я звоню так:
INT WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nShowCmd)
{
...
URLInputHwnd = URLInput(hwnd);
...
Хорошо. Но если я установлю точку останова в строке 11 switch(uMsg)
, она никогда не сломается. Я ожидаю, что он сломается, когда окно будет создано, например. Или при вводе текста на вход. Но этого не происходит.
Я проверил документацию MSDN, хотя не могу найти ничего по использованию WNDCLASS
с элементами управления.
Есть идеи, где я иду не так?