以下是那个按钮响应函数的代码,可是只能绘制出一个小的红色矩形。请各位大大指点迷津:         CBrush brush(RGB(255,0,0));
CClientDC dc(((CFrameWnd *)AfxGetApp()->GetMainWnd())->GetActiveView());
CRect rect;
         GetWindowRect (&rect);
ScreenToClient(&rect);
         dc.Rectangle (&rect);
         dc.FillRect(&rect,&brush);

解决方案 »

  1.   

    rect大小?GetWindowRect 和 ScreenToClient 都要用AfxGetApp()->GetMainWnd())->GetActiveView的hwnd
      

  2.   

    能再具体些吗?如果不是通过对话框的按钮来控制视图,直接在视图上用GetWindowRect 和 ScreenToClient 好象可以啊,谢谢大大指点
      

  3.   

    rect大小不对,
    GetDesktopWindow()->GetWindowRect(&rect);
      

  4.   

    你对话框按钮中不加AfxGetApp()->GetMainWnd())->GetActiveView取得的矩形,和视图中取得的矩形是不一样的
      

  5.   

    这样是不行的,你在模式对话框上把主窗口的背景颜色改变后,只要被其它窗口挡住,再出现时,颜色又恢复成原来的了。你可以这样做:
    在主窗口的OnPaint中绘制
    void CYourWnd::OnPaint()
    {
     CPaintDC dc(this);
     CRect rcClient;
     GetClientRect(rcClient);
     if (m_bRed)
        dc.FillSolidRect(rcClient, RGB(255,0,0));
     else
        dc.FillSolidRect(rcClient, RGB(255,255,255));
    }
    也就是说,当m_bRed为TRUE时画红色,否则画白色。然后在你的模式对话框的按钮的响应函数中设置主窗口的m_bRed为TRUE;
    pWnd->m_bRed = TRUE;
    pWnd->InvalidateRect(NULL);
    你试试吧,上面的代码没有在编译器在调试,可以编不过。顺便做个广告:一个MFC界面库,请关注:www.iuishop.com。
      

  6.   

    http://www.chinabyte.com/20030321/1658626_1.shtml
    上面有你要的答案