|
|
|
Как в MFC выяснить - окно закрыто или открыто ?
|
|||
|---|---|---|---|
|
#18+
Такая вот проблема. Окно - наследник от CDialog, но болтается само по себе, поверх всех окон. Может после создания получать ShowWindow(SW_SHOW), может SW_HIDE. Может быть закрыто прнудительно через EndDialog, а может - по нажатию Default кнопки на форме. Надо выяснить, в данный момент времени окно открыто или закрыто. IsWindowVisible возвращает TRUE даже если окно спрятано. GetWindowPlacement возвращает правильное значение если пользовались ShowWindow, но не понимает если окно закрыли кнопкой на форме. Как это сделать просто ? Washington Irving ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2004, 17:01 |
|
||
|
Как в MFC выяснить - окно закрыто или открыто ?
|
|||
|---|---|---|---|
|
#18+
А операционка случаем не ХР?.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2004, 07:57 |
|
||
|
Как в MFC выяснить - окно закрыто или открыто ?
|
|||
|---|---|---|---|
|
#18+
Нет. 2000 Washington Irving ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2004, 09:39 |
|
||
|
Как в MFC выяснить - окно закрыто или открыто ?
|
|||
|---|---|---|---|
|
#18+
Блин, у нас таже проблема под ХР под луной. Так... Для начала попробуй это: Вместо ShowWindow(SW_) используй ::ShowWindow(m_hWnd,SW_); Дело в том, что MFC в своём SetStyle делает проверку на текущий стиль, и если он не менялся, то оно ничё и не делает. Это, возможно, будет правильно прописывать флаг. Если это не поможет, (а это скорее всего не поможет) дебагером отследи место где меняется флаг видимости окна, начиная с того места, где ты делаешь SW_HIDE и до IsWindowVisible. Потом обложи его сохранением/восстановлением текущего флага видимости, и будет тебе счастье. Если это у тебя не получилось, в классе своего диалога заведи переменную, которая будет отвечать за видимость, потом забабахай обработку WM_SHOWWINDOW и прописывай эту переменную через wParam, и будет тебе счастье. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2004, 10:11 |
|
||
|
Как в MFC выяснить - окно закрыто или открыто ?
|
|||
|---|---|---|---|
|
#18+
А ещё, к последнему варианту, если IsWidowVisible - виртуальная, то вообще зашибись, переписываешь эту функцию, и всё у тебя работает, ничё в общем коде программы менять не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2004, 10:16 |
|
||
|
Как в MFC выяснить - окно закрыто или открыто ?
|
|||
|---|---|---|---|
|
#18+
Понял. Короче - все руками делать. Washington Irving ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2004, 10:19 |
|
||
|
Как в MFC выяснить - окно закрыто или открыто ?
|
|||
|---|---|---|---|
|
#18+
Кстати, ShowWindow возвращает информацию, было ли окно "show". Может залочить окно, вызвать showwindow, посмотреть и вернуть обратно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2004, 11:54 |
|
||
|
Как в MFC выяснить - окно закрыто или открыто ?
|
|||
|---|---|---|---|
|
#18+
IMHO оно возвращает то же самое, что и GetWindowPlacement Washington Irving ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2004, 12:08 |
|
||
|
Как в MFC выяснить - окно закрыто или открыто ?
|
|||
|---|---|---|---|
|
#18+
авторКороче - все руками делать. Да не, вот последний вариант как раз не руками. Там тока переменную одну завести, один обработчик и одну функцию переписать(если можно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2004, 12:14 |
|
||
|
Как в MFC выяснить - окно закрыто или открыто ?
|
|||
|---|---|---|---|
|
#18+
>Если это у тебя не получилось, в классе своего диалога заведи переменную, которая будет отвечать за видимость, потом забабахай обработку WM_SHOWWINDOW и прописывай эту переменную через wParam, и будет тебе счастье. А вот и фиг. При закрытии диалога по EndDialog() WM_SHOWWINDOW не ловится. Или не посылается. Washington Irving ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2004, 13:17 |
|
||
|
|

start [/forum/topic.php?fid=57&gotonew=1&tid=2034668]: |
0ms |
get settings: |
11ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
77ms |
get topic data: |
9ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 226ms |
| total: | 419ms |

| 0 / 0 |
