StretchBlt在多个窗口中失败
StretchBlt fails with multiple windows
所以我有以下代码:
HBITMAP tbmp=NULL;
HBITMAP cbmp=NULL;
tbmp=hbmp;// hbmp is defined earlier
cbmp=hbmp;
HDC h1=GetDC(mainWind);//main wind defined earlier
HDC h2=GetDC(secondWind);// secondWind defined earlier
HDC h1mem=CreateCompatibleDC(h1);
HDC h2mem= CreateCompatibleDC(h2);
SelectObject(h1mem, tbmp);
SelectObject(h2mem, cbmp);
StretchBlt(h1, 300, 0, 384, 216, h1mem, 0,0,1920,1080);
StretchBlt(h2, 0, 0, 1920, 1080, h2mem, 0,0,1920,1080);
然而,当我运行这个时,只有第一个StretchBlt
会执行任何操作。无论我把它们按什么顺序排列,只有第一个StretchBlt
会创建任何东西。我真的需要一些帮助。谢谢大家!
不能在多个设备上下文中选择相同的HBITMAP
句柄。仅仅因为您将同一个句柄值复制到三个不同的变量中,并不意味着您现在神奇地拥有三个不同句柄——您只拥有同一句柄的三个副本。最有可能的是,第二个SelectObject
调用失败(通常,您应该检查所有API调用的返回值(。
试试这个方法:
HDC h1 = GetDC(mainWind);
HDC h2 = GetDC(secondWind);
HDC h1mem = CreateCompatibleDC(h1);
HBITMAP hbmOld = (HBITMAP)SelectObject(h1mem, hbmp);
StretchBlt(h1, 300, 0, 384, 216, h1mem, 0,0,1920,1080);
StretchBlt(h2, 0, 0, 1920, 1080, h1mem, 0,0,1920,1080);
// Cleanup
SelectObject(h1mem, hbmOld);
DeleteDC(h1mem);
ReleaseDC(h1);
ReleaseDC(h2);
相关文章:
- 创建进程 API 失败,在窗口 122 上出现错误代码 10
- C++ 窗口本地系统模拟在子进程中失败
- C++,弹出调试断言失败窗口,我得到矢量迭代器不兼容的错误运行时
- xcb_get_image_reply另一个工作区/桌面上的窗口失败
- 视觉C++窗口创建失败
- Qt 窗口包含提升线程标头失败
- 我遇到此问题,运行程序时出现一个弹出窗口,指出调试断言失败
- C++/SFML窗口创建失败
- 我用c编写了一些代码来制作简单的win32窗口,但失败了
- 链接失败。如何使用'NtQuerySystemTime'窗口功能?
- MDI 子窗口创建失败
- 在任务管理器窗口之后放置窗口失败并出现ERROR_ACCESS_DENIED
- Win32窗口创建失败
- 如果在窗口关闭内部调用QThread finished(),则发射失败
- 调用glfwWindowHint()后,GLFW窗口创建失败
- GTest和GoogleMock EXPECT_CALL在窗口中失败,在Mac上通过char*param
- GTK+中的重复窗口无效:经过几个步骤后失败
- MFC窗口工具栏创建失败,没有错误消息
- c++ Win32.SelectObject失败,GetLastError返回错误1400(无效窗口句柄)
- CreateWindowEx失败.我如何让我的窗口(与按钮)实际上一次弹出