我响应这个消息WM_NCCALCSIZE,把窗口标题栏比正常WINDOWS的高度矮一点,
如原来30,现在26,在标题栏上放个图片也是26高,
但在切换窗口活动情况下,原来的WINDOWS蓝色会出来,还有最小,最大,关闭按钮,,把我的下面客户区域的菜单栏给占了。应该怎么样做呢?

解决方案 »

  1.   

    WM_NCPAINT
    WM_ACTIVATE
    WM_NCACTIVATE
    响应这三个消息,在消息响应函数把图片重画
      

  2.   


    LRESULT CMainFrame::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
    {
    LRESULT lrst=DefWindowProc(message,wParam,lParam);
    if(!::IsWindow(m_hWnd))
    return lrst;
    if(message==WM_NCPAINT||message==WM_NCACTIVATE||message==WM_NOTIFY)
    {
    CDC*pWinDC=GetWindowDC();
    if(pWinDC)
    DrawTitleBar(pWinDC);//重绘title
    ReleaseDC(pWinDC);
    }
    return lrst;}
      

  3.   

    你要处理很多消息的,基本那些WM_NC***的消息你都要处理,不仅仅是WM_NCCALCSIZE消息。还包括WM_SETCURSOR的,不然的话,WINDOWS标题栏还是会出来.
      

  4.   

    我现在响应了.WM_NCPAINT, WM_NCACTIVATE,WM_ACTIVATE, WM_NCMOUSEMOVE,
    WM_NCLBUTTON,可现在还有个问题就是运行后,第一次把鼠标移到边框上,就会出现原WINDOWS的内容,
    只要再最小最大化后一次,再也不会出现WINDWS内容.应该怎么样处理呢?
      

  5.   

    Windows XP环境下截获0x00AE消息就行了
      

  6.   

    楼上mynamelj(夏娃的诱惑)能否详细告知呢?谢谢.
      

  7.   

    例如:
    LRESULT WndProc(...)
    {
       ...
       case 0x00AE:
           return 0;
    }
      

  8.   

    谢谢mynamelj(风之羽翼)确实是这样的.
    搞定.不过不知道这个消息是做什么用的.>WINDOWS消息中没有介绍这个值.
      

  9.   

    http://www.vckbase.com/document/viewdoc/?id=317
      

  10.   

    WM_NCHITTEST这个把WINDOWS自己处理给断了就不会出最大小及关闭按钮了