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

                在這個封裝的設(shè)計里,雖然TabPage是一個普通的類,但是每一個TabPage都會自動附帶一個Static Control,并在適當(dāng)?shù)臅r機修改大小以及修改可見屬性。子控件實際上需要放在TabPage的Static Control里,不然的話其實可以連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 }

                自動生成、刪除和修改Static的確是比較麻煩的,不過好在API并不會對這些問題的解決施加新的困難。
             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) 評論(2)  編輯 收藏 引用 所屬分類: C++

            評論:
            # re: TabControl封裝完成 2008-08-13 06:37 | Lnn
            good!  回復(fù)  更多評論
              
            # re: TabControl封裝完成 2008-08-13 06:55 | 沈臻豪(foxtail)
            興致勃勃捏你!無語指數(shù)五顆星  回復(fù)  更多評論
              
            久久精品无码专区免费| 久久久久亚洲爆乳少妇无| 亚洲精品国精品久久99热| 欧美综合天天夜夜久久| 国产成人无码久久久精品一| 亚洲人成精品久久久久| 久久午夜综合久久| 欧美国产精品久久高清| 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 国产精品熟女福利久久AV| 国产V亚洲V天堂无码久久久 | 久久亚洲sm情趣捆绑调教| 欧美午夜精品久久久久久浪潮| 麻豆久久| 欧美黑人激情性久久| 久久久精品国产sm调教网站| WWW婷婷AV久久久影片| 夜夜亚洲天天久久| 久久精品视频91| 狠狠色丁香久久婷婷综合蜜芽五月 | 久久99久久99精品免视看动漫| 国产69精品久久久久久人妻精品 | 国产欧美久久久精品影院| 久久久久久综合网天天| 99久久婷婷国产综合亚洲| 国产免费久久久久久无码| 久久笫一福利免费导航| 熟妇人妻久久中文字幕| 97精品国产97久久久久久免费| 三级韩国一区久久二区综合| 亚洲伊人久久精品影院| 9999国产精品欧美久久久久久| 久久久久久久免费视频| 99久久国产热无码精品免费| 久久久不卡国产精品一区二区 | 久久亚洲天堂| 久久这里只有精品18| 久久国产视屏| 丁香狠狠色婷婷久久综合| 久久国产亚洲精品| 久久久久久狠狠丁香|