• <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>
            隨筆-341  評(píng)論-2670  文章-0  trackbacks-0
                原來API提供的TabControl只是改改樣式而已,客戶區(qū)連TabPage標(biāo)簽也算在了里面,點(diǎn)擊不同的TabPage也不會(huì)自動(dòng)切換子控件的可見屬性。這些都要封裝啊囧……

                在這個(gè)封裝的設(shè)計(jì)里,雖然TabPage是一個(gè)普通的類,但是每一個(gè)TabPage都會(huì)自動(dòng)附帶一個(gè)Static Control,并在適當(dāng)?shù)臅r(shí)機(jī)修改大小以及修改可見屬性。子控件實(shí)際上需要放在TabPage的Static Control里,不然的話其實(shí)可以連TabPage標(biāo)簽都擋掉。

             1 #include "..\..\..\..\VL++\Library\Windows\VL_WinGUI.h"
             2 #include "..\..\..\..\VL++\Library\Data\VL_System.h"
             3 
             4 using namespace vl;
             5 using namespace vl::windows;
             6 using namespace vl::system;
             7 
             8 class MyForm : public VL_WinForm
             9 {
            10 protected:
            11     VL_WinTab*                    FTab;
            12     VUnicodeString                FBitmapPath;
            13     VL_WinImageList*            FSmallImages;
            14 
            15     void InitControls()
            16     {
            17         FBitmapPath=VFileName(GetApplication()->GetAppName()).GetPath().MakeAbsolute(L"..\\..\\Views\\Bitmap\\").GetStrW();
            18         FSmallImages=new VL_WinImageList(16,16);
            19         for(VInt i=0;i<4;i++)
            20         {
            21             FSmallImages->Add(new VL_WinBitmap(FBitmapPath+L"s"+VUnicodeString(i)+L".bmp",true,true));
            22         }
            23 
            24         FTab=new VL_WinTab(this);
            25         GetPlacement()->SetBorderSize(10);
            26         GetPlacement()->SetControl(FTab);
            27         FTab->SetImageList(FSmallImages);
            28         FTab->AddPage(L"Add Table").SetImageIndex(0);
            29         FTab->AddPage(L"Arrange Windows").SetImageIndex(1);
            30         FTab->AddPage(L"Remove Table").SetImageIndex(2);
            31         FTab->AddPage(L"Graph").SetImageIndex(3);
            32 
            33         for(VInt i=0;i<FTab->GetPageCount();i++)
            34         {
            35             VL_WinTabPage Page=FTab->GetPage(i);
            36             VL_WinEdit* Edit=new VL_WinEdit(Page,true);
            37             Page.GetPlacement()->SetControl(Edit);
            38             Edit->SetHScroll(true);
            39             Edit->SetVScroll(true);
            40             Edit->Move(0,0,Page.GetClientWidth(),Page.GetClientHeight());
            41             Edit->SetText(L"This is a multiple line edit box in tag page "+VUnicodeString(i+1)+L".");
            42         }
            43         FTab->SetSelectedPage(FTab->GetPage(3));
            44     }
            45 
            46 public:
            47 
            48     MyForm():VL_WinForm(true)
            49     {
            50         SetClientWidth(400);
            51         SetClientHeight(400);
            52         SetText(L"Vczh Form");
            53         MoveCenter();
            54         InitControls();
            55         Show();
            56     }
            57 
            58     ~MyForm()
            59     {
            60         delete FSmallImages;
            61     }
            62 };
            63 
            64 void main()
            65 {
            66     new MyForm;
            67     GetApplication()->Run();
            68 }

                自動(dòng)生成、刪除和修改Static的確是比較麻煩的,不過好在API并不會(huì)對(duì)這些問題的解決施加新的困難。
             1     VL_WinTabPage VL_WinTab::AddPage(VUnicodeString Text)
             2     {
             3         return InsertPage(GetPageCount(),Text);
             4     }
             5 
             6     VL_WinTabPage VL_WinTab::InsertPage(VInt Index , VUnicodeString Text)
             7     {
             8         TCITEM Item;
             9         memset(&Item,0,sizeof(Item));
            10         Item.mask=TCIF_TEXT;
            11         Item.pszText=Text.Buffer();
            12         Index=TabCtrl_InsertItem(FHandle,Index,&Item);
            13         if(Index==-1)
            14         {
            15             return VL_WinTabPage();
            16         }
            17         else
            18         {
            19             RECT Rect;
            20             GetClientArea(&Rect);
            21             VL_WinStatic* Static=new VL_WinStatic(this);
            22             FTabContainers.Insert(Index,Static);
            23             ResetTopTabContainer();
            24             ArrangeTabContainers();
            25             return VL_WinTabPage(FHandle,Index,Static);
            26         }
            27     }
            28 
            29     void VL_WinTab::DeletePage(VInt Index)
            30     {
            31         if(Index>=0 && Index<GetPageCount())
            32         {
            33             if(TabCtrl_DeleteItem(FHandle,Index)==TRUE)
            34             {
            35                 delete FTabContainers.Fetch(Index);
            36                 ArrangeTabContainers();
            37             }
            38         }
            39     }
            40 
            41     VL_WinTabPage VL_WinTab::GetPage(VInt Index)
            42     {
            43         if(Index>=0 && Index<GetPageCount())
            44         {
            45             return VL_WinTabPage(FHandle,Index,FTabContainers[Index]);
            46         }
            47         else
            48         {
            49             return VL_WinTabPage();
            50         }
            51     }
            52 
            53     VInt VL_WinTab::GetPageCount()
            54     {
            55         return TabCtrl_GetItemCount(FHandle);
            56     }
            posted on 2008-08-13 06:33 陳梓瀚(vczh) 閱讀(1713) 評(píng)論(2)  編輯 收藏 引用 所屬分類: C++

            評(píng)論:
            # re: TabControl封裝完成 2008-08-13 06:37 | Lnn
            # re: TabControl封裝完成 2008-08-13 06:55 | 沈臻豪(foxtail)
            興致勃勃捏你!無語指數(shù)五顆星  回復(fù)  更多評(píng)論
              
            久久精品国产精品亚洲精品| 久久亚洲中文字幕精品一区| 亚洲国产成人精品久久久国产成人一区二区三区综 | 人人狠狠综合久久亚洲| 国产成人久久精品激情| 欧美一区二区三区久久综合 | 亚洲精品乱码久久久久久蜜桃| 日本久久久久久中文字幕| 97精品国产91久久久久久| 久久精品aⅴ无码中文字字幕重口| 久久综合鬼色88久久精品综合自在自线噜噜 | 99久久人妻无码精品系列| 久久精品国产亚洲av影院| 久久精品国产亚洲AV高清热| 97久久超碰国产精品2021| 久久99国产综合精品免费| 久久99热狠狠色精品一区| 99久久精品日本一区二区免费| 国产精品一久久香蕉国产线看观看| 精品国际久久久久999波多野| 久久丫精品国产亚洲av| 国产精品久久久福利| 国产99久久久久久免费看 | 少妇被又大又粗又爽毛片久久黑人| 久久强奷乱码老熟女网站| 思思久久好好热精品国产 | 久久亚洲春色中文字幕久久久 | 亚洲午夜久久久久妓女影院| 91精品国产综合久久四虎久久无码一级 | 国产一区二区三区久久| 日本精品久久久久中文字幕8 | 思思久久99热只有频精品66| 天天躁日日躁狠狠久久 | 99久久做夜夜爱天天做精品| 国产精品久久新婚兰兰| 国产成人久久精品一区二区三区| 国产精品久久久99| 久久人人爽人人爽人人片AV东京热| 久久精品国产亚洲AV无码娇色 | 久久se这里只有精品| 久久无码国产专区精品|