Spin Box controls是从列表中进行选择的控件
Spin Box controls在屏幕空间有限的时候就体现出他的价值了
它左右滚动可以浏览列表中选项,但不需要占用edit以外的屏幕空间
所以在Pocket PC 和Smartphone中普遍的采用它取代list boxes 控件

Spin box Controls风格:
1. UDS_WRAP
左右点击的时候,循环显示listbox中项, (到最小的时候显示最大的,到最大值又回到最小值)
2. UDS_EXPANDABLE
点击action的时候, 会变成全屏来显示listbox

3.UDS_SETBUDDYINT
所谓的邦定了,把listbox中选中的值 显示在edit中
4. UDN_EXPANDING
在风格2中,点击action的时候,会 向父窗口发送UDN_EXPANDING NOTIFY
消息,父窗口可以返回TRUE来禁止它展开
Spin box Controls 实际上一对控件,他是由一个上下控件 (up/down controls) 和一个单选list box结合而成
标准的list box消息也可以用于这里的list box中
创建spin box controls有两中方法:
1 编辑rc资源文件创建:
CONTROL "", IDC_LIST, "listbox", WS_TABSTOP | WS_VISIBLE | LBS_NOINTEGRALHEIGHT, 4,10,93,10
CONTROL "", IDC_UPDOWN, UPDOWN_CLASS, WS_VISIBLE | UDS_AUTOBUDDY | UDS_HORZ | UDS_ALIGNRIGHT | UDS_ARROWKEYS | UDS_SETBUDDYINT | UDS_WRAP | UDS_EXPANDABLE, 0,0,0,0
2 在程序中用CreateWindow 创建
hwndList = CreateWindow(TEXT("listbox"), NULL, WS_VISIBLE | LBS_NOINTEGRALHEIGHT, x, y, cx, cy, hwndParent, (HMENU)nListID, hinst, 0L);
hwndUpDown = CreateWindow(UPDOWN_CLASS, NULL, WS_VISIBLE | UDS_HORZ |UDS_ALIGNRIGHT | UDS_ARROWKEYS | UDS_SETBUDDYINT | UDS_WRAP | UDS_EXPANDABLE, 0, 0, 0, 0, hwndParent, (HMENU)nUpDownID, hinst, 0L);
SendMessage(hwndUpDown, UDM_SETBUDDY, (WPARAM)hwndList, 0);
SendMessage (hwndList, LB_ADDSTRING,0,(LPARAM)_T(“Item1"));
SendMessage (hwndList, LB_ADDSTRING,0,(LPARAM)_T(" Item2 "));
SendMessage (hwndList, LB_ADDSTRING,0,(LPARAM)_T(" Item3 "));
和spin box controls类似的还有: Expandable Edit Controls

posted on 2006-03-09 11:00 teky 阅读(2912)
评论(3) 编辑 收藏