Mfc GDI的绘图超出了控制范围

Mfc GDI的绘图超出了控制范围,mfc,controls,gdi,Mfc,Controls,Gdi,我正在编写一个MFC应用程序。我在窗体对话框上创建了一个CStatic派生控件,以便在启动程序时直接看到窗体。我现在使用派生类中的OnPaint()方法在此控件中绘制。到目前为止,一切正常。 然而,奇怪的是,这些图形并没有超出控制范围。取而代之的是,如果我画的是真正大的东西,整个形式都会被画出来。在我的理解中,只有控件应该被绘制 提前谢谢 Andreas D.检查控件是否使用了“未捕获设备上下文”选项。您可以通过获取控制标志来检查这一点。 您还可以调用IsOptimizedDraw(),如果返回

我正在编写一个MFC应用程序。我在窗体对话框上创建了一个CStatic派生控件,以便在启动程序时直接看到窗体。我现在使用派生类中的OnPaint()方法在此控件中绘制。到目前为止,一切正常。 然而,奇怪的是,这些图形并没有超出控制范围。取而代之的是,如果我画的是真正大的东西,整个形式都会被画出来。在我的理解中,只有控件应该被绘制

提前谢谢
Andreas D.

检查控件是否使用了“未捕获设备上下文”选项。您可以通过获取控制标志来检查这一点。 您还可以调用IsOptimizedDraw(),如果返回true,则您的图形可以在控制范围之外绘制。

@dlb现在就知道了

CDC* pDC = GetDC();
CRect rClient();
GetClientRect(rClient);
CRgn ClipRgn;
if (ClipRgn.CreateRectRgnIndirect(&rClient))
{
    pDC->SelectClipRgn(&ClipRgn);
}


// Drawing content


pDC->SelectClipRgn(NULL);
ReleaseDC(pDC);

感谢您的回答

尽管上面没有提到我的问题,但“CDC*pDC=GetDC();”解决我的问题。。。谢谢@Andreas