• <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)
            興致勃勃捏你!無語指數五顆星  回復  更多評論
              
            亚洲∧v久久久无码精品| 免费观看成人久久网免费观看| 久久久青草久久久青草| 91精品观看91久久久久久| 国产ww久久久久久久久久| 久久亚洲电影| 久久综合给合久久狠狠狠97色| 99久久无码一区人妻a黑| 久久精品中文字幕一区| 亚洲欧美成人综合久久久| 99久久成人18免费网站| 99久久99久久精品国产片果冻| 91精品免费久久久久久久久| 国产精品久久新婚兰兰| 国产 亚洲 欧美 另类 久久| 亚洲精品蜜桃久久久久久| 久久黄视频| 久久精品国产亚洲AV麻豆网站| 亚洲欧美国产精品专区久久| 久久综合欧美成人| 久久99热只有频精品8| 午夜精品久久久久久影视777| 精品久久人妻av中文字幕| 精品国产青草久久久久福利| 国产精品一区二区久久精品无码 | 欧美精品丝袜久久久中文字幕| 伊人久久大香线蕉亚洲五月天| 人妻系列无码专区久久五月天| 久久精品人人做人人爽电影| 亚洲AV无码久久精品色欲| 久久无码国产| 日本国产精品久久| 性做久久久久久免费观看| 国产三级精品久久| 九九热久久免费视频| 国产精品99久久久久久www| 一级做a爱片久久毛片| 久久精品成人免费网站| 91久久精品国产免费直播| 国产成人99久久亚洲综合精品| 国内精品免费久久影院|