在項目中有如下的一個需求:
軟體在網絡啟動狀态下顯示主視窗,而在單機狀态下隻顯示其子對話框(我的是無模式的).
在網上找了一天,各種辦法都似乎不太好,
不過晚上終于找到了一個不錯的解決辦法.
使得我很好的解決了這個問題.

if (theApp.m_bUnConnect)
{
CRecordDlg* dlg;
CWnd* m_pCWnd = this;
dlg = new CRecordDlg(m_pCWnd);
dlg->Create(IDD_DLG_RECORD,m_pCWnd);
dlg->ShowWindow(SW_SHOW);
this->SetWindowPos(&wndTop,0,0,0,0,NULL);
} // if ()

else
ShowWindow(SW_MAXIMIZE);
}
以上為我實作代碼.
實作主視窗隐藏的是SetWindowPos(),從代碼很容易了解出來,就是把主視窗的坐标設定為(0,0,0,0),也就是說把主視窗設定為一個點,并且點處于原點處.
其實是一種僞隐藏,可是它還是實作了隐藏,并且實作的效果相當不錯,沒有閃爍,也沒有副作用(至少現在沒有發現有).
不過要注意的是,無模式對話框關閉時候除了要DestroyWindow(),還需要PostQuitMessage(0);将主視窗給關閉掉,否則程式程序實際還在.
嘿嘿,實在是很不錯的解決方案,簡單有效.