Win32 寫視窗時,做視覺化介面大多有兩種方式,一種是直接用 IDE 所附的資源編輯器,另一種是直接用 API 下去砍。資源編輯器所編輯出來的,會產生二個檔案,一個是 hello.rc 另一為 resource.h。 resource.h 本身並沒有什麼好講的,裡面都是定義一些資源編號之 macro。
目前這兩種方式 (API、使用資源編輯器) 都可以動態資源變更之目的,但在大多之情況,用 API 撰之較費時,光是畫一份 Dialog 便要花一些時間在計算位置上,但若 UI 介面常改變時,用 API 可能是較佳維護之方式。這裡不會把所有關於 Resource 之 API 都提上,要提的是資源編輯器這塊。
用記事本開啟 *.rc 時,其實裡面都是一些簡單的 script language,而且不同之資源編輯器,對於所述之 *.rc 大多大同小異,只是一些會再加上額外區段。但目前大多數在 Windows 開發視窗程式,不少人使用了 VC / BCB 這兩套,VC 本身之 IDE 便據資源編輯器之功能,所以用 VC 開啟 *.rc 時,正常都是顯示一些 Menu、Bitmap、Icon、Dialog 之類的資源檔 (BCB 沒用過,但有間公司自稱 Borland 這堆委其開發,估 Borland 資源編輯器也是做在 IDE 裡面)。
但這份 *.rc 本身並不據任何意義,它必須還要使用另一套 resource compiler ,目前 resource compiler 在 VC 下為 RC.exe ( bcb 似乎叫 BRCC32.exe),將 *.rc compile 成 *.res,如
RC.exe hello.rc
將生成 hello.res,而要再將 hello.c 編成 hello.exe 時
CL.exe hello.c hello.res user32.lib
方可順利生成 hello.exe。
接下來便是問題所在了,這些動作如何在 gcc 底下執行?或,有免費 IDE 提供這些功能?
1. Resource Editor:有 Resource Editor ,free software,但可能要注意語言問題。
2. Resource Compiler:目前不確定有沒有 free software,但在安裝 Microsoft SDK 時,有提供 RC.exe。
3. Resource Linker : 目前也不知道在 gcc 或其他 compiler 下是否提供 .res 連結之語法。
有機會摸到時,再將 2.3 點補上。先說 gcc 常見一問題,
compile 出 WinMain 之程式,都會再有一 console 視窗,該如何解決?
有一說,將 SDK 裡之 user32.lib, gdi32.lib, kernel32.lib 改成
libuser32.a , libgui32.a, libkernel32.a,放到 C:\MinGW\lib 底下便可。
但我試的結果和這沒差,C:\MinGW\lib 本身就有 libuser32.a , libgui32.a, libkernel32.a,
(雖內容不一樣),改編譯參數
gcc.exe hello.c mwindows -o hello.exe
這樣執行檔便不會有 console 視窗。