![]() |
Delphi | создание окна и его элементов средствами WinAPI
Подскажите, в чем трабл...
Код:
........ |
А Вы не забыли SS_LEFT какой-нибудь? Вместо WM_SETTEXT? А то WM_SETTEXT - это "сообщение", а не "стиль"
|
hasherfrog
Thanks, это у меня заскок малец :) А проблема была в другом (Винда и с WM_SETTEXT все правильно создает): вместо Label1:=CreateWindow('Label','See me?',....) надо было Label1:=CreateWindow('STATIC','See me?',....) Это второй заскок :) |
Кстати, вот еще интересная ситуация. Во многих примерах я видел следующее:
Код:
while GetMessage( lpMsg, hWnd, 0, 0 ) do begin |
Честно, я пока чего-то не догоняю, в чём проблема (не проснулся ещё :)), но можете почитать тут описание по-русски
http://www.mini-soft.net.ru/msdn/glob_1.php потом Crtl+F GetMessage |
hasherfrog
Да не, проблемы-то нет :). Я просто указываю на то, что почти везде GetMessage() дается примерно в таком контексте Код:
while GetMessage( lpMsg, hWnd, 0, 0 ) {...} Цитата:
ps: 1. Я и английский знаю :) 2. Не спал еще :) , отсюда и ляпы разные |
Дык а откуда взялся hWnd? Его кто инициализировал? И как? Дайте кусок текста.
|
Petzold дает эту конструкцию во всех примерах в таком виде:
Код:
while (GetMessage (&msg, NULL, 0, 0)) |
Уважаемый mrcnn, я знаю, что "с нулём" (т.е. когда функция принимает все сообщения из потока) все отлично работает, гораздо более интересно, почему не работает с конкретным значением hWnd (т.е. когда функция принимает сообщения от данного окна).
Уважаемый hasherfrog, вот нарезка кода: Код:
var |
Savant
Цитата:
|
frizzn
О'кей, тогда переделаем нижнюю часть в такую конструкцию: Код:
........... |
:lol:
http://ilyabirman.ru/meanwhile/2004/01/20/2/comments Вообще-то, емнип, обычно hWnd используют в связке с if (PeekMessage(&msg, hWnd, ... потому что hWnd - своего рода фильтр :) |
hasherfrog
Цитата:
Цитата:
Код:
while (GetMessage( lpMsg, hWnd, 0, 0)) ... |
Нет, лол вызвало "Прям точно что и у меня." :)
|
Очень интересная тема, жаль что не поймал её сразу. Работает это так:
PostQuitMessage посылает сообщение PostMessage(0, 0, 0, exit_code), это значит, что до окна hwnd!=0 оно не дойдёт. После уничтожения окна, GetMessage(..., hwnd, ...) просто не вернётся, т.к. для окна hwnd сообщения никто не пошлёт. Советую не использовать такую конструкцию в главном цикле. |
Время: 21:32. |
Время: 21:32.
© OSzone.net 2001-