資源描述:
《如何修改vc工程的對(duì)話框類名》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、Cheny2012-02-18目的:Windows操作系統(tǒng)中有一個(gè)概念——窗口類。窗口類是抽象的,它可以有很多窗口實(shí)例,即HWND/CWnd。在一個(gè)程序中,你可以定制并注冊(cè)一個(gè)窗口類,然后用它創(chuàng)建窗口,也可以直接用已經(jīng)注冊(cè)的窗口類創(chuàng)建我們的窗口。為了減輕我們的編程負(fù)擔(dān),也為了隱藏具體的實(shí)現(xiàn),MFC已經(jīng)為我們定制并注冊(cè)了很多窗口類,我們可以直接使用它們。比如:對(duì)話框的窗口類為”#32770”,按鈕的窗口類為”Button”,列表框的窗口類為”ListBox”等等。很多時(shí)候,我們需要用到FindWindow函數(shù)來查找已經(jīng)存在的窗口,然后給它發(fā)送消息?;蛘?/p>
2、查詢系統(tǒng)是否已經(jīng)存在指定的窗口(進(jìn)程),如果存在,我們就不再創(chuàng)建程序的新進(jìn)程,而僅僅是激活它。FindWindow函數(shù)的聲明為:HWNDFindWindow(LPCTSTRlpClassName,//類名LPCTSTRlpWindowName//窗口名);我們可以通過窗口類名(lpClassName)查找,也可以通過窗口標(biāo)題文本(lpWindowName)查找,或者同時(shí)使用。窗口的標(biāo)題文本并不總是十分可靠,很多時(shí)候,它是動(dòng)態(tài)變化的。所以通過窗口類名來查找就很有必要了。方法:那么怎樣把MFC提供給我們的對(duì)話框的默認(rèn)窗口類名“#32770“改成我們程序特
3、有的呢?以下是更改步驟:1.打開工程的資源視圖2.更改對(duì)話框資源的ClassName屬性。有兩種方法:a.第一種方法:在需要更改類名的對(duì)話框資源上右擊,選擇“屬性”,打開屬性對(duì)話框,可以看到有一個(gè)名為“ClassName”的屬性,我們?cè)谄渲休斎胍粋€(gè)自己定義的名稱(如”MyPrivateClassName”)即可。但是,MFC默認(rèn)設(shè)置這個(gè)屬性選項(xiàng)是灰色不可用的,我們先要開啟它。切換到資源視圖,右擊根節(jié)點(diǎn)(如”XxxXxx.rc”),選屬性,去掉勾選“EnableMFCFeatures”項(xiàng)(如果是VS.Net,把”MFCModeproperty”項(xiàng)改為F
4、alse)。這樣就可以修改對(duì)話框的ClassName屬性了,假如為"MyClassName"。然后在BOOLCXXXXApp::InitInstance()方法的”WNDCLASSwc;”下方加上如下代碼:3Cheny2012-02-18//////////////////////注冊(cè)新類名/////////////////////////////獲取窗口類信息。MFC默認(rèn)的所有對(duì)話框的窗口類名為#32770::GetClassInfo(AfxGetInstanceHandle(),_T("#32770"),&wc);//改變窗口類名wc.lpszC
5、lassName=_T("MyClassName");//注冊(cè)新窗口類,使程序能使用它AfxRegisterClass(&wc);///////////////////////////////////////////////////////////這段代碼必須加上并且需要注冊(cè),要不然程序啟動(dòng)不了。b.另一種方法是:直接用文本編輯器打開資源文件,修改對(duì)話框定義代碼,插入CLASS項(xiàng),如:IDD_LIMITDLGINSTANCE_DIALOGDIALOGEX0,0,195,44STYLEDS_MODALFRAME
6、WS_POPUP
7、WS_VISIBLE
8、
9、WS_CAPTION
10、WS_SYSMENUEXSTYLEWS_EX_APPWINDOWCAPTION"LimitDlgInstance"CLASS"MyPrivateClassName"http://Addyourclassnamehere!FONT8,"MSSansSerif"BEGINDEFPUSHBUTTON"OK",IDOK,138,7,50,14PUSHBUTTON"Cancel",IDCANCEL,138,23,50,14PUSHBUTTON"&Test!",IDC_BUTTON1,48,14,49,15END3.定制并注冊(cè)新窗口類。在應(yīng)用程序類的
11、InitInstance()函數(shù)中添加以下代碼,以注冊(cè)資源文件中用到的新窗口類:3Cheny2012-02-18WNDCLASSwc;//獲取窗口類信息。MFC默認(rèn)的所有對(duì)話框的窗口類名為#32770::GetClassInfo(AfxGetInstanceHandle(),_T("#32770"),&wc);//改變窗口類名wc.lpszClassName=_T("MyPrivateClassName");//注冊(cè)新窗口類,使程序能使用它AfxRegisterClass(&wc);注意:在調(diào)用函數(shù)::GetClassInfo()時(shí),請(qǐng)確保傳入的第一
12、個(gè)參數(shù)HINSTANCE是包含你對(duì)話框資源所在的dll或exe的進(jìn)程實(shí)例。請(qǐng)確保資源中指定的ClassNam