巧用VC工程下的rc文件(發表時間: 2008-12-30 17:20:00)
【評論】 【打印】 【字體:大 中 小】 本文鏈接:http://blog.pfan.cn/miaowei/40117.html 復制鏈接
標簽: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文件,然后重新在資源視圖中去看看,可以發現,我們已經完成了向導中需要一系列操作的工作了。
好了,又要下班了,就算結束吧。
老樣子,有問題,歡迎討論。