示範如何透過資源檔(.rc)為 MASM32 主控台程式指定自訂圖示(.ico),使編譯產生的 .exe 在檔案總管顯示專屬圖示,而非系統預設圖示。
| 檔案 | 角色 | 關鍵內容 |
|---|---|---|
8.asm | 主程式 | 呼叫 StdOut 列印字串,標準主控台程式 |
8.rc | 資源腳本 | 123 ICON 8.ico —— 資源 ID 123,類型 ICON,來源檔 8.ico |
8.ico | 圖示檔 | 16×16/32×32/48×48 多解析度圖示,置於同目錄 |
; 8.rc
123 ICON 8.ico
RT_ICON (3)。8.asmRC.EXE 編譯資源)ML /c /coff /Cp 8.asm → 8.objRC /r 8.rc → 8.res (資源編譯為 COFF 格式)LINK /SUBSYSTEM:CONSOLE 8.obj 8.res → 8.exe8.exe 驗證輸出;以檔案總管查看 8.exe 圖示已更新若為視窗程式(/SUBSYSTEM:WINDOWS),通常在 WNDCLASSEX.hIcon 載入圖示:
; 於 .asm 中
INVOKE LoadIcon, hInstance, 123 ; 資源 ID 必須與 .rc 一致
MOV wc.hIcon, EAX
MOV wc.hIconSm, EAX
此時 .rc 建議使用 **ID=100** 或 **ID=IDI_ICON1** 等語意化識別碼,並在 resource.h 定義常數供 .asm/.rc 共用。
| 現象 | 原因與對策 |
|---|---|
| 連結錯誤 "cannot open 8.res" | 未執行 RC 編譯、或 .rc 檔名與指令不符 |
| 圖示未更新 | 圖示快取,嘗試重建圖示快取或更換資源 ID 重新編譯 |
| 多解析度圖示僅顯示單一尺寸 | .ico 檔僅含單一影像,建議用圖示編輯器 (如 Greenfish Icon Editor) 產生多尺寸 .ico |
VS_VERSION_INFO VERSIONINFO ... 產生檔案屬性「詳細資料」頁STRINGTABLE { 100 "My App" } 多語系支援IDD_DLG1 DIALOGEX ... 視覺化設計對話框IDB_BMP1 BITMAP "bg.bmp" 等資源檔(.rc)是 Win32 程式「外觀與資料」分離的關鍵機制。掌握 RC.EXE + LINK 整合流程,即可為組合語言程式賦予專業級視覺識別,並奠定後續版本資訊、多語系、對話框資源擴展的基礎。