一、 简单列表框的设计
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参数
4、 将int、double类型变量转换成字符串
TCHAR tempbuffer; _itoa(myCon[I].age,tempbuffer,10); |
整数转换成字符串,存入缓冲区tempbuffer,10为基数,如果要得到以16进制字符串表示,换10为16即可,也可以换为2
_gcvt(myCon[I].adouble, 3, tempbuffer);
浮点数转换成字符串,3为输出的位数
二、 用LISTBOX显示文件列表
1、 使用字符缓冲区存放当前目录
TCHAR pathBuffer[256];//缓冲区应当足够大 DWORD lenofPath;//存放字符串的长度定义为WORD、int仍正常运行 GetCurrentDirectory(256,pathBuffer);//将当前路径存入缓冲区pathBuffer lenofPath=strlen(pathBuffer);//获得字符串的长度 pathBufer[lenofPath]=0;//截断字符串 |
2、 在WM_INITDIALOG消息中填充列表框
DlgDirList(hDlg,//对话框句柄 pathBuffer,路径 IDC_LIST,//列表框 IDS_PATH,//显示路径的静态控件 DDL_DIRECTORY//除普通文件外还显示目录,如果此参数为0,只显示普通文件,还可以是DDL_READONLY、DDL_HIDE ); |
3、 用户双击,显示选定的字符串并删除
DWORD nItem; TCHAR lpText[256]; case WM_COMMAND: {switch LOWORD(wParam) case IDL_FILELIST: {switch HIWORD(wParam) case LBN_DBLCLK: nItem=SendMessage(hList,LB_GETCURSET,0,0); SendMessage(hList,LB_GETTEXT,nItem,lpText); SendMessage(hList,LB_DELETESTRING,nItem,0); break; } break; } |
<
说明:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,wanshiok.com不保证资料的完整性。
1/2 1 2 下一页 尾页 |