msdn里在介绍Draw3dRect函数时附了一个例子如下:
void CMyView::OnDraw(CDC* pDC)
{
   // Get the client area.
   CRect rect;
   GetClientRect(rect);   // Shrink the rectangle 20 pixels on all sides.
   rect.DeflateRect(20, 20);   // Draw a rectangle with red top and left sides, and
   // green right and bottom sides.
   pDC->Draw3dRect(rect, RGB(255, 0, 0), RGB(0, 255, 0));   // This call to the four-integer override draws
   // the same rectangle with a less convenience.   // pDC->Draw3dRect(rect.left, rect.top, rect.Width(), rect.Height(),
   // RGB(255, 0, 0), RGB(0, 255, 0));
}
但是如果我要在别的地方调用,在对话框上画出来这个立方体,这个pdc变量是个什么东西?小弟是个初学者,让大家见笑了。

解决方案 »

  1.   

    pDC是上下文设备对象的指针。rect就是你要画的位置,你算好中心,设置好RECT就可以画出来了
      

  2.   

    这个pDC是你的对话框的客户区设备环境指针。如果你想在别的地方调用可以这样做:
    CClientDC dc(this);
    现在你就可以象用pDC一样用了,不过这个不是指针,你可以这样用。
    dc.Draw3dRect(....);
      

  3.   

    pdc->是指向设备环境变量(CDC)的指针,windows程序的绘图操作都给予CDC,看看书就明白了。Draw3dRect()第一个参数是一个矩形对象,它指定了画图形的位置,如果要画以(50,50)为中心的图形,只要设置rect的四个定点直就可以了。
      

  4.   

    我刚才用了如下代码结果画了一个一对话框为边缘的矩形,上边和左边是一色,右边和下边是一色,而不是立方体,请问是哪里出错了?   CRect rect;
       GetClientRect(rect);
       rect.DeflateRect(5, 5);
       CClientDC dc(this);
       dc.Draw3dRect(,RGB(255,0,0),RGB(0,255,0));
      

  5.   

    最后一行是dc.Draw3dRect(rect,RGB(255,0,0),RGB(0,255,0));
    另外,我就是换成坐标,画出来的也不过是个矩形而已,怎么不是立方体啊?
      

  6.   

    当然,Draw3dRect是画一个立体框的边框,就是左上边和右下边,没有填充。
      

  7.   

    自己搭配边框和填充的颜色,就可以产生立体效果。
    如果只是画一个按钮的话可以用DrawFrameControl