什麼是簡單的方式來實現一個C++的Win32程序...
- 顯示一個800x600x24未壓縮的位圖圖像
- 在一個窗口無國界(唯一可見的是圖像)
- 這10秒
後關閉 - 和不使用MFC最快的方式
最快的方式
回答
您可以:
- 在資源文件中創建一個對話框
- 有它包含畫面控制
- 設置圖片控件類型爲位圖
- 創建/導入位圖資源文件並將該位圖ID設置爲對話框中的圖片控件
- 使用CreateDialogParam創建窗口
- H andle的WM_INITDIALOG以便設置10秒(使用SetTimer的)
- 手柄WM_TIMER定時器趕上你的計時器事件,並銷燬窗口(調用DestroyWindow)
- 使用的LoadImage加載位圖
- 使用CreateWindowEx創建窗口。
- 在窗口proc中捕獲WM_PAINT。使用BitBlt來繪製位圖。
註冊爲啓動窗口類,並使用這些樣式創建一個窗口:
- WS
_
POPUPWINDOW:將確保你的窗口沒有標題/ SYSMENU - WS
_
EX_
TOPMOST:將保持啓動畫面的一切。請注意,這有點侵入性。將飛濺窗口設置爲主窗口的子窗口可能會更好。不過,您可能必須操縱z順序,以便在啓動屏幕下方保留任何其他彈出窗口(如果您創建了任何窗口)。
使用CreateDIBSection加載位圖。應該很容易,因爲BMP文件基本上是DIB結構的轉儲。或者做Ken說的並使用LoadImage。
處理WM _
PAINT或WM _
ERASEBKGND消息在窗口上繪製位圖。
On WM _
CREATE設置一個10秒的計時器,當Windows發送WM _
TIMER消息時,讓窗口自行銷燬。
這裏的關鍵是使用layered window。
你可以用一個Win32嚮導生成項目的啓動,改變CreateWindow的調用CreateWindowEx,並作爲WS_EX_LAYERED擴展窗口風格WS_POPUP和WS_SYSMENU作爲窗口樣式的組合集。當你這樣做啓動你的應用程序時,它將不可見。那麼你應該使用UpdateLayeredWindow來繪製你的圖像。如果你想使用alpha圖層的PNG圖像,你可能還需要AlphaBlend函數。
希望這會有所幫助!
這是一個Win32 API的常見問題
查看專業Win32API的論壇 消息://194.177.96.26/comp.os.ms-windows.programmer.win32 它已經回答了上百次了20年。 。
如果你針對Windows的現代版本(Windows 2000)及更高版本,您可以使用UpdateLayeredWindow函數來顯示任何位圖(如果需要,可顯示包含alpha通道的位圖)。
I blogged a four-part series關於如何編寫這樣做的C++ Win32應用程序。如果您需要等待十秒鐘才能關閉啓動畫面(而不是直到主窗口準備就緒),則需要使用Dan Cristoloveanu建議的調用DestroyWindow的計時器技術。
- 1. 最快方式
- 2. 最快方式
- 3. 最快方式
- 4. 最快的方式
- 5. 最快的方式
- 6. 最快的方式
- 7. 最快的方式
- 8. 最快的方式
- 9. 最快的方式
- 10. 最快的方式
- 11. 最快的方式
- 12. 最快的方式
- 13. 最快的方式
- 14. 最快的方式
- 15. 最快的方式
- 16. 最快的方式
- 17. 最快的方式
- 18. 最快的方式
- 19. 最快的方式
- 20. 最快的方式
- 21. 最快的方式
- 22. 最快的方式
- 23. 最快的方式
- 24. 最快的方式MySQL的
- 25. OSM - 解析方式最快方式標記的最佳方式
- 26. 最快的方式排列
- 27. 最快的方式在Smalltalk
- 28. 最快的方式從
- 29. 最快的方式導入?
- 30. 最快的方式EC2 PHP