Приложение win32 DialogBox: как сделать диалоговое окно скрытым при запуске? - PullRequest
3 голосов
/ 27 октября 2010

У меня есть приложение win32, которое использует DialogBox () для отображения своего главного окна.

Теперь я хочу запустить это приложение с невидимым диалоговым окном, а затем установить его видимым с помощью SetWindowPos (hDlg, HWND_TOPMOST, ...

К сожалению

http://msdn.microsoft.com/en-us/library/ms645452(VS.85).aspx

Функция отображает диалоговое окно (независимо от того, указывает ли шаблон стиль WS_VISIBLE)

... кажется, что это невозможно сделать с помощью DialogBox ().

Я мог бы добавить звонок SetWindowPos (hDlg, HWND_NOTOPMOST ...

в моей процедуре диалога в обработчике WM_INITDIALOG.

... но я обеспокоен тем, что при интенсивной загрузке системы диалоговое окно ненадолго появится, а затем исчезнет, ​​создав эффект уродливого мерцания.

Есть ли способ создать мое диалоговое окно через DialogBox (), не показывая его?

Ответы [ 2 ]

2 голосов
/ 20 сентября 2015
ShowWindow(Hwnd, SW_HIDE);

Я думаю, что это сработает.

http://www.winprog.org/tutorial/modeless_dialogs.html

0 голосов
/ 09 февраля 2017

У меня был некоторый успех с этой техникой

void CMyDlg::OnWindowPosChanging(WINDOWPOS* lpWndPos)
{
    // hide dialog
    lpWndPos->flags &= ~SWP_SHOWWINDOW;
    CDialog::OnWindowPosChanging(lpWndPos);
}

от здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...