powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как в MFC выяснить - окно закрыто или открыто ?
11 сообщений из 11, страница 1 из 1
Как в MFC выяснить - окно закрыто или открыто ?
    #32596019
Yossarian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такая вот проблема.

Окно - наследник от CDialog, но болтается само по себе, поверх
всех окон. Может после создания получать ShowWindow(SW_SHOW),
может SW_HIDE. Может быть закрыто прнудительно через EndDialog,
а может - по нажатию Default кнопки на форме.

Надо выяснить, в данный момент времени окно открыто или закрыто.
IsWindowVisible возвращает TRUE даже если окно спрятано.
GetWindowPlacement возвращает правильное значение если пользовались
ShowWindow, но не понимает если окно закрыли кнопкой на форме.

Как это сделать просто ?

Washington Irving
...
Рейтинг: 0 / 0
Как в MFC выяснить - окно закрыто или открыто ?
    #32596578
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А операционка случаем не ХР?....
...
Рейтинг: 0 / 0
Как в MFC выяснить - окно закрыто или открыто ?
    #32596660
Yossarian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет. 2000

Washington Irving
...
Рейтинг: 0 / 0
Как в MFC выяснить - окно закрыто или открыто ?
    #32596707
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, у нас таже проблема под ХР под луной.

Так...
Для начала попробуй это:

Вместо ShowWindow(SW_) используй ::ShowWindow(m_hWnd,SW_);
Дело в том, что MFC в своём SetStyle делает проверку на текущий стиль, и если он не менялся, то оно ничё и не делает.
Это, возможно, будет правильно прописывать флаг.

Если это не поможет, (а это скорее всего не поможет) дебагером отследи место где меняется флаг видимости окна, начиная с того места, где ты делаешь SW_HIDE и до IsWindowVisible. Потом обложи его сохранением/восстановлением текущего флага видимости, и будет тебе счастье.

Если это у тебя не получилось, в классе своего диалога заведи переменную, которая будет отвечать за видимость, потом забабахай обработку WM_SHOWWINDOW и прописывай эту переменную через wParam, и будет тебе счастье.
...
Рейтинг: 0 / 0
Как в MFC выяснить - окно закрыто или открыто ?
    #32596715
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ещё, к последнему варианту, если IsWidowVisible - виртуальная, то вообще зашибись, переписываешь эту функцию, и всё у тебя работает, ничё в общем коде программы менять не нужно.
...
Рейтинг: 0 / 0
Как в MFC выяснить - окно закрыто или открыто ?
    #32596721
Yossarian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понял. Короче - все руками делать.


Washington Irving
...
Рейтинг: 0 / 0
Как в MFC выяснить - окно закрыто или открыто ?
    #32596930
Tracer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, ShowWindow возвращает информацию, было ли окно "show". Может залочить окно, вызвать showwindow, посмотреть и вернуть обратно ?
...
Рейтинг: 0 / 0
Как в MFC выяснить - окно закрыто или открыто ?
    #32596976
Yossarian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMHO оно возвращает то же самое, что и GetWindowPlacement


Washington Irving
...
Рейтинг: 0 / 0
Как в MFC выяснить - окно закрыто или открыто ?
    #32597005
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторКороче - все руками делать.
Да не, вот последний вариант как раз не руками. Там тока переменную одну завести, один обработчик и одну функцию переписать(если можно).
...
Рейтинг: 0 / 0
Как в MFC выяснить - окно закрыто или открыто ?
    #32597184
Yossarian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Если это у тебя не получилось, в классе своего диалога заведи переменную, которая будет отвечать за видимость, потом забабахай обработку WM_SHOWWINDOW и прописывай эту переменную через wParam, и будет тебе счастье.

А вот и фиг. При закрытии диалога по EndDialog()
WM_SHOWWINDOW не ловится. Или не посылается.

Washington Irving
...
Рейтинг: 0 / 0
Как в MFC выяснить - окно закрыто или открыто ?
    #32599116
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А по EndDialog не WM_DESTROY ли посылается?
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как в MFC выяснить - окно закрыто или открыто ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]