我最近在做一个mdi形式的浏览器,我在每个mdi的窗口上画了1个图标,用于记录当前网页地址的,就是说当点击这个mdi窗口上的这个图标后就会把这个窗口的网子加入到收藏家里面,但是现在的问题是当我把这个mdi窗口最小化的时候,那个图标在加上系统的3个按钮(最大,普通,关闭) 的话把ie的标题都挡住了,很不美观,我想如果当把mdi最小化的时候把图标去掉,当正常显示的时候在把图标显示出来。我不知道如何做了。图标当初是在CChildFrame::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)里面的函数化出来的,现在请问最小化的时候如何把图标去除阿?请您指点。谢谢。
请看这个是那个问题的图片
正常状态:
www.51mcd.com/1a.gif
最小化状态(看了就知道我为什么想把图标去掉了)
www.51mcd.com/2a.gif

解决方案 »

  1.   

    以前用delphi做,记得是拦截某个消息
      

  2.   

    CWnd::IsIconic()函数可以知道当前是不是处于最小化状态,根据这个状态你可以自己决定画还是不画那些图标
      

  3.   

    最大化、最小化将发送WM_SYSCOMMAND消息。要处理该消息,可以这么做: 
        1、在Form的头文件中添加: 
         void __fastcall RestrictMinimizeMaximize(TMessage &Msg); 
         
         BEGIN_MESSAGE_MAP 
         MESSAGE_HANDLER(WM_SYSCOMMAND, TMessage, RestrictMinimizeMaximize) 
         END_MESSAGE_MAP(TForm) 
        2、在Form的单元文件中添加: 
         
         void __fastcall TForm1::RestrictMinimizeMaximize(TMessage& Msg) 
         { 
         if (Msg.WParam == SC_MINIMIZE) 
         { 
         //catches minimize... 
         } 
         else if (Msg.WParam == SC_MAXIMIZE) 
         { 
         //catches maximize... 
         } 
         TForm::Dispatch(&Msg); 
         // or "else TForm::Dispatch(&Msg)" to trap 
         } 
      

  4.   

    我是在CChildFrame::DefWindowProc函数里面用
    if (message==WM_MOVE||message==WM_PAINT||message == WM_NOTIFY||message== WM_NCACTIVATE
      ||message==WM_SHOWWINDOW||message==WM_KILLFOCUS||message==WM_SIZE)
         
          {
          CDC* pWinDC = GetWindowDC();
          if (pWinDC)
          DrawTitleBar(pWinDC);
          ReleaseDC(pWinDC);
          }
    来判断的。请问如果最小化不画图标应该如何改?