由于要自己实现AnimateWindows这个API动画特效,(某些平台上是没有这个API的)
,需要将即将显示的窗口界面先画到内存里,在内存中做一定的处理后,再画到屏幕上,
问题是该如何将窗口界面画到内存里,生成一个位图句柄.
要求:
1)窗口界面在显示到屏幕之前,就画到内存里了,
2)是即将显示的窗口界面,不是一张图片,画到内存里.麻烦各位朋友们,看看有什么好的建议,或者方法.
我想了很久,也想不出来,如何不将窗口显示到屏幕上.谢谢
,需要将即将显示的窗口界面先画到内存里,在内存中做一定的处理后,再画到屏幕上,
问题是该如何将窗口界面画到内存里,生成一个位图句柄.
要求:
1)窗口界面在显示到屏幕之前,就画到内存里了,
2)是即将显示的窗口界面,不是一张图片,画到内存里.麻烦各位朋友们,看看有什么好的建议,或者方法.
我想了很久,也想不出来,如何不将窗口显示到屏幕上.谢谢
解决方案 »
- 如何把本窗体内的数据传给呼叫的这个窗体的控件上面呢?
- Web页面分析(转到下一页面不正常)
- 如何得到列表控件的列数?
- 请问:为什么在VC中加载不了控件呢?
- Windows CE eMbedded Visual C++开发问题 急急急
- 我要汉字发音动态链接库SoundStr?
- 》》》不建立一个窗口,可以在内存中画图、写字吗(内祥)?
- 在autoexec.bat 中如何得到当前目录?
- 如何做一个DLL,可以在它被加载时自动启动一个任务或线程,对DLL中的数据进行维护
- 一个用ATL写的COM 程序, 编译后Link时通不过。有谁能帮我?
- 怎样用VC程序修改IIS里面应用程序设置的执行权限参数?
- 求助:为什么我的线程序没有运行起来啊?谢谢!
// 创建内存DC
HDC hdcMemory = ::CreateCompatibleDC(hDC);
HBITMAP hBitmap = ::CreateCompatibleBitmap( hDC, rect.Width(), rect.Height());
HGDIOBJ hOriginalBmp = ::SelectObject(hdcMemory, hBitmap);
::BitBlt( hDC
, 0
, 0
, rect.Width()
, rect.Height()
, hdcMemory
, 0
, 0
, SRCCOPY
);
::SelectObject(hdcMemory, hOriginalBmp);
::DeleteObject(hBitmap);
::DeleteDC(hdcMemory);
这么说吧,
1)窗口画面1已经显示到屏幕上.
2)现在要显示窗口画面2,由于特殊需要,先要在内存里,生成该窗口画面2的位图.
3)再做一定的位图处理,将内存中的窗口画面2,再显示到屏幕上.一般我们窗口都是调用ShowWindows,或者DoModal,就直接显示到屏幕,而不是内存里,
这样就会取代窗口画面1.
这个问题的困难处是,怎样在显示窗口画面1的同时,能够对窗口画面2进行位图处理,然后再显示.
只不过是创建了兼容的内存DC,和内存位图,
关键的是把窗口画面2如何BitBlt到hdcMemory,这个没有啊?
不然的话,还是空的hdcMemory啊.
你的"窗口画面2"是什么东西? hdcMemory就是给你画的, 你爱怎么画就怎么画。如果你的意思是说, 在窗口最终显示出来之前进行一些处理,那么你可以参考这个:
http://www.codeproject.com/KB/dialog/VisitaLookingDialog.aspx创建2个窗口,上面的是LAYERED Windows, 下面的是一个几乎不透明的Window。下面的窗口接受消息。上面的窗口用于显示。
截取下面窗口的图形, 经过中间处理, 显示到上面的窗口
--------------
改错:下面的是一个几乎透明的Window