WIN32用户界面设计基础之ListBox 篇
一、 简单列表框的设计
1、 使用结构存放批量数据
typedef struct
{
TCHAR name[25];
BOOL gender;
UINT age;
TCHAR country[25];
TCHAR email[25];
}Contactors
定义结构体
Contactors myCon[]={
{"SINOASTEROID",TRUE,22,"CHINA","sinoasteroid@sina.com"},
{"SMITH",TRUE,21,"AMERICA","smith@gsoft.com"},
{"ROSE",FALSE,20,"GERMEN","rose@psoftware.com"},
{"LICHADE",TRUE,21,"KOREA","lich@korea.com"},
}
定义并初始化机构体数组
2、 在对话框的WM_INITIAL消息中向LISTBOX添加项目
for(I=0;I<3;I++)
{
SendMessage(hlist,LB_ADDSTRING,0,(LPARAM)myCon[I].name;
)
file://使用LISTBOX无法正确显示,改用COMBOBOX,指定其Owner Draw 为None
3、 捕获控件发往父窗口的通知消息
switch(LOWORD(wParam))
case IDC_LIST1:
{switch(HIWORD(wParam))
case LBN_SELCHANGE:
nItem=SendMessage(hlist,LB_GETCURSEL,0,0);
LB_GETCURSEL得到列表框中当前选定的项目的以0为基准的索引值,如果没有选定值,返回LB_ERR,WPARAM和LPARAM均为0
I=SendMessage(hlist,LB_GETITEMDATA,nItem,0);
对于自绘制的没有指定LBS_HANSTRING风格LISTBOX,LB_GETITEMDATA返回的值为在LB_ADDSTRING或LB_INSERTSTRING中的LPARAM参数,否则为LB_SETITEMDATA的LPARAM参数