• <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ù)  更多評論
              
            久久精品亚洲福利| 狠色狠色狠狠色综合久久| 色综合久久中文综合网| 亚洲AV成人无码久久精品老人| 四虎影视久久久免费观看| 亚洲AV伊人久久青青草原| 久久人人爽人人爽人人片AV麻豆| 国产精品美女久久久久AV福利 | 青青青青久久精品国产h久久精品五福影院1421 | 久久久久人妻一区精品| 久久精品人妻一区二区三区| 91精品国产综合久久香蕉| 欧美久久综合九色综合| 久久国产AVJUST麻豆| 久久久久久精品免费看SSS| 亚洲综合伊人久久大杳蕉| 无码人妻少妇久久中文字幕蜜桃 | 国内精品伊人久久久久av一坑| 久久天天躁狠狠躁夜夜躁2O2O| 国产一区二区三区久久| 久久精品18| 色综合久久无码中文字幕| 国产精品久久久久久| 久久久久香蕉视频| 久久午夜羞羞影院免费观看| 老司机国内精品久久久久| 一本久久a久久精品综合香蕉| 久久综合狠狠综合久久综合88| 曰曰摸天天摸人人看久久久| 久久国产亚洲精品| 国产精品一久久香蕉国产线看| 久久亚洲国产精品五月天婷| 久久无码人妻一区二区三区| 久久婷婷五月综合成人D啪| 久久精品毛片免费观看| 久久男人AV资源网站| 久久精品亚洲一区二区三区浴池| 欧美精品福利视频一区二区三区久久久精品| 亚洲精品乱码久久久久久自慰| 狠狠久久综合| 久久精品国产精品国产精品污|