关于 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等待
::ShowWindow(hWnd, SW_SHOW);::BringWindowToTop(hWnd);::UpdateWindow(hWnd);