Показать сообщение отдельно
Старый 25.01.2005, 22:12     # 2
Scary Zet
Junior Member
 
Аватар для Scary Zet
 
Регистрация: 08.07.2004
Адрес: Воронеж
Сообщения: 115

Scary Zet Нимб уже пробиваетсяScary Zet Нимб уже пробивается
Lightbulb

Дело в том, что независимо от того, что ты делаешь в WM_INITDIALOG, ОС после завершения обработчика этого сообщения всё равно сделает ShowWindow(hdlg, SW_SHOW);

Тебе надо отвечать на сообщение WM_WINDOWPOSCHANGING, в обработчике сообщений. lParam хранит указатель на структуру WINDOWPOS, в которой есть поле flags. Изменяя flags, можно влиять на то, как окно будет отображено.

Схема такая. Заведи некоторого рода глобальную переменную (например, bool visible = false), которая будет хранить булевское значение, видно ли окно или нет. Изначально окно не видно.

В ответе на сообщение WM_WINDOWPOSCHANGING пишешь:
WINDOWPOS *wp = (WINDOWPOS *)lParam;
if(!visible)
wp->flags &= ~SWP_SHOWWINDOW;

Если надо отобразить окно, в неком месте проги всталяешь следующее:
visible = true;
ShowWindow(hdlg, SW_SHOW);

Думаю, смысл вышенаписанного примерно понятен.

С уважением.
__________________

Каждая мечта тебе дается вместе с силами, необходимыми для ее осуществления. Однако тебе, возможно, придется ради этого потрудиться.

Ричард Бах

Последний раз редактировалось ZETTOX; 25.01.2005 в 22:15.
Scary Zet вне форума