天天看點

巧用VC工程下的rc檔案

  縱觀真個的VC工程,這裡指那些包含界面的VC工程。主要由三方面構成,算法,資源,以及對資源的調用。算法是整個程式的核心,資源包含一些在算法中可能會用到的資料(二進制)和一些UI方面的顯示效果資源。而對資源的調用則是利用開發工具提供的一套标準API(如Win32 API) 對你資源的調用來完成對資源的操作。

    今天在這裡,我主要是想結合自己對資源這一塊的一些體會與大家交流交流。不足之處請高手指出,以便改正。

    所謂資源,我們首先應該想到的是程式中的rc檔案,按說對資源的操作應該是操作這個檔案的事情,可惜的是,自從微軟提供了開發向導以後,大家都偏向于使用程式向導來完成一些資源的添加,修改,尺寸設定以及layout的工作,包括我自己,應該這實在是太友善了。但是萬物有其利的一面,必然有其害的一面,這導緻了大家對資源本身的了解較少,造成了除了向導外就不知是以然的結果。我周邊就有人常問我同一個問題,問什麼我在資源中點選右鍵添加一個Dialog後,總是預設的名字IDD_DIALOG1,我說這不就是個資源ID嗎,你在ID屬性中将它的名字改該就是。好的,Dialog的問題搞定了。接着,他在工程中添加了一個自定義的資源(費了好一翻勁),同樣他加了一個資源,同樣點右鍵,這時,沒有屬性選項了,傻眼了。其實,這些問題都可以通過在rc檔案中操作,既然它們都是資源,那麼這些定義都是在rc檔案中定義的,你利用向導做的這些工作,隻是微軟幫你把它寫進了rc檔案之中了。那麼你要是碰到了問題,自己進入rc檔案中看看究竟不是很好嗎。因為那才是資源的源頭。

    好像今天時間不夠了,馬上下班。下次接着寫關于利用rc檔案實作控件大小的調整和layout以及如何在rc中添加系統資源和自定義資源,而完全可以脫離向導,就像平時寫文檔一樣。

接着上一次的關于資源檔案(rc檔案)繼續說,這裡主要說兩個内容。

一 利用rc檔案進行界面的布局

   打開一個資源檔案,如FHRDemo.rc,右鍵選擇檢視代碼,可以看到文本描述的資源檔案,這裡截取其中的一段。

// Dialog

//

IDD_ABOUTBOX DIALOGEX 0, 0, 235, 55

STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU

CAPTION "About FHRDemo"

FONT 8, "MS Shell Dlg", 0, 0, 0x1

BEGIN

    ICON            IDR_MAINFRAME,IDC_STATIC,11,17,20,20

    LTEXT           "FHRDemo Version 2.0",IDC_STATIC,40,10,119,8,SS_NOPREFIX

    LTEXT           "Copyright (C) 2007",IDC_STATIC,40,25,119,8

    DEFPUSHBUTTON   "OK",IDOK,178,7,50,16,WS_GROUP

END

IDD_FHRDEMO_FORM DIALOGEX 0, 0, 286, 211

STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD

FONT 8, "MS Shell Dlg", 0, 0, 0x1

BEGIN

    LTEXT           "",IDC_STATIC_INPUT_AREA,64,0,174,208,NOT WS_VISIBLE | WS_BORDER

    PUSHBUTTON      "0",IDC_BUTTON_HIT0,0,0,63,22

    PUSHBUTTON      "2",IDC_BUTTON_HIT2,0,43,63,21

    PUSHBUTTON      "1",IDC_BUTTON_HIT1,0,22,63,21

    PUSHBUTTON      "3",IDC_BUTTON_HIT3,0,64,63,21

    PUSHBUTTON      "5",IDC_BUTTON_HIT5,0,106,63,21

    PUSHBUTTON      "6",IDC_BUTTON_HIT6,0,127,63,21

    PUSHBUTTON      "7",IDC_BUTTON_HIT7,0,147,63,21

    PUSHBUTTON      "8",IDC_BUTTON_HIT8,0,168,63,21

    PUSHBUTTON      "4",IDC_BUTTON_HIT4,0,85,63,21

    PUSHBUTTON      "9",IDC_BUTTON_HIT9,1,189,62,21

    PUSHBUTTON      "Clear",IDC_CLEAR,238,37,45,34

    PUSHBUTTON      "Exit",IDC_EXIT,238,173,46,34

    PUSHBUTTON      "Revert",IDC_REVERT,238,71,45,33

    PUSHBUTTON      "Options",IDC_OPTIONS,238,136,45,36

    PUSHBUTTON      "Mouse",IDC_SWITCH,238,104,45,32

    PUSHBUTTON      "Recognition",IDC_RECOGNITION,238,0,45,37

END

這裡,可以看到,上面對資源的描述包含了兩個對話框,一個是IDD_ABOUTBOX,另外一個是IDD_FHRDEMO_FORM。第一個對話框的大小描述是(0,0,235,55),這四個的意思是: 第一個0是表示該控件的X的最左的坐标,第二個0是Y方向的最上面的坐标。 而235代表X方向的寬度,而55是代表Y方向的高度。接下來是STYLE: 緊跟後面的是該對話框的style。 再接下來是該對話框的font及其他一些資訊。在BEGIN和END之間的是列舉該對話框中所有的控件以及這些 都是一些什麼控件及控件的尺寸和caption.

有了這些以後,我們就可以完全在這上面對它進行改動來完成對界面的風格和尺寸的一些改動。而無需再依靠向導了,并且這個比向導要靈活很多。當然,一開始可能會出現錯誤!!

二 利用rc檔案添加自定義資源 

這個就更加簡單了,無需向導中那麼的複雜步驟,且容易出現像我上面一篇文章說的那麼多問題,如改名字不容易。這裡,如果利用rc檔案的話,就隻需要一行就全部搞定。

MYSKIN22                MIAOWEI                 "res\\shapedemo.smf"

其中, MYSKIN22是建立資源的名字,在向導中是“建立”功能。MIAOWEI是資源名字,這個在向導中有個預設名字,有點搞的。而最後面的就不用說了,是該資源的路徑。一般放在res檔案夾下。我們隻要在res檔案夾中放入這個資源就可以了。這時,儲存rc檔案,然後重新在資源視圖中去看看,可以發現,我們已經完成了向導中需要一系列操作的工作了。

好了,又要下班了,就算結束吧。

老樣子,有問題,歡迎讨論。

繼續閱讀