基於Dialog程式,啟動時不顯示主視窗,只顯示子視窗的實現
阿新 • • 發佈:2018-12-27
在專案中有如下的一個需求:
軟體在網路啟動狀態下顯示主視窗,而在單機狀態下只顯示其子對話方塊(我的是無模式的).
在網上找了一天,各種辦法都似乎不太好,
不過晚上終於找到了一個不錯的解決辦法.
使得我很好的解決了這個問題.
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);將主視窗給關閉掉,否則程式程序實際還在.
嘿嘿,實在是很不錯的解決方案,簡單有效.
軟體在網路啟動狀態下顯示主視窗,而在單機狀態下只顯示其子對話方塊(我的是無模式的).
在網上找了一天,各種辦法都似乎不太好,
不過晚上終於找到了一個不錯的解決辦法.
使得我很好的解決了這個問題.
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);
}// if ()
else
{
ShowWindow(SW_MAXIMIZE);
}以上為我實現程式碼.
實現主視窗隱藏的是SetWindowPos(),從程式碼很容易理解出來,就是把主視窗的座標設定為(0,0,0,0),也就是說把主視窗設定為一個點,並且點處於原點處.
其實是一種偽隱藏,可是它還是實現了隱藏,並且實現的效果相當不錯,沒有閃爍,也沒有副作用(至少現在沒有發現有).
不過要注意的是,無模式對話方塊關閉時候除了要DestroyWindow(),還需要PostQuitMessage(0);將主視窗給關閉掉,否則程式程序實際還在.
嘿嘿,實在是很不錯的解決方案,簡單有效.
posted on 2006-12-19 22:06 楊粼波 閱讀(2341) 評論(0) 編輯 收藏 引用 所屬分類: 學習筆記 、C++