ダイアログを最初から非表示にするには? – プログラミング – Home

ダイアログを最初から非表示にするには?
 
通知
すべてクリア

ダイアログを最初から非表示にするには?


ほり丸
 ほり丸
(@ほり丸)
ゲスト
結合: 24年前
投稿: 1
Topic starter  

ダイアログのプログラムを作っているのですが、OnInitDialog()に
ShowWindow(SW_HIDE)を書き込んでもダイアログが表示されてしまいます。
プログラム起動の時にダイアログを表示しないようにするにはどうしたら
良いのでしょうか?
なにか良い方法があったら教えて下さい。よろしくお願いします。


引用解決済
トピックタグ
ku
 ku
(@ku)
ゲスト
結合: 25年前
投稿: 312
 

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だけで作成するとかなら大丈夫だと思います
モーダルに関しては,上記の通りなので無理だと思います.


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました