春暖花开
雪化了,花开了,春天来了
posts - 149,comments - 125,trackbacks - 0
       
        在Windows Mobile中,Edit控件在具有WS_VSCROLL的时候,无论显示文字的多少,都会显示滚动条。如何在显示文字不到一页的情况下,让滚动条不显示呢?

         我是这样考虑的:判断显示文字的高度,即显示文字的行数*单个文字的高度,判断其是否大于屏幕高度,如果大于,则改变Edit控件的属性,使其具有WS_VSCROLL属性;如果小于或等于,则改变Edit控件的属性,使其不具有WS_VSCROLL属性。

         代码示例:

         int height = GetSystemMetrics(SM_CYFULLSCREEN); // 此处示屏幕高度,可自己设定
         
         HWND hEdit = GetDlgItem(hDlg, IDC_EDIT);
         DWORD dwLineCount = (DWORD)::SendMessage(hEdit, EM_GETLINECOUNT, 0, 0L);
         HDC hdc = GetDC(hDlg);
         TEXTMETRIC metric;
         GetTextMetrics(hdc, &metric);
         ReleaseDC(hDlg, hdc); 

          if (metric.tmHeight * dwLineCount <= height))
         {
               SetWindowLong(hEdit, GWL_STYLE, WS_VISIBLE | ES_MULTILINE | ES_READONLY);
           }
           else
           {
                SetWindowLong(hEdit,GWL_STYLE, WS_VISIBLE| WS_VSCROLL|   ES_MULTILINE  |ES_READONLY);
           }

           我在创建Edit控件的时候,一开始没有设置WS_VSCROLL属性,发现加上WS_VSCROLL属性后,对于按键的上下响应有些问题。后来就反其道而行之,先让其具有WS_VSCROLL属性,然后再判断其是否该显示滚动条。

            在Windows Mobile中涉及到横竖屏切换的问题,比如说,在竖屏的时候没有滚动条,到横屏的时候又需要有滚动条,此时怎么办?
             在WM_SIZE中进行以上的属性判断,但是有一个问题需要注意:如果需要调整Edit控件的大小,需要在属性判断置后进行。

              一点心得,大家可以试试哈!
          

        

posted on 2009-03-18 18:48 Sandy 阅读(754) 评论(0)  编辑 收藏 引用 所属分类: windows学习

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理