• <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只是改改樣式而已,客戶區連TabPage標簽也算在了里面,點擊不同的TabPage也不會自動切換子控件的可見屬性。這些都要封裝啊囧……

                在這個封裝的設計里,雖然TabPage是一個普通的類,但是每一個TabPage都會自動附帶一個Static Control,并在適當的時機修改大小以及修改可見屬性。子控件實際上需要放在TabPage的Static Control里,不然的話其實可以連TabPage標簽都擋掉。

             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) 閱讀(1717) 評論(2)  編輯 收藏 引用 所屬分類: C++

            評論:
            # re: TabControl封裝完成 2008-08-13 06:37 | Lnn
            good!  回復  更多評論
              
            # re: TabControl封裝完成 2008-08-13 06:55 | 沈臻豪(foxtail)
            興致勃勃捏你!無語指數五顆星  回復  更多評論
              
            久久久久九九精品影院| 伊人久久大香线蕉亚洲| 久久99国产精品二区不卡| 久久96国产精品久久久| 性做久久久久久久久久久| 亚洲AV日韩精品久久久久久| 久久精品国产一区| 久久综合鬼色88久久精品综合自在自线噜噜| 欧美久久一区二区三区| 久久久久免费看成人影片| 久久精品国产亚洲AV不卡| 日韩精品久久无码人妻中文字幕| 中文字幕一区二区三区久久网站| 蜜桃麻豆WWW久久囤产精品| 成人午夜精品久久久久久久小说| 精品综合久久久久久98| 久久毛片免费看一区二区三区| 精品国产VA久久久久久久冰 | 久久久国产一区二区三区| 亚洲精品无码久久久久去q | 狠狠色丁香久久婷婷综| 久久无码国产专区精品| 久久丝袜精品中文字幕| 久久最新精品国产| 久久国产欧美日韩精品| 久久免费看黄a级毛片| 久久一本综合| 久久国产免费直播| 99久久久久| 99精品伊人久久久大香线蕉| 久久精品麻豆日日躁夜夜躁| 久久人人爽爽爽人久久久| 久久久久久久97| 久久久久国产精品嫩草影院| 女同久久| 亚洲熟妇无码另类久久久| 婷婷国产天堂久久综合五月| 99久久综合国产精品免费| 久久婷婷是五月综合色狠狠| 久久婷婷五月综合97色直播 | 91性高湖久久久久|