Visual studio 2008 如何找到窗口';当WindowProc收到WM_PAINT消息时,是否显示脏区。。。? 我有一个用C++编写的内部API(没有MFC),在Win32 API之上实现。我的应用程序正在为每个WM_PAINT调用绘制整个窗口。有没有办法只找到脏/无效区域,这样我就可以优化我的绘图功能,只在与脏区域相交的视图中绘图
我在BeginPaint-EndPaint语句之间尝试了以下代码,但失败得很惨。整个窗户都是黑色的。如果我将Optimize flag设置为0,则窗口绘制得很好,但绘制速度太慢。有什么建议吗Visual studio 2008 如何找到窗口';当WindowProc收到WM_PAINT消息时,是否显示脏区。。。? 我有一个用C++编写的内部API(没有MFC),在Win32 API之上实现。我的应用程序正在为每个WM_PAINT调用绘制整个窗口。有没有办法只找到脏/无效区域,这样我就可以优化我的绘图功能,只在与脏区域相交的视图中绘图,visual-studio-2008,visual-c++,gdi,winapi,Visual Studio 2008,Visual C++,Gdi,Winapi,我在BeginPaint-EndPaint语句之间尝试了以下代码,但失败得很惨。整个窗户都是黑色的。如果我将Optimize flag设置为0,则窗口绘制得很好,但绘制速度太慢。有什么建议吗 #if Optimize // get the inval region and pass it down HRGN invalRegion = CreateRectRgn(0,0,0,0); int retVal = ::GetClipRgn( myHDC,invalRegion);
#if Optimize
// get the inval region and pass it down
HRGN invalRegion = CreateRectRgn(0,0,0,0);
int retVal = ::GetClipRgn( myHDC,invalRegion);
Assert (retVal != -1);
if(retVal == 0)
return; // nothing to draw.
else if(retVal == 1)
Draw(invalRegion); // a valid dirty region handle.
else
#endif
Draw(NULL); // this results in drawing calls to all views in the window.
您是否尝试过使用
PAINTSTRUCT
中的rcPaint RECT
?GetClipRgn特别指出,它不是指由BeginPaint创建的剪裁区域,而是仅指通过SelectClipRgn
中显式选择的剪裁区域。您是否尝试过使用PAINTSTRUCT
中的rcPaint RECT
?GetClipRgn特别指出,它并不是指由BeginPaint创建的剪辑区域,而是指那些通过SelectClipRgn
显式选择的剪辑区域