• <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
                Win32 API為了讓控件更為有用真是煞費苦心,不僅Tab沒有提供控件可見控制,連Scroll Bar點擊的時候竟然是不修改Position的,要我在每一個消息里用SBM_SETSCROLLINFO來設置當前的位置。而且當前的位置的獲得還不是一致的,根據(jù)消息的不同而不同。真是故意為難人啊。

                文本框里面的東西是為了檢查各個消息中GetPosition函數(shù)的正確性而打出來的。輸出消息的代碼如下:
              1 #include "..\..\..\..\VL++\Library\Windows\VL_WinGUI.h"
              2 
              3 using namespace vl;
              4 using namespace vl::windows;
              5 
              6 class MyForm : public VL_WinForm
              7 {
              8 protected:
              9     VL_WinScroll*            FHScroll;
             10     VL_WinScroll*            FVScroll;
             11     VL_WinEdit*                FEdit;
             12 
             13     void InitControls()
             14     {
             15         FHScroll=new VL_WinScroll(this,true);
             16         FHScroll->Move(0,380,380,20);
             17         FVScroll=new VL_WinScroll(this,false);
             18         FVScroll->Move(380,0,20,380);
             19         FEdit=new VL_WinEdit(this,true);
             20         FEdit->Move(0,0,380,380);
             21         FEdit->SetReadonly(true);
             22 
             23         FHScroll->OnScrollMin.Bind(this,&MyForm::Scroll_ScrollMin);
             24         FHScroll->OnScrollMax.Bind(this,&MyForm::Scroll_ScrollMax);
             25         FHScroll->OnArrowDec.Bind(this,&MyForm::Scroll_ArrowDec);
             26         FHScroll->OnArrowInc.Bind(this,&MyForm::Scroll_ArrowInc);
             27         FHScroll->OnPageDec.Bind(this,&MyForm::Scroll_PageDec);
             28         FHScroll->OnPageInc.Bind(this,&MyForm::Scroll_PageInc);
             29         FHScroll->OnTracking.Bind(this,&MyForm::Scroll_Tracking);
             30         FHScroll->OnThumbUp.Bind(this,&MyForm::Scroll_ThumbUp);
             31         FHScroll->OnPositionChanged.Bind(this,&MyForm::Scroll_PositionChanged);
             32         FHScroll->OnEndScroll.Bind(this,&MyForm::Scroll_EndScroll);
             33 
             34         FVScroll->OnScrollMin.Bind(this,&MyForm::Scroll_ScrollMin);
             35         FVScroll->OnScrollMax.Bind(this,&MyForm::Scroll_ScrollMax);
             36         FVScroll->OnArrowDec.Bind(this,&MyForm::Scroll_ArrowDec);
             37         FVScroll->OnArrowInc.Bind(this,&MyForm::Scroll_ArrowInc);
             38         FVScroll->OnPageDec.Bind(this,&MyForm::Scroll_PageDec);
             39         FVScroll->OnPageInc.Bind(this,&MyForm::Scroll_PageInc);
             40         FVScroll->OnTracking.Bind(this,&MyForm::Scroll_Tracking);
             41         FVScroll->OnThumbUp.Bind(this,&MyForm::Scroll_ThumbUp);
             42         FVScroll->OnPositionChanged.Bind(this,&MyForm::Scroll_PositionChanged);
             43         FVScroll->OnEndScroll.Bind(this,&MyForm::Scroll_EndScroll);
             44     }
             45 
             46     void Print(VUnicodeString Message)
             47     {
             48         FEdit->SetText(FEdit->GetText()+Message+L"\r\n");
             49         FEdit->Select(FEdit->GetText().Length(),0);
             50         FEdit->ScrollToCaret();
             51     }
             52 
             53     void Print(VL_Base* Sender , VUnicodeString Message)
             54     {
             55         VL_WinScroll* Scroll=dynamic_cast<VL_WinScroll*>(Sender);
             56         if(Scroll)
             57         {
             58             if(Scroll==FHScroll)
             59             {
             60                 Print(L"Horizontal , "+Message+L" = "+VUnicodeString(Scroll->GetPosition()));
             61             }
             62             else
             63             {
             64                 Print(L"Vertical , "+Message+L" = "+VUnicodeString(Scroll->GetPosition()));
             65             }
             66         }
             67     }
             68 
             69     void Scroll_ScrollMin(VL_Base* Sender)
             70     {
             71         Print(Sender,L"Min");
             72     }
             73 
             74     void Scroll_ScrollMax(VL_Base* Sender)
             75     {
             76         Print(Sender,L"Max");
             77     }
             78 
             79     void Scroll_ArrowDec(VL_Base* Sender)
             80     {
             81         Print(Sender,L"Arrow-");
             82     }
             83 
             84     void Scroll_ArrowInc(VL_Base* Sender)
             85     {
             86         Print(Sender,L"Arrow+");
             87     }
             88 
             89     void Scroll_PageDec(VL_Base* Sender)
             90     {
             91         Print(Sender,L"Page-");
             92     }
             93 
             94     void Scroll_PageInc(VL_Base* Sender)
             95     {
             96         Print(Sender,L"Page+");
             97     }
             98 
             99     void Scroll_Tracking(VL_Base* Sender)
            100     {
            101         Print(Sender,L"Tracking");
            102     }
            103 
            104     void Scroll_ThumbUp(VL_Base* Sender)
            105     {
            106         Print(Sender,L"ThumbUp");
            107     }
            108 
            109     void Scroll_PositionChanged(VL_Base* Sender)
            110     {
            111         Print(Sender,L"Changed");
            112     }
            113 
            114     void Scroll_EndScroll(VL_Base* Sender)
            115     {
            116         Print(Sender,L"End");
            117     }
            118 
            119 public:
            120 
            121     MyForm():VL_WinForm(true)
            122     {
            123         SetMaximizeBox(false);
            124         SetBorder(vwfbSingle);
            125         SetClientWidth(400);
            126         SetClientHeight(400);
            127         SetText(L"Vczh Form");
            128         MoveCenter();
            129         InitControls();
            130         Show();
            131     }
            132 };
            133 
            134 void main()
            135 {
            136     new MyForm;
            137     GetApplication()->Run();
            138 }
                至于我是怎么解決GetPosition的呢?因為每一次操作Scroll Bar的Position都不會改,所以理所當然的,我要替它改……
             1     LRESULT VL_WinScroll::ProcessMessage(UINT Message , WPARAM& wParam , LPARAM& lParam , VBool& CallDefaultProcedure)
             2     {
             3         LRESULT Result=0;
             4         switch(Message)
             5         {
             6         case WM_VSCROLL_DISPATCHED:
             7         case WM_HSCROLL_DISPATCHED:
             8             switch(LOWORD(wParam))
             9             {
            10             case SB_ENDSCROLL:
            11                 OnEndScroll(this);
            12                 break;
            13             case SB_LEFT:
            14                 OnScrollMin(this);
            15                 OnPositionChanged(this);
            16                 break;
            17             case SB_RIGHT:
            18                 OnScrollMax(this);
            19                 OnPositionChanged(this);
            20                 break;
            21             case SB_LINELEFT:
            22                 SetPosition(GetPosition()-1);
            23                 OnArrowDec(this);
            24                 OnPositionChanged(this);
            25                 break;
            26             case SB_LINERIGHT:
            27                 SetPosition(GetPosition()+1);
            28                 OnArrowInc(this);
            29                 OnPositionChanged(this);
            30                 break;
            31             case SB_PAGELEFT:
            32                 SetPosition(GetPosition()-GetPage());
            33                 OnPageDec(this);
            34                 OnPositionChanged(this);
            35                 break;
            36             case SB_PAGERIGHT:
            37                 OnPageInc(this);
            38                 SetPosition(GetPosition()+GetPage());
            39                 OnPositionChanged(this);
            40                 break;
            41             case SB_THUMBPOSITION:
            42                 {
            43                     SCROLLINFO Info;
            44                     GetInfo(Info);
            45                     SetPosition(Info.nTrackPos);
            46                     OnThumbUp(this);
            47                     OnPositionChanged(this);
            48                 }
            49                 break;
            50             case SB_THUMBTRACK:
            51                 {
            52                     SCROLLINFO Info;
            53                     GetInfo(Info);
            54                     SetPosition(Info.nTrackPos);
            55                     OnTracking(this);
            56                     OnPositionChanged(this);
            57                 }
            58                 break;
            59             }
            60             Result=VL_WinControl::ProcessMessage(Message,wParam,lParam,CallDefaultProcedure);
            61             break;
            62         default:
            63             Result=VL_WinControl::ProcessMessage(Message,wParam,lParam,CallDefaultProcedure);
            64         }
            65         return Result;
            66     }

            posted on 2008-08-15 06:26 陳梓瀚(vczh) 閱讀(1429) 評論(1)  編輯 收藏 引用 所屬分類: C++

            評論:
            # re: Scroll Bar完成 2008-08-15 07:27 | 沈臻豪(foxtail)
            滾動條終于出來啦 等了好久  回復  更多評論
              
            狠狠色丁香久久综合五月| 香蕉久久夜色精品国产2020| 日韩久久无码免费毛片软件| AV狠狠色丁香婷婷综合久久| 无码国内精品久久人妻蜜桃| 色综合久久夜色精品国产| 青青草国产97免久久费观看| 久久久久国产一级毛片高清板 | 99久久这里只有精品| 久久亚洲私人国产精品| 18岁日韩内射颜射午夜久久成人| 久久久久亚洲AV成人网| 久久成人精品| 久久亚洲国产成人影院网站| 日韩中文久久| 久久久久久综合网天天| 久久综合给久久狠狠97色| 久久精品国产亚洲av影院| 久久亚洲国产欧洲精品一| 久久www免费人成精品香蕉| 狠狠久久综合伊人不卡| 久久久午夜精品福利内容| 久久伊人五月丁香狠狠色| 久久精品国产亚洲AV香蕉| 久久99精品国产| 久久人人爽人人爽AV片| 亚洲日韩中文无码久久| 伊人色综合久久| 少妇人妻综合久久中文字幕| 91久久婷婷国产综合精品青草| 成人国内精品久久久久影院VR| 亚洲精品午夜国产va久久| 香蕉久久夜色精品升级完成| 97久久久精品综合88久久| 欧美激情精品久久久久久久九九九 | 久久精品国产99国产精品澳门 | 久久AAAA片一区二区| 人妻无码中文久久久久专区| 国内精品久久久久久久久电影网| 精产国品久久一二三产区区别 | 久久久精品波多野结衣|