не получается скрыть окно при WM_INITDIALOG

Тема в разделе "WASM.WIN32", создана пользователем valix7, 23 ноя 2006.

  1. valix7

    valix7 New Member

    Публикаций:
    0
    Регистрация:
    31 окт 2006
    Сообщения:
    143
    собственно сабж... пишу так:
    Код (Text):
    1. case WM_INITDIALOG(или WM_CREATE):
    2. ShowWindow(hWnd, SW_HIDE);
    break;
    но ничего не происходит.. но если к примеру по таймеру сделать то все работает.. как сделать чтоб окно скрывалось при вызове WM_INITDIALOG'a???
     
  2. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    а в обработчике WM_INITDIALOG окна и так не видно

    а вобще нужно TRUE вернуть в обработчике чтоб код правильно отработал
    так точно работает
    Код (Text):
    1. case WM_PAINT:
    2.   if (flag == FALSE)
    3.   {
    4.     ShowWindow(hwnd, SW_HIDE);
    5.     flag = TRUE;
    6.   }
    7.   return TRUE;
     
  3. valix7

    valix7 New Member

    Публикаций:
    0
    Регистрация:
    31 окт 2006
    Сообщения:
    143
    спасибо! работает!
     
  4. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    Asterix

    Строго говоря - это ведь не решение: диалог успеет неприятно моргнуть (в общем случае).

    Чтоб не моргнул - можно так:

    на WM_INITDIALOG -
    Код (Text):
    1. .data
    2.  class db "static",0
    3. .code
    4.  invoke CreateWindowEx,0,offset class,0,0,0,0,0,0,0,0,0,0
    5.  invoke SetParent,hWnd,eax
    6.  mov oldparent,eax
    чтобы потом -
    Код (Text):
    1.  invoke SetParent,hWnd,oldparent
    2. ; invoke DestroyWindow,eax