您现在的位置是: 软件 > 开发者网络 > 程序方舟 > 开发专栏 > Visual C++开发 > 正文
·速成电脑精英(包分配)白领高薪一族从这里开始



-Java套接字编程(下)
-MediaStudio Pro 6.5教程
-三款卸载软件最新试用
-基于Visual C++的Winsock API研究

WIN32用户界面设计基础之ListBox 篇
2002-03-23· ·请与我联系··yesky

1 2  下一页


  一、 简单列表框的设计

  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;
}

1 2  下一页

【责任编辑:方舟】
【发表评论】【关闭窗口】
■ 相关内容
 Win32 多线程的性能
 WIN32用户界面设计基础之Menus 篇
 WIN32用户界面设计基础之Icon 篇
 WIN32用户界面设计基础之Dialog 篇
 WIN32用户界面设计基础之Caret篇
 WIN32用户界面设计基础之Cursor 篇
 WIN32程序设计之线程
 WIN32位操作系统比较
 VFP中对WIN32 API函数的调用格式
感谢 访问天极网,如果您觉得该文章涉及版权问题,请看这里!