ダイアログのプログラムを作っているのですが、OnInitDialog()に
ShowWindow(SW_HIDE)を書き込んでもダイアログが表示されてしまいます。
プログラム起動の時にダイアログを表示しないようにするにはどうしたら
良いのでしょうか?
なにか良い方法があったら教えて下さい。よろしくお願いします。
MFCのソースを見ると
CDialog::DoModal()のなかで
DWORD dwFlags = MLF_SHOWONIDLEとやっており
CWnd::RunModalLoop(dwFlags)が呼ばれるのですが
BOOL bShowIdle = (dwFlags & MLF_SHOWONIDLE) && !(GetStyle() & WS_VISIBLE);
とありますから,ShowWindow(SW_HIDE)するとbShowIdleは!= FALSEになります
下記の通り,ShowWindow(SW_SHOWNORMAL)されるのでDoModal()を使って,非表示にはできません
if (bShowIdle)
{
ShowWindow(SW_SHOWNORMAL);
UpdateWindow();
bShowIdle = FALSE;
}
実は,MFC AppWizard(exe)でダイアログを作成するとリソースで可視がオンになってますが
後から作ったダイアログは可視がオフになってます
SDI/MDIのAboutダイアログも同様に可視がオフになってます
ダミーのウィンドウでモードレスダイアログを作成するとか
MFCを使わずにSDKだけで作成するとかなら大丈夫だと思います
モーダルに関しては,上記の通りなので無理だと思います.