I asked a question, и некоторые люди прокомментировали, что мой вопрос не ясен, Итак, вот новый.CreateWindow() [Win32 API]: только родительское окно получает
Я пытаюсь создать приложение с несколькими окнами, используя API WIN32. Я создал два окна, один из которых является потомком родителя. Тогда у меня есть цикл сообщений, Но, к сожалению, только родительский WndProc получает сообщение, а ребенок - нет. - что - это wndProc, который вызывается только один раз, а не дважды. (это ожидаемое поведение?)
Я также попытался создать еще одну функцию WndProcChild для дочернего окна и зарегистрировать свой собственный класс, но все же безрезультатно.
Ниже приведен код экстракт (только декларация дочернего окна, и цикл обработки сообщений)
Я новичок Win32, так нежна ... Спасибо, Дэн
wcEdit.lpfnWndProc = WndProcChild;
wcEdit.style = CS_HREDRAW | CS_VREDRAW;
wcEdit.cbClsExtra = 0;
wcEdit.cbWndExtra = 0;
wcEdit.hInstance = hInstance;;
wcEdit.hCursor = 0;
wcEdit.lpszMenuName = 0;
wcEdit.lpszClassName = L"child";
RegisterClass(&wcEdit);
edit_hwnd = CreateWindow(L"child", L"child_title", NULL,
0, 0, 0, 0, ParentWindow,
NULL, global_instance, NULL);
UpdateWindow(edit_hwnd);
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
Просто, чтобы еще раз объяснить, чего я хочу достичь - я хочу обрабатывать сообщение WM_KEYDOWN дважды - один раз в родительском окне и один раз в дочернем окне. Я действительно не нуждаюсь в них, чтобы быть родительским ребенком, просто подумал, что это спасет меня, создав два разных файла wndProcs.
Просто, чтобы еще раз объяснить, чего я хочу достичь - я хочу обрабатывать сообщение WM_KEYDOWN дважды - один раз в родительском окне и один раз в дочернем окне. Мне на самом деле не нужно, чтобы они были родительским ребенком, просто подумали, что это спасет меня от создания двух разных wndProcs ... – dan
Вместо того, чтобы публиковать новый вопрос, вы должны были просто отредактировать исходный пост. – Aaron