我有一個.ico
文件在內存中的內容爲const char*
,我希望從這些數據創建一個HICON
。我目前的做法是將數據寫入臨時文件,然後使用。是否有可能直接從內存中創建圖標?從窗口的內存創建HICON
-1
A
回答
1
如果你想這樣做,不使用GDI +也WIC那麼你必須做一些分析自己,因爲一個.ico文件的格式不完全一樣的.EXE/.DLL一個圖標資源,所以你不能使用基於資源的圖標功能。正式的二進制規範可以找到here,並且有關於它的一個很棒的博客系列here。
如果您的.ico文件中有多個圖片,則必須循環顯示圖標目錄,直到找到您滿意的圖片尺寸。然後您可以致電CreateIcon
創建一個HICON
。
0
隨着CreateIcon
你當然可以創建圖標,但我不確定你可以用PNG格式的圖像數據餵它。
我有成功與CreateIconFromResourceEx(抱歉使用其他語言,但把它作爲一個例子,則可以使用該函數直接在C):
from ctypes import *
from ctypes.wintypes import *
CreateIconFromResourceEx = windll.user32.CreateIconFromResourceEx
size_x,size_y = 32,32 LR_DEFAULTCOLOR = 0
with open("my32x32.png", "rb") as f:
png = f.read()
hicon = CreateIconFromResourceEx(png, len(png), 1, 0x30000, size_x, size_y, LR_DEFAULTCOLOR)
希望它能幫助你。
相關問題
- 1. 從C++的字節數組創建HICON?
- 2. Web:在窗口內創建窗口
- 3. 從另一個窗口內打開已創建的窗口
- 4. 如何從QML內創建新窗口?
- 5. 創建從接口/抽象類和窗口繼承的窗口
- 6. 創建一個只能在父窗口內拖動的窗口
- 7. 從父窗口打印動態創建的iframe的內容
- 8. 從新創建的窗口獲取location.hostname
- 9. 從新創建的窗口訪問主窗口datacontext
- 10. 如何從現有窗口創建新的PyQt4窗口?
- 11. 父窗口創建
- 12. 創建InputOnly窗口
- 13. 創建一個虛擬窗口,用於在內存中繪畫
- 14. 如何在窗口上設置HICON(多種尺寸的.ICO)?
- 15. C#創建窗口 - 定義父窗口
- 16. 創建GUI窗口,如c窗口中的嚮導窗口#
- 17. 的ViewController:創建窗口
- 18. Java「創建新的」窗口
- 19. 從WinAPI窗口創建控制檯窗口?
- 20. 從WinForms創建WPF窗口BackgroundWorker
- 21. 可可Mac:從AppDelegate創建窗口
- 22. 從菜單項創建一個窗口
- 23. 從代碼創建另一個窗口?
- 24. 從窗口創建圖形全尺寸
- 25. 從內存流創建XLWorkbook
- 26. 從內存創建變量
- 27. 將HICON保存爲PNG
- 28. 窗口內的HTML窗口
- 29. 窗口內的QT窗口?
- 30. VS查看內存窗口
是的。解析文件並創建圖標。 –
@DavidHeffernan我試圖避免創建一個文件。我將內存中的圖標內容視爲字符數組,並希望直接從該數據創建HICON。 –
查看'CreateIconFromResource'。 –