青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 87  文章 - 279  trackbacks - 0
<2006年4月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

潛心看書研究!

常用鏈接

留言簿(19)

隨筆分類(81)

文章分類(89)

相冊

ACM OJ

My friends

搜索

  •  

積分與排名

  • 積分 - 220431
  • 排名 - 118

最新評論

閱讀排行榜

評論排行榜

轉(zhuǎn)自:http://hi.baidu.com/blue_never_died/blog/item/04398694249ef71ed21b7007.html

說實(shí)話,我剛開始看見Tab Control的時(shí)候,覺得很簡單。哪知道用了一下,才發(fā)現(xiàn)自己錯(cuò)了。

要用好它,還是需要一些技巧的。經(jīng)過網(wǎng)上搜索資料,以及我自己的摸索,把一些要點(diǎn)記錄在這里。

Tab Control的運(yùn)行效果有點(diǎn)像Property Sheet,但兩者還是有一些區(qū)別。我的理解就是Property Sheet主要用在對話框中,對數(shù)據(jù)進(jìn)行進(jìn)行分類管理。而Tab Control使用范圍更廣一些,既可以用在對話框,也可以用在視圖中,除了可以管理配置數(shù)據(jù)外,還可以對軟件的組織進(jìn)行規(guī)劃,比如可以通過它來切換不同的視圖等等。

當(dāng)然這不是沒有代價(jià)的,Tab Control的編程就比Property Sheet的復(fù)雜很多。

 我最初有點(diǎn)搞不懂,如何在Tab Control中使用不同的Page,就象Property Page一樣,Tab Control并沒有提供便利的機(jī)制讓你輕松做到這一點(diǎn)。還好,VC是最棒的,撒花~通過變通的方法還是可以做到這一點(diǎn)。

不羅嗦了,上代碼。

假如我現(xiàn)在有個(gè)SDI程序,View是Form View,想在上面放個(gè)Tab Control,包含兩個(gè)Page。現(xiàn)在讓我們來看看應(yīng)該怎樣處理。

首先當(dāng)然要增加一個(gè)Tab Control資源,然后利用Class Wizard,在View中增加一個(gè)Control變量。

接著建立兩個(gè)對話框資源,別忘了把Style改為Child,Border改為None。然后就可以在上面加其他控件了。

接著利用Class Wizard,分別為這兩個(gè)對話框建立兩個(gè)類,比如CPage1和CPage2。

然后在View類頭文件中,加入這兩個(gè)對話框?qū)ο蟆M瑫r(shí)增加一個(gè)變量int m_CurSelTab,用了表明是哪個(gè)Page即將被切換。

為了避免用戶在切換Tab時(shí),程序?qū)ab Index的枚舉,可以利用數(shù)組來做這個(gè)事情。

在View的初始化函數(shù)中需要把CPage1、CPage2和Tab Control關(guān)聯(lián)起來,并保存頁面地址,設(shè)置初始頁面,等等。

void CTab_testView::OnInitialUpdate()
{
   CFormView::OnInitialUpdate();
   GetParentFrame()->RecalcLayout();
   ResizeParentToFit();
    
    //為Tab Control增加兩個(gè)頁面
    m_tab.InsertItem(0, _T("First"));
    m_tab.InsertItem(1, _T("Second"));
   
    //創(chuàng)建兩個(gè)對話框
    m_page1.Create(IDD_DIALOG1, &m_tab);
    m_page2.Create(IDD_DIALOG2, &m_tab);

    //設(shè)定在Tab內(nèi)顯示的范圍
    CRect rc;
    m_tab.GetClientRect(rc);
    rc.top += 20;
    rc.bottom -= 8;
    rc.left += 8;
    rc.right -= 8;

    m_page1.MoveWindow(&rc);
    m_page2.MoveWindow(&rc);

    //把對話框?qū)ο笾羔槺4嫫饋?br>    pDialog[0] = &m_page1;
    pDialog[1] = &m_page2;

    //顯示初始頁面
    pDialog[0]->ShowWindow(SW_SHOW);
    pDialog[1]->ShowWindow(SW_HIDE);

    //保存當(dāng)前選擇
    m_CurSelTab = 0;
}

這里面需要注意的是,我用了一個(gè)CDialog指針數(shù)組來進(jìn)行保存,數(shù)組的大小是Tab Control頁面的個(gè)數(shù),數(shù)組下標(biāo)對應(yīng)著每個(gè)頁面的索引(這樣方便快速存取)。

用戶切換時(shí),需要響應(yīng)相關(guān)的消息。

void CTab_testView::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult)
{
 // TODO: Add your control notification handler code here
   
    pDialog[m_CurSelTab]->ShowWindow(SW_HIDE);
    m_CurSelTab = m_tab.GetCurSel();
    pDialog[m_CurSelTab]->ShowWindow(SW_SHOW);

 *pResult = 0;
}

首先我們先把當(dāng)前的頁面隱藏起來,然后得到新的頁面索引,最后就把相關(guān)頁面顯示出來即可。這比一個(gè)個(gè)去枚舉簡單多了。

還有一點(diǎn)比較有意思,那就是DDX/DDV機(jī)制的運(yùn)用。要想獲得Tab Control各個(gè)頁面的數(shù)據(jù),可以利用DDX/DDV機(jī)制,但需要注意,因?yàn)檫@是多個(gè)頁面,所以需要顯式調(diào)用多次。

void CTab_testView::OnButton1()
{
 // TODO: Add your control notification handler code here
    m_page1.UpdateData();
    m_page2.UpdateData();
    CString str1 = m_page1.m_str1;
    CString str2 = m_page2.m_str2;
    AfxMessageBox(str1);
    AfxMessageBox(str2);
}

經(jīng)過這幾步處理,基本上我們就可以利用Tab Control的強(qiáng)大功能了。

posted on 2007-09-25 23:37 閱讀(3448) 評論(0)  編輯 收藏 引用 所屬分類: MFC

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品九色蝌蚪自拍| 亚洲麻豆一区| 在线性视频日韩欧美| 亚洲激情网址| 一本到12不卡视频在线dvd| 日韩视频在线观看一区二区| 一区二区三区免费观看| 亚洲一区二区三区免费在线观看| 亚洲一区www| 香蕉成人啪国产精品视频综合网| 欧美一区二区三区四区在线| 欧美aⅴ99久久黑人专区| 亚洲国产老妈| 亚洲国产精品一区在线观看不卡 | 亚洲一区制服诱惑| 亚洲男人天堂2024| 久久久久青草大香线综合精品| 久久精品视频免费播放| 欧美极品在线视频| 国产欧美日韩综合一区在线观看| 在线电影一区| 欧美 日韩 国产一区二区在线视频| 欧美一区2区视频在线观看| 99ri日韩精品视频| 亚洲综合视频一区| 久久久久久电影| 亚洲高清视频一区| 亚洲伊人伊色伊影伊综合网 | 亚洲人成在线免费观看| 亚洲综合视频网| 欧美成人性生活| 亚洲免费在线电影| 欧美激情精品久久久久| 国产亚洲欧洲| 亚洲一区在线视频| 美女尤物久久精品| 午夜综合激情| 欧美日韩中文字幕在线视频| 久久久亚洲高清| 国产一区二区久久| 亚洲高清影视| 午夜精品久久久| 欧美激情乱人伦| 欧美一区二区大片| 欧美日韩成人一区二区三区| 精品成人国产| 欧美一区二区三区视频免费播放 | 欧美日韩dvd在线观看| 一区二区三区中文在线观看| 午夜欧美大尺度福利影院在线看 | 亚洲精品日韩激情在线电影 | 国产欧美日韩综合| 亚洲女人天堂成人av在线| 91久久久久久| 欧美激情视频给我| 亚洲国产精品悠悠久久琪琪| 久久综合色8888| 久久国产天堂福利天堂| 国产网站欧美日韩免费精品在线观看 | 夜夜嗨av一区二区三区免费区| 欧美jjzz| 亚洲精品久久久久久一区二区| 欧美成人伊人久久综合网| 欧美在线|欧美| 国产在线乱码一区二区三区| 欧美在线综合视频| 欧美一区二区三区四区在线观看| 国产精品日本一区二区| 亚洲在线第一页| 亚洲免费在线视频一区 二区| 国产精品一区二区你懂得 | 激情成人中文字幕| 久久久久国内| 久久综合五月天婷婷伊人| 一区福利视频| 亚洲国产精品成人一区二区| 欧美国产日韩精品| 亚洲小视频在线观看| 亚洲视频在线视频| 国产视频在线观看一区| 狼人天天伊人久久| 欧美韩日高清| 亚洲欧美日韩电影| 久久国产精品网站| 亚洲精品美女在线| 一本色道久久综合亚洲精品高清| 国产欧美一区二区三区沐欲| 另类人畜视频在线| 欧美日韩成人在线视频| 欧美亚洲自偷自偷| 久久夜色精品国产| 亚洲一区二区三区在线| 午夜在线观看欧美| 亚洲人精品午夜| 羞羞色国产精品| 亚洲欧洲另类| 亚洲男人的天堂在线| 在线看日韩av| 国产精品99久久久久久www| 狠狠88综合久久久久综合网| 亚洲精品日韩综合观看成人91| 国产麻豆综合| 亚洲福利国产精品| 国产精品午夜在线观看| 亚洲国产合集| 在线视频日韩| 欧美日韩视频| 亚洲图片在线观看| 欧美一区二区三区另类| 亚洲国产精品免费| 亚洲欧美欧美一区二区三区| 亚洲国产精品久久久久婷婷老年 | 日韩一二在线观看| 亚洲国产另类久久精品| 亚洲欧美中文日韩在线| 亚洲麻豆av| 久久久久久久尹人综合网亚洲| 亚洲综合清纯丝袜自拍| 免播放器亚洲| 美日韩精品视频| 国产一区二区在线观看免费| 一区二区三区黄色| 中文国产一区| 欧美日韩国产不卡在线看| 欧美顶级少妇做爰| 伊人久久亚洲热| 久久亚洲精选| 蜜臀久久久99精品久久久久久| 黑人中文字幕一区二区三区| 欧美一区二区成人| 久久av免费一区| 国产欧美韩国高清| 午夜精品一区二区三区在线| 欧美一区=区| 国产字幕视频一区二区| 亚久久调教视频| 老色批av在线精品| 在线播放日韩| 蜜桃av一区二区三区| 欧美高清视频一区二区| 亚洲国产经典视频| 欧美精品三级在线观看| 亚洲国产三级在线| 夜夜嗨av一区二区三区四区| 欧美日韩久久久久久| 亚洲免费电影在线| 亚洲男女自偷自拍图片另类| 国产精品一区免费观看| 久久国产视频网站| 亚洲国产精品小视频| 亚洲性线免费观看视频成熟| 国产精品免费视频xxxx| 小黄鸭精品密入口导航| 蜜臀91精品一区二区三区| 亚洲欧洲日韩综合二区| 欧美精品观看| 亚洲一区二区三区乱码aⅴ| 久久久999精品免费| 亚洲第一精品夜夜躁人人躁| 欧美精品国产| 羞羞答答国产精品www一本| 欧美高清视频一区| 亚洲欧美日韩另类精品一区二区三区| 国产乱码精品一区二区三区av| 久久国产综合精品| 亚洲精品久久久久中文字幕欢迎你 | 久久精品动漫| 欧美激情国产日韩| 欧美一区二区黄| 国产精品久久久久久久午夜 | 宅男66日本亚洲欧美视频| 国产欧美日韩专区发布| 女人色偷偷aa久久天堂| 一区二区欧美激情| 久久一二三区| 亚洲网站视频| 亚洲春色另类小说| 国产精品成人观看视频免费| 久久国产精品久久久久久电车| 老巨人导航500精品| 亚洲一区精品电影| 欲色影视综合吧| 国产精品视频不卡| 欧美va亚洲va日韩∨a综合色| 亚洲欧美日韩一区| 亚洲日本欧美在线| 久久夜色精品国产欧美乱极品| 亚洲午夜极品| 日韩视频免费大全中文字幕| 在线观看三级视频欧美| 国产精品色一区二区三区| 欧美日韩国产黄| 蜜臀a∨国产成人精品| 久久www成人_看片免费不卡| 亚洲先锋成人| 一区二区三区免费网站| 亚洲激情视频网站| 欧美成人久久| 久久夜色精品国产亚洲aⅴ| 久久福利视频导航|