• <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

                為了緩解疲勞,我網(wǎng)絡(luò)和UI同時(shí)做。封裝UI真是麻煩啊,一大堆習(xí)慣的東西原來(lái)是沒(méi)有的,什么tab轉(zhuǎn)移焦點(diǎn),什么控件對(duì)齊,都要自己做。后來(lái)就囧了,干脆實(shí)現(xiàn)一個(gè)Placement來(lái)自動(dòng)調(diào)整控件的位置。

                

                Placement寫(xiě)起來(lái)還是比較麻煩的,不過(guò)為了以后GUI Editor的開(kāi)發(fā)方便,我還是做成了這個(gè)樣子。

             1 #include "..\..\..\..\VL++\Library\Windows\VL_WinMain.h"
             2 #include "..\..\..\..\VL++\Library\Windows\Commctrl\VL_WinText.h"
             3 #include "..\..\..\..\VL++\Library\Windows\Commctrl\VL_WinButton.h"
             4 
             5 using namespace vl;
             6 using namespace vl::windows;
             7 
             8 class MyForm : public VL_WinForm
             9 {
            10 protected:
            11     VL_WinEdit*            FSingleLine;
            12     VL_WinEdit*            FMultiLine;
            13     VL_WinButton*        FButton;
            14     VL_WinStatic*        FStatic;
            15 
            16     void InitControls()
            17     {
            18         FStatic=new VL_WinStatic(this);
            19         FStatic->SetText(L"Name:");
            20 
            21         FButton=new VL_WinButton(this);
            22         FButton->SetText(L"Button");
            23 
            24         FSingleLine=new VL_WinEdit(this,false);
            25         FSingleLine->SetText(VUnicodeString(FSingleLine->GetTextLimit()));
            26         FSingleLine->SetTextLimit(20);
            27         FSingleLine->SelectAll();
            28 
            29         FMultiLine=new VL_WinEdit(this,true);
            30         FMultiLine->SetHScroll(true);
            31         FMultiLine->SetVScroll(true);
            32         FMultiLine->SetText(L"Line1\r\nLine2\r\nLine3\r\nLine4\r\nLine5");
            33 
            34         GetPlacement()->SetBorderSize(10);
            35         GetPlacement()->SetSpliterSize(10);
            36         GetPlacement()->SetBehavior(vpbFixPlacement1);
            37         GetPlacement()->SetSpliterPosition(20);
            38         GetPlacement()->SetMinClientWidth(200);
            39         GetPlacement()->SetMinClientHeight(200);
            40 
            41         GetPlacement()->GetPlacement1()->SetSpliterDirection(vpdVertical);
            42         GetPlacement()->GetPlacement1()->SetSpliterSize(10);
            43         GetPlacement()->GetPlacement1()->SetBehavior(vpbFixPlacement1);
            44         GetPlacement()->GetPlacement1()->SetSpliterPosition(40);
            45 
            46         GetPlacement()->GetPlacement1()->GetPlacement2()->SetSpliterDirection(vpdVertical);
            47         GetPlacement()->GetPlacement1()->GetPlacement2()->SetSpliterSize(10);
            48         GetPlacement()->GetPlacement1()->GetPlacement2()->SetBehavior(vpbFixPlacement2);
            49         GetPlacement()->GetPlacement1()->GetPlacement2()->SetSpliterPosition(80);
            50 
            51         GetPlacement()->GetPlacement2()->SetControl(FMultiLine);
            52         GetPlacement()->GetPlacement1()->GetPlacement1()->SetControl(FStatic);
            53         GetPlacement()->GetPlacement1()->GetPlacement2()->GetPlacement1()->SetControl(FSingleLine);
            54         GetPlacement()->GetPlacement1()->GetPlacement2()->GetPlacement2()->SetControl(FButton);
            55     }
            56 
            57 public:
            58 
            59     MyForm():VL_WinForm(true)
            60     {
            61         SetClientWidth(400);
            62         SetClientHeight(400);
            63         SetText(L"Vczh Form");
            64         MoveCenter();
            65         InitControls();
            66         Show();
            67     }
            68 };
            69 
            70 void main()
            71 {
            72     new MyForm;
            73     GetApplication()->Run();
            74 }
            posted on 2008-08-03 04:54 陳梓瀚(vczh) 閱讀(1924) 評(píng)論(8)  編輯 收藏 引用 所屬分類(lèi): C++

            評(píng)論:
            # re: UI庫(kù)添加Edit、Static和Placement[未登錄](méi) 2008-08-03 05:51 | foxtail
            老實(shí)說(shuō):很沒(méi)意思  回復(fù)  更多評(píng)論
              
            # re: UI庫(kù)添加Edit、Static和Placement 2008-08-03 05:55 | 陳梓瀚(vczh)
            當(dāng)你寧可不要界面都不要MFC的時(shí)候,就有意思了。  回復(fù)  更多評(píng)論
              
            # re: UI庫(kù)添加Edit、Static和Placement 2008-08-03 06:48 | LOGOS
            我不要MFC,我要的是wxWidget
            不過(guò),你好好干吧  回復(fù)  更多評(píng)論
              
            # re: UI庫(kù)添加Edit、Static和Placement 2008-08-03 07:11 | Lnn
            很好啊!辛苦了啊!  回復(fù)  更多評(píng)論
              
            # re: UI庫(kù)添加Edit、Static和Placement 2008-08-03 18:00 | sff
            主題:誰(shuí)說(shuō)80后沒(méi)文化?!看80后寫(xiě)的寶塔詩(shī)!
            網(wǎng)
            新腔
            有模樣
            為驢友忙
            人在家中躺
            門(mén)票預(yù)訂網(wǎng)上
            全國(guó)景點(diǎn)任你爽
            折扣鏗鏗鏘鏘作響
            一張門(mén)票也把優(yōu)惠扛
            旅游便宜就在掌門(mén)人網(wǎng)
              回復(fù)  更多評(píng)論
              
            # re: UI庫(kù)添加Edit、Static和Placement 2008-08-03 18:25 | lwan
            如果單純的封裝一個(gè)form,n個(gè)comctrl控件是不難的,但是要是使之成為一個(gè)系統(tǒng)框架需要考慮的是:app,mainframe,以及子窗口之間的關(guān)系,modal和modalless,mdi子窗口等,如果這些都比較容易的話(huà),那tab鍵,加速鍵,默認(rèn)按鈕、key clue這些就足夠繁瑣了,再考慮上ole之類(lèi)....,可以看出目前所做的只是很小一部分,可以參考 vcl vcf wxwidget qt等封裝玩玩,不斷學(xué)習(xí)進(jìn)步,不斷發(fā)現(xiàn)不足。  回復(fù)  更多評(píng)論
              
            # re: UI庫(kù)添加Edit、Static和Placement 2008-08-03 18:48 | 陳梓瀚(vczh)
            加速鍵完成了,tab還沒(méi)做,其他api都有……不過(guò)我只做我需要的那一部分。  回復(fù)  更多評(píng)論
              
            # re: UI庫(kù)添加Edit、Static和Placement 2008-08-04 05:58 | megax
            MFC的設(shè)計(jì)是很經(jīng)典的,占用內(nèi)存相對(duì)來(lái)說(shuō)也不大。因?yàn)闆](méi)有使用虛函數(shù),省下了一大筆虛表的開(kāi)支。UI類(lèi)庫(kù),我認(rèn)為最棒的仍然是VCL。不過(guò)我仍然會(huì)用MFC,經(jīng)典,方便,性能高,文檔齊全。對(duì)于我這種關(guān)注功能實(shí)現(xiàn)的人來(lái)說(shuō)是最好的選擇  回復(fù)  更多評(píng)論
              
            国产福利电影一区二区三区久久久久成人精品综合 | 日韩人妻无码一区二区三区久久| 亚洲综合熟女久久久30p| 久久国产精品77777| 久久人人爽人人爽人人片AV不 | 一本大道久久a久久精品综合| 亚洲国产精品无码成人片久久| 久久精品国产色蜜蜜麻豆| 久久国产精品99精品国产| 国内精品久久久久国产盗摄| 狠狠色丁香婷综合久久| 久久久久久亚洲AV无码专区| 久久久人妻精品无码一区| 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区 | 精品综合久久久久久88小说| 久久久久久久久久久精品尤物 | 亚洲色欲久久久久综合网 | 97久久香蕉国产线看观看| 午夜人妻久久久久久久久| 91精品国产综合久久香蕉| 亚洲欧洲日产国码无码久久99| 精品国产青草久久久久福利 | 亚洲国产天堂久久综合网站| 无遮挡粉嫩小泬久久久久久久 | 久久国产精品-国产精品| 狠狠色丁香久久婷婷综合蜜芽五月 | 久久精品国产欧美日韩99热| 无码人妻久久一区二区三区蜜桃 | 久久精品亚洲福利| 国产精品久久一区二区三区| 亚洲国产精品无码久久一区二区| 亚洲v国产v天堂a无码久久| 欧美亚洲国产精品久久| 色99久久久久高潮综合影院| 国产精品99久久精品爆乳| 久久精品国产69国产精品亚洲| 久久久久亚洲AV无码专区体验| 久久AV无码精品人妻糸列| 国产欧美久久久精品影院| 无码人妻久久一区二区三区蜜桃 | 精品精品国产自在久久高清|