将c ++ Win32程序实现为...的简单方法是什么?
- 显示800x600x24未压缩位图图像
- 在没有边框的窗口中(唯一可见的是图像)
- 十秒钟后关闭
- 并且不使用MFC
答案 0 :(得分:6)
如果您的目标是Windows(Windows 2000)及更高版本的现代版本,则可以使用UpdateLayeredWindow功能显示任何位图(包括带有Alpha通道的位图,如果需要)。
我blogged a four-part series关于如何编写执行此操作的C ++ Win32应用程序。如果您需要等待十秒钟才能关闭启动画面(而不是在主窗口准备就绪之前),您需要使用Dan Cristoloveanu建议的调用DestroyWindow的计时器技术。
答案 1 :(得分:2)
为启动窗口注册一个类,并使用以下样式创建一个窗口:
_
POPUPWINDOW:确保您的窗口没有标题/ sysmenu _
EX _
TOPMOST:将闪屏保持在一切之上。请注意,这有点干扰。将启动窗口作为主窗口的子窗口可能会更好。但是,您可能必须操纵z顺序,以便在启动屏幕下方保留任何其他弹出窗口(如果您创建任何窗口)。使用CreateDIBSection加载位图。它应该很容易,因为BMP文件本质上是DIB结构的转储。或者做Ken所说的并使用LoadImage。
处理WM _
PAINT或WM _
ERASEBKGND消息以在窗口上绘制位图。
On WM _
CREATE设置一个10秒的计时器,当Windows发送WM _
TIMER消息时,让窗口自行销毁。
答案 2 :(得分:2)
这里的关键是使用layered window。
您可以从win32向导生成的项目开始,将CreateWindow调用更改为CreateWindowEx,并将WS_EX_LAYERED设置为扩展窗口样式,并将WS_POPUP和WS_SYSMENU组合为窗口样式。当你这样做启动你的应用程序时,它将是隐形的。然后你应该使用UpdateLayeredWindow来绘制你的图像。如果您想使用带有alpha图层的PNG图像,则可能还需要AlphaBlend功能。
希望这有帮助!
答案 3 :(得分:1)
答案 4 :(得分:1)
这是一个Win32 api FAQ
查看专业的Win32api论坛 新闻://194.177.96.26/comp.os.ms-windows.programmer.win32 20年来它被回答了数百次。
答案 5 :(得分:1)
你可以: