第一步,聲明一個響應函數(shù)afx_msg void On
第二步,注冊消息WM_NCPAINT(),也就是在BEGIN_MESSAGE_MAP(Dlg,CDialog)和END_MESSAGE_MAP()之間添加ON_WM_NCPAINT()。
第三步,On
void CMyDialog::On
{
static int i = 2;
if(i > 0)
{
i --;
ShowWindow(SW_HIDE);
}
else
CDialog::On
}
On
變量可以判斷是否是首次顯示窗口。之所以定義為2,是因為當程序開始運行時,系統(tǒng)發(fā)送(SendMessage)ON_WM_NCPAINT消息,此時程序的窗口邊框應該被顯示,但是此時我們沒有作任何顯示的操作,而是將窗口隱藏,ShowWindow(SW_HIDE)將把窗口的WS_VISIBLE屬性去掉,繼續(xù)執(zhí)行,程序?qū)z查WS_VISIBLE屬性,如果沒有則顯示窗口,所以又發(fā)送了一個ON_WM_NCPAINT消息。所以我們要處理兩次ON_WM_NCPAINT消息。其次,也可以定義static int i = 1;如果將i定義為1,則必須把窗口的Visible屬性去掉,也就是在窗口上右鍵點擊屬性,選擇More Styles,將Visible前面的勾去掉。
有了以上三步就可以實現(xiàn)對話框隱藏,但在程序啟動的時候,系統(tǒng)狀態(tài)欄里會有程序的圖標閃一下,這就需要再做一些工作:
第一,在On
第二,在需要對話框顯示的程序中添加ModifyStyleEx(WS_EX_TOOLWINDOW, WS_EX_APPWINDOW);使對話框顯示在系統(tǒng)任務欄中。