Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Savant

Старожил


Сообщения: 300
Благодарности: 6

Профиль | Сайт | Отправить PM | Цитировать


Уважаемый mrcnn, я знаю, что "с нулём" (т.е. когда функция принимает все сообщения из потока) все отлично работает, гораздо более интересно, почему не работает с конкретным значением hWnd (т.е. когда функция принимает сообщения от данного окна).

Уважаемый hasherfrog, вот нарезка кода:
Код: Выделить весь код
var
  Msg: TMsg; // аналог MSG в Си
  handleWnd, Label1 : THandle; // аналог HWND в Си
  .........
  handleWnd:=CreateWindow(myClassName,'See a label below?',WS_OVERLAPPEDWINDOW,0,0,200,100,hWndParent,0,hInstance,nil);
  if handleWnd = 0 then
    if MessageBox(0,'Failed to create Window'#13'Close Application?',nil,MB_TASKMODAL or MB_ICONWARNING or MB_OKCANCEL)=ID_OK then
      Exit;
  Label1:=CreateWindow('STATIC','See me?',WS_VISIBLE or WS_CHILD or WM_SETTEXT,10,10,60,23,handleWnd,0,hInstance,nil);
  if Label1 = 0 then
    if MessageBox(0,'Failed to create Label'#13'Close Application?',nil,MB_TASKMODAL or MB_ICONWARNING or MB_OKCANCEL)=ID_OK then
      Exit;
  .........
  ShowWindow(handleWnd, SW_SHOW);
  UpdateWindow(handleWnd);
  while GetMessage(Msg, handleWnd, 0, 0) do begin // если вместо handleWnd поставить 0, то все отлично
    TranslateMessage(Msg);
    DispatchMessage(Msg);
  end;
  .........
Проблема в том, что программа не выходит из цикла while.

Отправлено: 18:00, 17-01-2005 | #9