在項目中有如下的一個需求:
軟件在網絡啟動狀態下顯示主窗口,而在單機狀態下只顯示其子對話框(我的是無模式的).
在網上找了一天,各種辦法都似乎不太好,
不過晚上終于找到了一個不錯的解決辦法.
使得我很好的解決了這個問題.
????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);將主窗口給關閉掉,否則程序進程實際還在.
嘿嘿,實在是很不錯的解決方案,簡單有效.