这个问题已经困扰了我好久,希望大牛们教教我。
能有源码最好,邮箱是[email protected]

解决方案 »

  1.   

    拖动的时候还会触发WM_NCPAIN消息吗?
      

  2.   


    调试的时候,发现拖动的时候并没有触发...重载WM_MOVE后,拖动的时候,整个对话框都黑了(PS:我把标题栏改为黑色了)
      

  3.   

    "发现拖动的时候并没有触发",那就在拖动的时候用PostMessage发送WM_NCPAIN,试试
      

  4.   


    LRESULT CWarningDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
    {
    // TODO: Add your specialized code here and/or call the base class
    if (message==WM_MOVE||message==WM_PAINT||message==WM_NCPAINT||message==WM_NCACTIVATE ||message == WM_NOTIFY)
    { DrawTitleBar(); }
    return CDialog::DefWindowProc(message, wParam, lParam);
    }
    我这样改了,但是拖动的时候,整个对话框客户区和非客户区全部便黑了...
      

  5.   

    DrawTitleBar();
    代码怎么写的?
      

  6.   


                    CRect titleRect, rect;        //计算标题栏的坐标区域 
      this->GetWindowRect(&titleRect); 
      rect.left = GetSystemMetrics(SM_CXFRAME);
      rect.top = GetSystemMetrics(SM_CYFRAME);
      rect.right = titleRect.right - titleRect.left - GetSystemMetrics(SM_CXFRAME);
      rect.bottom = rect.top + GetSystemMetrics(SM_CYSIZE);
      TRACE("left:%d, top:%d, right:%d, botton:%d\r\n", rect.left, rect.top, rect.right, rect.bottom);
      CDC pDC;            //创建DC设备 
      pDC.CreateDC("DISPLAY", NULL, NULL,NULL); 
     // CDC *pDC = GetWindowDC();//用这个无效
      CBrush brush;                //使用自定义/位图画刷,画背景图 
      CBitmap bitmap; 
      // IDB_MAIN_CAPTION即为上述主界面标题栏背景位图的资源ID 
     // bitmap.LoadBitmap( IDB_MAIN_CAPTION ); 
     // CBitmap* bk = &bitmap; 
     // brush.CreatePatternBrush(bk);
      brush.CreateSolidBrush(RGB(0,0,0));
      pDC.SetBkMode(TRANSPARENT);//标题栏背景模式设为透明 
      //用自定义的画刷填充背景正中位置显示系统标题 
      pDC.FillRect(&titleRect,&brush);  
     // ReleaseDC(pDC);
      

  7.   


    不会双缓冲,我在GDI绘图的知识很薄弱...
      

  8.   

    http://download.csdn.net/tag/%E6%A0%87%E9%A2%98%E6%A0%8F/orderbydownloads
    看看这里有吗
      

  9.   

    http://download.csdn.net/download/wxhdreaming/192649这个例子貌似可以,我下了,代码还没细看