对话框的隐藏

    技术2022-05-20  35

    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);


    最新回复(0)