在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 閱讀(805)
評論(0) 編輯 收藏 引用 所屬分類:
windows學習