亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 03.3.2 在窗口中顯示按鈕(2).txt

?? 網(wǎng)上第一本以TXT格式的VC++深入詳解孫鑫的書.全文全以TXT格式,并每一章節(jié)都分了目錄,清晰易讀
?? TXT
字號:
根據(jù)運行結(jié)果,我們可以看到該按鈕顯示在工具欄上了,這是因為按鈕當(dāng)前的父窗口是CMainFrame類窗口,即主框架窗口。該窗口中,標(biāo)題欄和菜單都位于非客戶區(qū),而工具欄位于它的客戶區(qū)(關(guān)于窗口的客戶區(qū)和非客戶區(qū)的內(nèi)容將在下一章講解)。我們程序中的按鈕是在主框架窗口的客戶區(qū)出現(xiàn)的,并且其位置由CRect(0,0,100,100)參數(shù)指定,說明其左上角就是其父窗口客戶區(qū)的(0,0)點,因此,該按鈕就在程序的菜單下、工具欄上顯示出來了。 

讀者可以設(shè)想一下,如果我們改在CTestView類中創(chuàng)建這個按鈕,會是什么樣的結(jié)果呢?首先,我們把CMainFrame中創(chuàng)建按鈕的代碼(即上述例3-25所示代碼中第1行和第2行代碼)注釋起來,然后為CTestView類定義一個CButton類型的成員變量m_btn。但是接下來,我們發(fā)現(xiàn)CTestView類中沒有OnCreate函數(shù)。我們知道,Windows下的程序都是基于消息的,無論MFC程序,還是SDK程序都是這樣的。既然窗口在創(chuàng)建時都會產(chǎn)生一個WM_CREATE消息,那么就可以讓CTestView響應(yīng)這個消息,也就是為這個類添加WM_CREATE消息的處理函數(shù)。

在VC++中,為一個類添加某個消息的處理函數(shù)的方法是:在ClassView標(biāo)簽頁上,在該類名上單擊右鍵,從彈出的快捷菜單上選擇【Add Windows Message Handler…】菜單命令,這時將彈出如圖3.27所示的添加消息處理函數(shù)的窗口。



圖3.27  添加消息處理函數(shù)的窗口

在該窗口左邊的Windows消息列表中找到并選中WM_CREATE消息,然后單擊Add Handler按鈕,接著再單擊Edit Existing按鈕,或者在選中需要處理的消息之后,直接單擊Add and Edit按鈕。這時,就為CTestView類添加了WM_CREATE消息的處理函數(shù)OnCreate,并且光標(biāo)將定位于該函數(shù)的定義處。我們就在該函數(shù)的尾部添加顯示按鈕的代碼,與CMainFrame中的代碼相同,可以直接復(fù)制過來,結(jié)果如例3-26所示。

例3-26

int CTestView::OnCreate(LPCREATESTRUCT lpCreateStruct) 

{

    if (CView::OnCreate(lpCreateStruct) == -1)

        return -1;

    

    // TODO: Add your specialized creation code here

    m_btn.Create("按鈕",WS_CHILD | BS_DEFPUSHBUTTON,CRect(0,0,100,100), this,123);

    m_btn.ShowWindow(SW_SHOWNORMAL);

    

    return 0;

}

編譯并運行Test程序,結(jié)果如圖3.28所示。



圖3.28  在視窗口中顯示按鈕

我們可以看到按鈕顯示出來了,但位置發(fā)生了變化。因為這時給按鈕的Create函數(shù)傳遞的this指針指向的是CTestView類的對象,因此,這時按鈕的父窗口就是視類窗口,所以按鈕在視窗口的客戶區(qū)中顯示。如果這時仍想讓按鈕的父窗口為CMainFrame類窗口,即視類窗口的父窗口,可以調(diào)用GetParent函數(shù)來獲得視類的父窗口對象的指針,并將該指針傳遞給按鈕的Create函數(shù)。這時的CTestView類OnCreate函數(shù)定義代碼如例3-27所示。

例3-27

int CTestView::OnCreate(LPCREATESTRUCT lpCreateStruct) 

{

    if (CView::OnCreate(lpCreateStruct) == -1)

        return -1;

    

    // TODO: Add your specialized creation code here

    m_btn.Create("按鈕",WS_CHILD | BS_DEFPUSHBUTTON, CRect(0,0,100,100), GetParent(), 123);

    m_btn.ShowWindow(SW_SHOWNORMAL);

 

    return 0;

}

運行Test程序,讀者會發(fā)現(xiàn)按鈕的位置與在CMainFrame中創(chuàng)建按鈕的位置一樣,可見按鈕的位置與其父窗口有關(guān),而不是與創(chuàng)建它的代碼所在的類有關(guān)。

另外,如果想在創(chuàng)建按鈕之后立即顯示,可以將其窗口風(fēng)格指定為WS_VISIBLE,這時,就不需要再調(diào)用ShowWindow函數(shù)了。即此時按鈕的創(chuàng)建和顯示只需要下面這一條代碼即可:

    m_btn.Create("按鈕",WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, CRect(0,0, 100,100), GetParent(),123);

 

小技巧:Windows中很多函數(shù)名都是一些有意義的單詞的組合,并且每個單詞的首字母大寫。例如,如果想要得到某個類的父窗口,我們可以猜想這個函數(shù)名應(yīng)該是Get再加上ParentWindow這樣的。打開MSDN的索引標(biāo)簽頁,鍵入GetParentWindow,發(fā)現(xiàn)沒有這個函數(shù),但有一個GetParent函數(shù)。打開這個函數(shù),發(fā)現(xiàn)就是我們所要的函數(shù)。在編程時,通過這種方法,可以快速找到所需要的函數(shù)。

本例中,我們選擇的是BS_DEFPUSHBUTTON按鈕風(fēng)格類型,讀者可以試著使用其他類型的風(fēng)格,例如BS_AUTORADIOBUTTON、BS_CHECKBOX等,看看結(jié)果如何。

通過這個CButton對象的創(chuàng)建,希望讀者能更好地理解C++窗口類對象和窗口之間的關(guān)系。當(dāng)我們將按鈕窗口銷毀,它所對應(yīng)的m_btn這個C++對象并沒有銷毀,因為它是CTestView類的一個成員變量,它的生命周期與CTestView對象是一致的。只要CTestView對象沒有銷毀,該按鈕對象就一直存在,在程序中仍可以訪問這個對象。

另外,我們發(fā)現(xiàn)在調(diào)用CButton的ShowWindow函數(shù)時,也沒有傳遞一個窗口句柄,因為CButton類是CWnd類的子類,因此,它已有一個用于保存窗口句柄的成員變量m_hwnd。這樣,CButton的成員函數(shù)可以直接使用這個變量,并不需要再傳遞窗口句柄了。

另一點需要注意的是,按鈕的父窗口不同,其顯示位置也會有所差異。

最后,我們在寫程序時,如果不知道某個函數(shù)的名稱,可以憑感覺利用單詞的組合來拼寫,通過這種方法一般都能在MSDN中找到需要的函數(shù)。

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品中文在线| 色美美综合视频| a级高清视频欧美日韩| 欧美精品自拍偷拍动漫精品| 久久久精品综合| 婷婷久久综合九色综合伊人色| 风间由美一区二区三区在线观看 | www一区二区| 亚洲午夜视频在线| 成人av电影在线观看| 日韩一区二区精品| 亚洲主播在线播放| 99国产麻豆精品| 国产三级精品在线| 久久精品99国产精品日本| 91九色最新地址| 国产精品久久久99| 懂色av一区二区三区蜜臀| 日韩午夜三级在线| 日韩黄色小视频| 欧美性做爰猛烈叫床潮| 亚洲色大成网站www久久九九| 国产激情一区二区三区桃花岛亚洲| 91精品欧美久久久久久动漫| 亚洲福利视频一区| 欧美日韩一本到| 亚洲成av人片一区二区三区| 欧美亚洲愉拍一区二区| 亚洲天堂av一区| 一本到不卡免费一区二区| 1区2区3区精品视频| 97久久超碰国产精品| 亚洲国产高清aⅴ视频| 不卡的电影网站| 亚洲欧美另类综合偷拍| 色婷婷亚洲婷婷| 亚洲一二三四久久| 欧美日产国产精品| 人禽交欧美网站| 欧美zozozo| 国产成人福利片| 国产精品天天看| 91色九色蝌蚪| 亚洲bt欧美bt精品| 日韩女优电影在线观看| 精品在线免费视频| 久久久久久久免费视频了| 成人av片在线观看| 一区二区三区日韩精品视频| 欧美精品一级二级三级| 久久国产剧场电影| 中文字幕国产精品一区二区| 91在线无精精品入口| 亚洲一区二区三区四区在线| 欧美一区二区三区在线看| 另类的小说在线视频另类成人小视频在线| 精品国产污污免费网站入口 | 久久精品人人做| 91麻豆免费看片| 亚洲成a人v欧美综合天堂| 日韩欧美国产麻豆| 97精品久久久久中文字幕| 亚洲国产精品久久久久婷婷884| 91精品在线麻豆| 成人福利视频在线看| 亚洲第一激情av| 国产欧美一区二区精品秋霞影院 | 成人免费看片app下载| 樱桃视频在线观看一区| 日韩三级视频中文字幕| 成人免费视频网站在线观看| 亚洲第一成人在线| 国产网站一区二区三区| 欧美日韩国产一级| 国产91精品免费| 日本va欧美va欧美va精品| 中文字幕第一区第二区| 欧美一区午夜精品| 波多野结衣中文字幕一区| 日本午夜精品视频在线观看 | 日本道精品一区二区三区| 久久99久久99小草精品免视看| 亚洲欧洲日韩综合一区二区| 日韩天堂在线观看| 91毛片在线观看| 国产一区二区精品久久91| 一区二区激情视频| 欧美激情在线观看视频免费| 6080国产精品一区二区| 99精品黄色片免费大全| 国内成人精品2018免费看| 亚洲18女电影在线观看| 亚洲同性同志一二三专区| 久久免费的精品国产v∧| 欧美一区二区三区系列电影| 色菇凉天天综合网| 97久久精品人人爽人人爽蜜臀| 激情文学综合插| 男人的j进女人的j一区| 夜夜亚洲天天久久| 亚洲欧美日韩精品久久久久| 久久毛片高清国产| 26uuu成人网一区二区三区| 欧美一区二区网站| 欧美日韩精品欧美日韩精品一综合| 91亚洲精品一区二区乱码| 国产精品亚洲综合一区在线观看| 久久精品国内一区二区三区| 亚洲第一在线综合网站| 亚洲一区二区三区四区五区黄| 亚洲男人天堂一区| 日韩理论片网站| 一区二区免费在线| 亚洲一区二区欧美激情| 亚洲黄色在线视频| 亚洲愉拍自拍另类高清精品| 一区二区三区中文字幕精品精品| 久久久精品国产99久久精品芒果| 久久婷婷国产综合精品青草| 2022国产精品视频| 久久精品在这里| 国产精品无遮挡| 中文字幕在线不卡国产视频| 亚洲欧美在线视频| 一区二区三区国产精品| 亚洲国产日韩a在线播放性色| 亚洲国产精品久久一线不卡| 日韩影视精彩在线| 久久99精品久久久久久| 国产一区二区三区四区五区美女| 国产激情一区二区三区桃花岛亚洲| 东方aⅴ免费观看久久av| 成人精品视频.| 色狠狠一区二区三区香蕉| 欧美日韩你懂的| 日韩欧美一二三四区| 久久久久久久国产精品影院| 亚洲图片欧美激情| 午夜av一区二区三区| 国内精品在线播放| 97久久超碰国产精品| 欧美日韩国产小视频| 日韩午夜在线观看视频| 中文字幕精品综合| 亚洲18影院在线观看| 精品一区二区三区不卡| 99热国产精品| 7777精品伊人久久久大香线蕉超级流畅 | 欧美精品一区二区三区高清aⅴ | 久久精品在这里| 综合电影一区二区三区| 一级特黄大欧美久久久| 蓝色福利精品导航| 91在线码无精品| 欧美日韩国产片| 国产欧美视频一区二区三区| 悠悠色在线精品| 激情欧美一区二区三区在线观看| 99re成人精品视频| 日韩丝袜情趣美女图片| 亚洲色图清纯唯美| 极品少妇一区二区三区精品视频| 91免费精品国自产拍在线不卡| 日韩你懂的在线播放| 亚洲综合色成人| 国产成人精品aa毛片| 欧美一区二区三区在线电影| 日韩伦理电影网| 国产精品中文字幕日韩精品| 宅男在线国产精品| 有码一区二区三区| 成人av网站大全| 久久夜色精品国产噜噜av| 亚洲国产日韩综合久久精品| 成人一区二区在线观看| 2023国产精品视频| 日本vs亚洲vs韩国一区三区二区| 色综合天天综合网国产成人综合天| 精品国产一区二区三区久久影院| 亚洲第一主播视频| 91国偷自产一区二区三区成为亚洲经典 | 不卡一区二区三区四区| 欧美精品一区二区三区四区| 亚洲韩国精品一区| 91国产免费看| 亚洲视频在线一区观看| 成人精品国产一区二区4080| 久久精品综合网| 国产精品一卡二| 337p日本欧洲亚洲大胆色噜噜| 日精品一区二区| 欧美精品v日韩精品v韩国精品v| 亚洲激情自拍偷拍| 色噜噜狠狠色综合欧洲selulu| 国产亚洲精品aa| 国产乱码精品一区二区三区av| 日韩视频免费观看高清完整版| 欧美aⅴ一区二区三区视频| 欧美精品在线一区二区| 婷婷综合五月天|