请教如何响应鼠标点击任务栏图标时,能使应用程序最小化,应用程序的条件是没有标题栏和边框,我尝试了下WS_OVERLAPPED,可是程序会存在标题栏和边框,如果再用
Modifystyle把窗体风格的标题栏去掉时,鼠标单击任务栏图标的效果又失去了?请高手帮帮忙,谢谢了

解决方案 »

  1.   

    可以自己绘制非客户区,或者SetWindowRegion之类把非客户区去掉
      

  2.   

    有个变通的方法,在窗体的WM_NCCALCSIZE消息响应函数OnNcCalcSize中用下面代码把标题栏的高度设为0,这样就两不误了:void CMmDlg::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp) 
    {
    // TODO: Add your message handler code here and/or call default lpncsp->rgrc[0].top -= 18; //这个高度是我试出来的,实际用的时候自己用GetSystemMetrics函数得到

    CDialog::OnNcCalcSize(bCalcValidRects, lpncsp);
    }
      

  3.   

    另外,有WS_OVERLAPPED的时候,去掉WS_CAPTION、 WS_SYSMENU 和 WS_THICKFRAME但是加上WS_MINIMIZEBOX。这样不会有标题栏,同时也能响应。
      

  4.   

    保留窗口的Title bar和Minimize box风格就行了。
      

  5.   

    谢谢了,
    用有WS_OVERLAPPED的时候,去掉WS_CAPTION、 WS_SYSMENU 和 WS_THICKFRAME但是加上WS_MINIMIZEBOX。这样不会有标题栏,同时也能响应。我试了下,能实现这种效果