• <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
                Status Bar所提供的消息相當(dāng)?shù)脑幃悺tatus Bar里面的Items的數(shù)量以及寬度要一次性設(shè)置好,每次修改的時(shí)候都要推翻重建一次,只不過(guò)里面的Text倒是可以單獨(dú)改掉。在XP底下有效的raise border似乎在Vista就沒(méi)有了。看來(lái)Vista已經(jīng)從偽3D徹底轉(zhuǎn)向了2D了。

                Status Bar在CreateWindowEx的時(shí)候會(huì)自動(dòng)將自己放在窗口的最底下,每一次修改Status Bar的尺寸的時(shí)候,它又會(huì)自動(dòng)把自己放在窗口的最底下。當(dāng)然,你可以讓他出現(xiàn)在最上面。雖然如此,但是我封裝的時(shí)候還是想自由地修改尺寸和位置,當(dāng)且僅當(dāng)我想讓他出現(xiàn)在窗口最下面的時(shí)候他才出現(xiàn)在窗口最下面,于是我只好截獲Status Bar的WM_SIZE消息并扔掉了。

                當(dāng)初為每一個(gè)控件都自動(dòng)Subclass掉的想法還真是正確啊……

                下面是設(shè)置Item屬性的代碼,相當(dāng)惡心啊。雖然我封裝的時(shí)候仍然給了additem、insertitem和deleteitem,但是卻不得不寫(xiě)成這個(gè)樣子。下面這幾個(gè)是protected函數(shù),專門(mén)用來(lái)刷新屬性的。
             1     void VL_WinStatus::RefreshItem(VInt Index)
             2     {
             3         INT wParam=Index;
             4         if(FItems[Index].Border)
             5         {
             6             if(FItems[Index].Raise)
             7             {
             8                 wParam|=SBT_POPOUT;
             9             }
            10         }
            11         else
            12         {
            13             wParam|=SBT_NOBORDERS;
            14         }
            15         VUnicodeString Text=FItems[Index].TextLeft+L'\t'+FItems[Index].TextCenter+L'\t'+FItems[Index].TextRight;
            16         SendMessage(FHandle,SB_SETTEXT,wParam,(LPARAM)Text.Buffer());
            17     }
            18 
            19     void VL_WinStatus::RefreshItems()
            20     {
            21         INT Borders[3];
            22         SendMessage(FHandle,SB_GETBORDERS,0,(LPARAM)Borders);
            23         VInt w=Borders[0];
            24         VInt h=Borders[1];
            25         VInt s=Borders[2];
            26         INT Rights[STATUS_BAR_MAX_ITEM_COUNT]={0};
            27         VInt CurrentRight=w;
            28         for(VInt i=0;i<FItems.GetCount();i++)
            29         {
            30             if(i==FItems.GetCount()-1 && FItems[i].Width==0)
            31             {
            32                 Rights[i]=-1;
            33             }
            34             else
            35             {
            36                 CurrentRight+=FItems[i].Width;
            37                 Rights[i]=CurrentRight;
            38                 CurrentRight+=s;
            39             }
            40         }
            41         SendMessage(FHandle,SB_SETPARTS,FItems.GetCount(),(LPARAM)Rights);
            42         for(VInt i=0;i<FItems.GetCount();i++)
            43         {
            44             RefreshItem(i);
            45         }
            46     }

            posted on 2008-08-15 23:34 陳梓瀚(vczh) 閱讀(1554) 評(píng)論(1)  編輯 收藏 引用 所屬分類(lèi): C++

            評(píng)論:
            # re: Status Bar完成 2008-08-17 01:39 | dell筆記本
            的確顯示的很奇怪。  回復(fù)  更多評(píng)論
              
            久久毛片免费看一区二区三区| 久久久亚洲欧洲日产国码aⅴ | 久久久久亚洲AV成人网人人网站 | 久久久青草久久久青草| 久久亚洲国产欧洲精品一 | 97精品国产97久久久久久免费| 久久精品免费一区二区| 77777亚洲午夜久久多喷| 久久综合九色综合久99| 亚洲国产精品一区二区三区久久| 国产成人无码精品久久久性色| 97久久国产亚洲精品超碰热 | 无码国产69精品久久久久网站| 国产精品久久亚洲不卡动漫| 日本久久中文字幕| 97久久天天综合色天天综合色hd| 久久久久亚洲精品中文字幕| AV狠狠色丁香婷婷综合久久| 久久久免费观成人影院 | 久久天天躁狠狠躁夜夜96流白浆| 国产精品va久久久久久久| 精品人妻伦九区久久AAA片69| 久久免费视频网站| 亚洲αv久久久噜噜噜噜噜| 欧美大战日韩91综合一区婷婷久久青草| 国内高清久久久久久| 久久精品国产亚洲一区二区三区| 国产亚洲精品美女久久久| 99久久国产宗和精品1上映| 国产成人综合久久久久久| 久久精品国产91久久麻豆自制 | 精品久久久久久亚洲| 色综合久久无码中文字幕| 久久国产欧美日韩精品| 青青久久精品国产免费看| 久久久久久国产精品美女| 国内精品欧美久久精品| 久久精品18| 欧美久久一级内射wwwwww.| 久久影院亚洲一区| 18禁黄久久久AAA片|