Кто выставляет флаг WS_VISIBLE

Тема в разделе "WASM.WIN32", создана пользователем Smile, 14 июл 2008.

  1. Smile

    Smile New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2004
    Сообщения:
    129
    Есть программа на mfc, использует классы CDocument, CFrameWnd, существует возможность открепить от документа дочернее окно и сделать его независимым.

    В документе дочернее окно делается невидимым SetWindowLong(flags &= ~ WS_VISIBLE) и создается новое окно на десктопе.

    Проблема в том что во время работы, по непонятной причине, окно фрейма появляется и у него выставлен флаг WS_VISIBLE, как это происходит пока не разобрался.

    Ставил бряки на SetWindowLong, ShowWindow, SetWindowPos никто не устанавливает флаг видимости.

    Оконная процедура не получает сообoений WM_SHOWWINDOW, приходит только WM_WINDOWPOSITIONCHANGED в структуре WINDOWPOS::flags выставлен SWP_FRAMECHANGED,SWP_NOACTIVE. И это случаеться уже после того как окно стало видимым.

    Вопрос, каким образом можно узнать кто выставил WS_VISIBLE?
     
  2. Smile

    Smile New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2004
    Сообщения:
    129
    message WM_NCCALCSIZE,
    wParam TRUE
    lParam NCCALCSIZE_PARAMS.WINDOWPOS.flags (SWP_SHOWWINDOW)