首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 組合語言

為組合語言程式添加自訂圖示:資源檔 (.rc) 實作教學

     編輯:組合語言

教學目標

示範如何透過資源檔(.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
  • 123:資源識別碼(WORD),範圍 1~65535。若為圖示,**ID=1 或任意值均可**,系統會掃描所有 ICON 資源挑選適當解析度。
  • ICON:資源類型關鍵字,對應 RT_ICON (3)。
  • 8.ico:相對路徑,編譯時需存在。

編譯鏈接完整流程(MASM32 + EditPlus IDE)

  1. 以 EditPlus 開啟 8.asm
  2. 按 Ctrl+1 執行「編譯&鏈接&運行」巨集(內含 RC.EXE 編譯資源)
  3. 後台自動執行:
    • ML /c /coff /Cp 8.asm → 8.obj
    • RC /r 8.rc → 8.res (資源編譯為 COFF 格式)
    • LINK /SUBSYSTEM:CONSOLE 8.obj 8.res → 8.exe
  4. 執行 8.exe 驗證輸出;以檔案總管查看 8.exe 圖示已更新
  5. 進階:GUI 程式指定應用程式圖示

    若為視窗程式(/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 整合流程,即可為組合語言程式賦予專業級視覺識別,並奠定後續版本資訊、多語系、對話框資源擴展的基礎。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved