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 視窗。

 

edisonx 發表在 痞客邦 留言(2) 人氣()