Скрытие диалогового окна
Посмотрите WM_CREATE.
Могу предложить отлавливать сообщение WS_Visible,чтобы узнать,когда оно появляется
Завтра посмотрю. Спасибо.
Причина такого решения: уже есть большая программа на асме в которой очень многое завязанно на сообщения этому самому окну. Я хочу сворачивать его в трей при старте (значок в трее кстати тоже обрабатывается этим окном). В этом окне очень много элементов управления, поэтому создавать их вручную - не самое приятное занятие. К тому же хотелось бы, чтобы диалоговое окно можно было изменить (ну хотя бы перевести на другой язык. при этом может потребоваться подредактировать размеры элементов) без перекомпиляции программы.
[QUOTE=MSDN]
The DialogBoxParam function uses the CreateWindowEx function to create the dialog box. DialogBoxParam then sends a WM_INITDIALOG message (and a WM_SETFONT message if the template specifies the DS_SETFONT or DS_SHELLFONT style) to the dialog box procedure. The function displays the dialog box (regardless of whether the template specifies the WS_VISIBLE style), disables the owner window, and starts its own message loop to retrieve and dispatch messages for the dialog box.
[/QUOTE]
Есть диалоги модальные, а есть немодальные. Немодальный диалог имеет совсем другое поведение, он не делает родительское окно недоступным, он может быть постоянным спутником родительского окна.
Более того, главное окно можно сделать из немодального диалога :)
Более того, главное окно можно сделать из немодального диалога
Тык ни с чем из этого я и не спорю. :) Но все же, все же, msdn как бэ намекает нам...
A dialog box is a temporary window an application creates to retrieve user input. An application typically uses dialog boxes to prompt the user for additional information for menu items. A dialog box usually contains one or more controls (child windows) with which the user enters text, chooses options, or directs the action.
MSDN читать:
http://msdn.microsoft.com/en-us/library/ms645434(VS.85).aspx
Предполагаю, что придется использовать CreateDialogParam.
@@:
invoke MessageBox,message,0,0,0
test eax, eax
jz @f
invoke TranslateMessage,message
invoke DispatchMessage,message
jmp @b
@@:
Ничего не происходит. Даже значок в трее не создаётся.
...
Ничего не происходит. Даже значок в трее не создаётся.
Так я и не понял - получилось или не получилось.
Если не получилось, то надо учитывать, что функции обратного вызова у модального и немодального диалогов разные.