在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 阅读(781)
评论(0) 编辑 收藏 引用 所属分类:
windows学习