我有主要的.exe應用程序和與窗體.dll。我可以從.exe創建和顯示錶單,但它沒有任務欄圖標(和左上角的小圖標)。我想從另一個DLL加載這個圖標。我該怎麼做?德爾福 - 更改任務欄圖標
1
A
回答
3
以下是您需要做的事情。我沒有包含太多的細節,因爲你的問題沒有細節,也沒有辦法讓我確切地知道你將如何適應你的程序。關鍵是要從高層明確你需要做什麼。
加載包含資源
爲此,使用LoadLibrary
或LoadLibraryEx
的DLL。如果您需要調用DLL中的代碼,請使用前者。否則使用後者通過LOAD_LIBRARY_AS_IMAGE_RESOURCE
。這兩個函數都產生一個模塊句柄HMODULE
。
負載從DLL
圖標傳遞HMODULE
到LoadIcon
或從資源加載的圖標。這將產生一個HICON
。將其分配給TIcon
實例的Handle
屬性。
指定的圖標形式
分配您在上一步到窗體的Icon
財產獲得的圖標對象。
1
非常感謝。我嘗試了類似Form.Icon.Assign(Icon);但它創建了AV錯誤消息。這裏是工作代碼:
procedure TformOptions.FormCreate(Sender: TObject);
var
lib: THandle;
icon: TIcon;
begin
icon := TIcon.Create;
lib := LoadLibrary('res.dll');
if lib > 0 then icon.Handle := LoadIcon(lib, 'ICON2');
if icon.Handle > 0 then Application.Icon.Assign(icon);
icon.Free;
FreeLibrary(lib);
end;
相關問題
- 1. 德爾福正確使用任務
- 2. 德爾福:更改TJvDockTabHostForm的選項卡圖標
- 3. 與德爾福
- 4. 德爾福HID Delphi7和德爾福XE2
- 5. 更改德爾福7中的字符
- 6. 德爾福v.Word - 如何從德爾福
- 7. 德爾福
- 8. 德爾福ftpgetfile
- 9. 從德爾福web服務
- 10. 德爾福6 - >德爾福2006年dbexpress怪異?
- 11. 德爾福結合標籤
- 12. 德爾福標籤順序
- 13. 更改VB.net任務欄上的圖標
- 14. 德爾福
- 15. 德爾福 - 獲取文件夾圖標
- 16. 與德爾福
- 17. SQL更新(德爾福)
- 18. 德爾福fsStayOnTop奇數
- 19. 德爾福Application.HintColor
- 20. 德爾福
- 21. DES_KEY_SZ德爾福
- 22. 德爾福
- 23. 與德爾福
- 24. 德爾福的TQuery
- 25. 消耗德爾福
- 26. 翻譯代碼DLL注入德爾福7德爾福XE2
- 27. 德爾福PDF縮略圖
- 28. 德爾福 - 西雅圖
- 29. 德爾福OpenGL繪圖
- 30. 圖像查看德爾福
該AV將是因爲你的代碼中的錯誤。可能的表單無效。測試不等於零而不是大於。使用LoadLibraryEx來避免在dll中執行代碼。最後嘗試使用。簡單的分配給圖標比分配更習慣。 –