Что не так с этой функцией CreateWindowEx? - PullRequest
0 голосов
/ 14 сентября 2011

Хорошо, сначала небольшой обзор того, что я пытаюсь сделать.
Я пытаюсь создать 3 дочерних окна в главном родительском окне и использовать EnumChildWindow и EnumChildProc для их перечисления. Я хочу создать 3 дочерних окна такой же высоты, как у родительского, но 1/3 ширины, и выровнять их по одному за другим ..

Итак, я захватил сообщение WM_CREATE, чтобы создать эти дочерние окна, и WM_SIZE, чтобы переместить и выровнять их, используя MoveWindow, все в порядке, за исключением того факта, что дочерние окна не создаются. Когда я отладил его, я обнаружил, что (в окне Autos в Visual Studio 2008 во время отладки) мой оператор CreateWindowEx не выполняется (в окне auto указано « Выражение не может быть оценено

Вот утверждение:

CreateWindowEx(0, (LPCWSTR)("childClass"), (LPCWSTR)NULL, WS_CHILD | WS_BORDER, 0, 0, 0, 0, hWnd, (HMENU) (int) (ID_FIRSTCHILD + 1), hInst, NULL);

конечно, я использовал его в цикле for для создания 3 окон, но это другое дело ...
Итак, кто-нибудь может помочь / направить / посоветовать мне, что здесь происходит? Или что я делаю не так?

ps: я читаю эту книгу, откуда я взял этот код и все такое, поэтому, пожалуйста, не просите меня принять другой подход или что-то еще, скажем, поместите код создания Child где-нибудь еще или около того ... потому что я не создание любой программы, но только по примеру книги ...:)

1 Ответ

1 голос
/ 14 сентября 2011

Мои экстрасенсорные способности предполагают, что вам нужно передать стиль WS_VISIBLE в вызов CreateWindow выше для ваших дочерних окон - чтобы вы могли их показывать. :)

Мой опыт разработки подсказывает следующее:

Что такое возвращаемое значение CreateWindowEx? Вы присвоили возвращаемое значение переменной. И если да, вы установили точку останова на этой строке в отладчике? И если возвращаемое значение из CreateWindow равно NULL, то что такое GetLastError (который вы можете оценить в отладчике как "@err").

После того, как всплыло главное окно (с невидимыми дочерними элементами), вы запустили Spy ++, чтобы проверить, существуют ли дочерние окна? Каково их состояние?

В противном случае, вы проверяли, что вызывается обратный вызов WM_CREATE WndProc вашего дочернего оконного класса?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...