首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

关于 dll 截图解决思路

2012-06-02 
关于 dll 截图主窗口中调用dll的截图函数HMODULE hModule LoadLibrary(poi.dll)SCREENSHOT ScreenSho

关于 dll 截图
主窗口中调用dll的截图函数

HMODULE hModule = LoadLibrary("poi.dll");
SCREENSHOT ScreenShot = (SCREENSHOT)GetProcAddress(hModule, "ScreenShot");
ScreenShot("3DVIEWFRM", szCmdValue); // 第一个参数是窗口类名,第二个参数是希望保存位图的文件名

dll中首先是FindWindow取得窗口句柄
然后 ShowWindow(hwnd, SW_SHOWNORMAL);
那么问题来了,当本来窗口是最大化状态时,这样做会导致窗体重绘,在主窗体的WM_PAINT中原本是画图的,但是在dll中ShowWindow后窗体变NORMAL状态了,但是图没有画上去,就截图了,所以什么都没截到

这是怎么回事啊

[解决办法]
ShowWindow 不会等待窗体绘制完成, 所以截图时窗体还没绘制, 用UpdateWindow等待


C/C++ code
::ShowWindow(hWnd, SW_SHOW);::BringWindowToTop(hWnd);::UpdateWindow(hWnd); 

热点排行