對話框的隱藏

1.在OnInitDialog中添加

    WINDOWPLACEMENT   wp;  

    wp.length=sizeof(WINDOWPLACEMENT);

    wp.flags=WPF_RESTORETOMAXIMIZED;  

    wp.showCmd=SW_HIDE;  

    SetWindowPlacement(&wp);

   

    ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW);

2.重寫OnWindowPosChanging函數

void CXXXDlg::OnWindowPosChanging(WINDOWPOS* lpwndpos)

{

    if (lpwndpos->flags & SWP_SHOWWINDOW)  

    {  

       lpwndpos->flags &= ~SWP_SHOWWINDOW;  

       PostMessage(WM_WINDOWPOSCHANGING, 0, (LPARAM)lpwndpos);  

       ShowWindow(SW_HIDE);  

    }  

    else

       CDialog::OnWindowPosChanging(lpwndpos);

}

3.重寫DefWindowProc函數

LRESULT CXXXDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)

{

    if(message==133   )    

       ShowWindow(SW_HIDE);  

    return CDialog::DefWindowProc(message, wParam, lParam);

}

4.重寫OnShowWindow函數

void CXXXDlg::OnShowWindow(BOOL bShow, UINT nStatus)

{

    if( GetStyle() & WS_VISIBLE )

    {

       CDialog::OnShowWindow(bShow, nStatus);

    }

    else

    {

       long Style = ::GetWindowLong(*this, GWL_STYLE);

       ::SetWindowLong(*this, GWL_STYLE, Style | WS_VISIBLE);

       CDialog::OnShowWindow(SW_HIDE, nStatus);

    }

}

另外,隱藏任務欄圖標,可修改窗口的擴展樣式

隱藏任務欄圖標:ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW);

顯示任務欄圖標:ModifyStyleEx(WS_EX_TOOLWINDOW, WS_EX_APPWINDOW);

發佈了36 篇原創文章 · 獲贊 6 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章