我现在在MFC对话框下结合OPENGL绘制一些基本图形,我将按钮与PICTURE控件至于
一个对话框里面的,发现一个问题:
CPaintDC(this) -》指的是当前窗口作为画布嘛,但我改成        CWnd* pWnd1;
pWnd1=GetDlgItem(IDC_PIC);
CClientDC dc(pWnd1);效果还是一样,就是整个对话框都可以绘制图形,包括按钮区域,不是说 可以指定控件嘛,可DC并没有绑定在
PICTURE控件上?这是为什么?如何实现啊?

解决方案 »

  1.   

    我一般在使用控件DC时,使用这样的方法:CWnd* pWnd1;
    pWnd1 = GetDlgItem(IDC_PIC);
    CDC* pdc = pWnd1->GetDC();
    有时候也会使用GetClientDC();基本上没有用过CPaintDC
    参考:
    http://blog.csdn.net/liuy_yy/article/details/7192555
      

  2.   

    那你说用CDC就可以嘛?我试哈。
      

  3.   

    我试了哈。。还是不行。。一整个窗口都可以绘图。。我想要的效果是只是PICTURE控件可以绘图。
      

  4.   

    dc本来就不限制范围的
    指要在窗口范围内就可用
    控件自己需要通过自己的区域设置裁剪区
    你要是对裁剪区不熟悉可以查阅相关资料
    比如http://www.21shipin.com/html/96653.shtml
      

  5.   

    CRgn rgn;
    rgn.CreateRectRgnIndirect(rect);
    dc->SelectClipRgn(&rgn);