日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

资源文件相关学习总结

發(fā)布時間:2025/4/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 资源文件相关学习总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

windows資源文件(.rc)是如何變成窗口控件的



? ? 在Visual C++使用資源來創(chuàng)建對話框,菜單,以及一些自定義控件,實際是為了減少基于Win32 SDK


編程開發(fā)人員在編寫Application時創(chuàng)建大量窗口,和控件(實際上也是窗口)的痛苦(大量使用


CreateWindow,還要設(shè)置其中的參數(shù),有些參數(shù),初始化顯示位置X, Y,窗口(或控件)的寬度和高度等


,使用CreateWindow來設(shè)置非常不直觀,只能憑經(jīng)驗來設(shè)置合理的位置和大小)。


? ? 如下圖所示,倘若我們用編程的方式來實現(xiàn)如下對話框,肯定是可以的但是太麻煩了,這個對話框


有好多個控件和資源,如:菜單,組合框,文本輸入框,按鈕,同時還要設(shè)置這些控件自身的若干個性


質(zhì),還有對話框本身的許多性質(zhì),非常麻煩,使用資源這一概念,則大大簡化了我們的編程,我們可以


使用,可視化的工具,來編輯這些窗口和控件。


/
//
// Dialog
//
MYDIALOG DIALOG DISCARDABLE ?0, 0, 200, 126
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Dialog"
MENU IDM_MENU
FONT 10, "System"
BEGIN
? ? DEFPUSHBUTTON ? "計算圓的面積",IDOK,133,56,57,14
? ? EDITTEXT ? ? ? ?IDC_EDIT1,54,38,40,14,ES_AUTOHSCROLL
? ? GROUPBOX ? ? ? ?"請輸入圓的直徑",IDC_STATIC,16,22,111,40
? ? EDITTEXT ? ? ? ?IDC_EDIT2,54,86,40,14,ES_AUTOHSCROLL
? ? GROUPBOX ? ? ? ?"圓的面積:",IDC_STATIC,16,71,110,40
END


/
//
// Menu
//
IDM_MENU MENU
BEGIN
? ? POPUP "&File"
? ? BEGIN
? ? ? ? MENUITEM "&Open", ? ? ? ? ? ? ? ? ? ? ? IDM_FILE_OPEN
? ? ? ? MENUITEM "&New", ? ? ? ? ? ? ? ? ? ? ? ?IDM_FILE_NEW
? ? END
? ? POPUP "&Edit"
? ? BEGIN
? ? ? ? MENUITEM "&Cut", ? ? ? ? ? ? ? ? ? ? ? ?IDM_EDIT_CUT
? ? ? ? MENUITEM "C&opy", ? ? ? ? ? ? ? ? ? ? ? IDM_EDIT_COPY
? ? ? ? MENUITEM "&Paste", ? ? ? ? ? ? ? ? ? ? ?IDM_EDIT_PASTE
? ? END
? ? POPUP "&Help"
? ? BEGIN
? ? ? ? POPUP "&View"
? ? ? ? BEGIN
? ? ? ? ? ? MENUITEM "Content1", ? ? ? ? ? ? ? ? ? ?IDM_VIEW_CONTENT1
? ? ? ? ? ? MENUITEM "Context2", ? ? ? ? ? ? ? ? ? ?IDM_VIEW_CONTEXT2
? ? ? ? END
? ? END
END
? ? 使用Visual C++中自帶的資源編輯器實際上就是創(chuàng)建一個資源描述文件(.rc文件)該文件中記錄了


我們通過可視化工具來“創(chuàng)建”(實際上只是一個可視化表現(xiàn)而已,正真的窗口和控件的創(chuàng)建是在


Application使用該資源時)的窗口和控件的大量參數(shù),這些參數(shù)將有操作系統(tǒng)來維護,當我們的


Application需要資源時,由操作系統(tǒng)根據(jù)這些參數(shù)來創(chuàng)建窗口和控件。


? ? 但是有一個問題:這些窗口和控件都是由系統(tǒng)幫我們創(chuàng)建的,所以我們無法直接獲得它們的句柄


(Handle),這樣我們就沒有辦法使用許多SDK API來和這些窗口及控件來交互(如像:我們打算向上圖


所示的對話框中的文本輸入框發(fā)送一條WM_GETTEXT消息來獲得當前文本框的內(nèi)容,這是就需要知道該文


本輸入框控件的窗口句柄(因為要使用SendMessage函數(shù),該函數(shù)的第一個參數(shù)就是,目的窗口的句柄)


),為了解決這個問題,Windows采用了一種控件ID的策略,控件ID:唯一地標示了一個窗口或控件,它


(控件ID)是由我們(Programer)來設(shè)置的,這些控件ID,系統(tǒng)當然也是可見的,當系統(tǒng)創(chuàng)建控件時,


系統(tǒng)將這些ID和其所對應(yīng)的窗口的句柄(因為是系統(tǒng)創(chuàng)建的窗口,系統(tǒng)當然應(yīng)該維護著這些窗口的句柄


)一一對應(yīng)起來,這樣當我們的Application需要,某一個控件的句柄時就可以使用,一個約定好的API


來通過控件ID來查詢其對應(yīng)的句柄,這個API就是HWND WINAPI GetDlgItem(__in_opt HWND hDlg, __in?


int nIDDlgItem);這個API的第一個參數(shù),要求我們傳入,我們所要查詢的控件屬于哪一個窗口(實際上


就是父窗口(常常是對話框)句柄,想一下該句柄如何得來,狠簡單啊,少年,我們在使用對話框的時


候,肯定注冊了對話框窗口過程


INT_PTR WINAPI DialogBox(
? __in_opt ?HINSTANCE hInstance,
? __in ? ? ?LPCTSTR lpTemplate,
? __in_opt ?HWND hWndParent,
? __in_opt ?DLGPROC lpDialogFunc
);


注意第四個參數(shù),實際上就是對話框窗口過程
INT_PTR CALLBACK DialogProc(
? __in ?HWND hwndDlg,
? __in ?UINT uMsg,
? __in ?WPARAM wParam,
? __in ?LPARAM lParam
);


注意第一個參數(shù),這就是對話框的句柄啊,所以,可以在處理WM_COMMAND等消息的時候可以直接使用它
,以及要查詢的控件ID,就可以得到該控件的句柄了,這樣就可以調(diào)用大量的API函數(shù)來和控件進行交互


了!!!!!
?
另一個API
int WINAPI GetDlgCtrlID(
? __in ?HWND hwndCtl
);
========

?rc,res,resx

http://blog.csdn.net/dadahacker/article/details/5525853
??
rc是windows窗體程序資源文件(文本)


.res是2進制資源文件 是.rc編譯成的


.resx 資源文件格式由 XML 項組成,這些 XML 項指定 XML 標記內(nèi)的對象和字符串。.resx 文件的一個


優(yōu)點在于,當用文本編輯器(例如記事本或 Microsoft Word)打開此類文件時,可以對其進行寫入、分


析和操縱。查看 .resx 文件時,如果嵌入對象(如圖片)的二進制格式是資源清單的一部分,則可以實


際看見此二進制信息。除了此類二進制信息之外,.resx 文件是完全可讀和可維護的。
======== 《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的资源文件相关学习总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。