Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как в MFC выяснить - окно закрыто или открыто ? / 11 сообщений из 11, страница 1 из 1
08.07.2004, 17:01
    #32596019
Yossarian
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в MFC выяснить - окно закрыто или открыто ?
Такая вот проблема.

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

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

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

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

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

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

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

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

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


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


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

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

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


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