这些函数都可以把标题栏删除,但是当窗口最大化时,程序窗口会覆盖显示器下方的任务栏。
1、 ModifyStyle(WS_CAPTION,  0,  SWP_FRAMECHANGED);  2、 ModifyStyle(WS_CAPTION, 0, 1);3、 SetWindowLong(m_hWnd,GWL_STYLE,WS_OVERLAPPEDWINDOW   &~WS_CAPTION);4、 LONG  lStyle  =  ::GetWindowLong(this->m_hWnd,  GWL_STYLE);  
::SetWindowLong(this->m_hWnd,  GWL_STYLE,  lStyle  &  ~WS_CAPTION);  
::SetWindowPos(this->m_hWnd, NULL, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE|SWP_NOZORDER|SWP_NOACTIVATE|SWP_FRAMECHANGED);  请问又什么方式,既可以删除任务栏,又可以在最大化的时候不要覆盖任务栏呢?

解决方案 »

  1.   

    本帖最后由 VisualEleven 于 2012-12-24 14:39:52 编辑
      

  2.   


    // WM_SYSCOMMAND Message
    void CMainFrame::OnSysCommand(UINT nID, LPARAM lParam)
    {
    if(nID == SC_MAXIMIZE)
    {
    HWND hWnd = ::FindWindow(_T("Shell_TrayWnd"), NULL);
    if(NULL != hWnd)
    {
    CRect rc;
    ::GetWindowRect(hWnd, &rc);
    int cx = GetSystemMetrics(SM_CXSCREEN);
    int cy = GetSystemMetrics(SM_CYSCREEN) - rc.Height();
    rc.top = rc.left = 0;
    rc.right = cx;
    rc.bottom = cy;
    MoveWindow(&rc);
    return ;
    }
    }
    CFrameWnd::OnSysCommand(nID, lParam);
    }
      

  3.   

    rc.right  = GetSystemMetrics(SM_CXFULLSCREEN);//not include task bar
    rc.bottom = GetSystemMetrics(SM_CYFULLSCREEN);