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 發表在 痞客邦 PIXNET 留言(2) 人氣()


留言列表 (2)

發表留言
  • novus
  • 1. gcc 的 resource compiler 名為 windres.exe,我記得是 mingw 預設安裝項目

    2. mwindows 才是正解,那些 xxx.lib 只是對應 dll 的連結介面而已,和命令列視窗無關。

    3. 你可能會有興趣查查 Win32++(win32xx) 這個library,另外也建議你去學一些有自動 layout 能力的 library
  • novus 真是太強了,從這篇文章便知 Win32++ 是我想要的東西。查過,似乎真的是 MFC/BCB 另一替代方案 (重點是 Free-ware),謝謝!

    另想請教的是,「自動layout能力」指的是?

    edisonx 於 2011/12/09 06:30 回覆

  • novus
  • 大部分的 GUI 程式庫都不會要求你針對所有元件一一指定大小、位置,通常他們都會提供一個 layout 機制,你只需要給 layout policy ,那麼所有的東西都會自動調整位置。

    GUI library 很多,你可以多找找,Win32++ 大概是輕量級當中可用性最高的。即使用 resource 和純 API,把常用的東西稍微包裝成可重複使用的物件,程式碼會比較好管理,而且比 MFC 瘦很多。
  • novus 真是我 programming 上之良師,所給的意見查過後都讓我感到為之驚艷,再次感謝您不吝提供方針 :)

    edisonx 於 2011/12/10 00:01 回覆

您尚未登入,將以訪客身份留言。亦可以上方服務帳號登入留言

請輸入暱稱 ( 最多顯示 6 個中文字元 )

請輸入標題 ( 最多顯示 9 個中文字元 )

請輸入內容 ( 最多 140 個中文字元 )

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼

【 X 關閉 】

【PIXNET 痞客邦】國外旅遊調查
您是我們挑選到的讀者!

填完問卷將有機會獲得心動好禮哦(注意:關閉此視窗將不再出現)

立即填寫取消