Wait for native layout selection repaint in UI capture
This commit is contained in:
1 parent
e0bfdd9a90
commit
4fbeb56421
1 file changed
+8
@@ -320,6 +320,14 @@ int main()
|
||||
SendMessageW(lan,WM_TIMER,1,0);
|
||||
require(IsDlgButtonChecked(lan,713)==BST_CHECKED,"status refresh preserves unsaved position choice");
|
||||
require(!IsWindowEnabled(GetDlgItem(lan,715)),"input cannot start while discovery is disabled");
|
||||
// Let the native radio-button theme animation finish before visual capture.
|
||||
auto repaintUntil=GetTickCount64()+200;
|
||||
while(GetTickCount64()<repaintUntil)
|
||||
{
|
||||
MSG message{};
|
||||
while(PeekMessageW(&message,nullptr,0,0,PM_REMOVE)){TranslateMessage(&message);DispatchMessageW(&message);}
|
||||
Sleep(10);
|
||||
}
|
||||
RedrawWindow(lan,nullptr,nullptr,RDW_INVALIDATE|RDW_UPDATENOW|RDW_ALLCHILDREN);
|
||||
RECT r{};GetClientRect(lan,&r);HDC dc=GetDC(lan);auto screenshot=ks::screenshotClip(dc,r.right,r.bottom,{});ReleaseDC(lan,dc);
|
||||
ks::atomicWrite(std::filesystem::path(ks::executable()).parent_path()/L"lan-screen-layout.png",ks::encodePng(ks::decodeImage(screenshot)));
|
||||
|
||||
Reference in new issue
Block a user