(已读)第十二章列表框和组合框

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第十二章列表框和组合框

列表框是显示一系列项供用户选择的控件,对选中的项可以进行后续的处理。用户选择可以是多项的,但本章的例程设计为单选的。组合框是一个编辑框带一个可以下拉的列表框,用户在下拉框中选择的项会进入编辑框中,再进行后续处理,选择也可以用键盘的光标键。在编辑框中也可以直接输入。

本章要点

1 列表框的设计、项的添加和删除

2 组合框的设计和使用

12.1 ListCombo程序运行时的界面和功能

chap12-01

List1在初始化时加入了六项。点击[<]按钮就把选中的项移动到List2中去。点击[>]按钮则相反。点击[<<]和[>>]按钮则移动全部项。用[清除列表]按钮可删除List1的全部项。[加入到]按钮把你选中的在编辑框中项添加到List1中,[加入全部]按钮则把组合框设置的所有项添加到List1中。组合框预置了“中国”这一项,但没有设计删除功能。列表框和组合框都有一个从0开始的整数索引和一个用于显示的文本。

12.2 对话框界面设计

按控件属性表设计界面。

控件类型

标题

ID and Genaral

Styles

Extended Styles

listBox

IDC_LIST1

显示checked

选择Simple,Border

Virteber scroll

listBox

IDC_LIST2

显示checked

选择Simple,Border Virteber scroll

ComboBox

IDC_CONTRIES_COMBO 显示checked

类型:Drop list Virteber scroll

Static edge

Button

<

IDC_MOVE_BUTTON

Button

>

IDC_BACK_BUTTON

Button

<<

IDC_MOVEALL_BUTTON 无

Button

>>

IDC_BACKALL_BUTTON 无

Button

清除列表

IDC_CLEAR_BUTTON

Client edge

Button

加入到

IDC_ADD_BUTTON

Client edge

Button

加入全部

IDC_ADDALL_BUTTON

Client edge

Button

退出

IDC_EXIT_BUTTON

Client edge

Static edge

Modal Frame

属性表中列出的表示“选中”,TAB复选框都要选中,就省略了。组合框可以在DATA属性页中设置项的文本,本例采用这种方法。其数据是:

中国,美国,俄罗斯,英国,法国,德国,印度,巴基斯坦,

日本,加拿大,澳大利亚,韩国,伊朗,伊拉克

逗号处要改为换行,换行用Ctrl+<回车键>。设计好的界面如图chap12-02所示。

chap12-02

12.3 设计变量和编写代码

1 为三个列表框和组合框引进变量

因为我们要对列表框的项进行操作,所以要申明三个对象类型的变量

m_myList1

m_myList2

m_myCombo。

2 定义一个字符串数组

定义一个字符串数组m_myItems用来存放组合框的项的文本。在对话框的头文件的类CListCombaDlg的构造函数中申明:

CString m_myItems[20];

3 给初始化函数编写代码

在OnInitDialog()中我们要从组合框控件获取项目的文本,给字符串数组m_myItems赋值。再用它的前六项为List1初始化。最后为组合框设置项“中国”为预选项。

从组合框控件获取项用函数GetLBText(index, str),它把索引值为index的项的文本拷贝给str。给列表框赋值用AddString(string)函数,它在列表的尾部增加一项。类似地还可以用插入函数InsearString(...)。在// TODO: Add extra initialization here 这行的后面,我们添加如下代码:int count = m_myCombo.GetCount();//获取组合框的项数

int i =0;

//从组合框控件获取项的文本

for(i =0; i

m_myCombo.GetLBText(i, m_myItems[i]);

//List1初始化,六项

for(i =0; i<6 ; i++)

m_myList1.AddString(m_myItems[i]);// 130) : error C2039: 'AddString' : is not a member of 'CString'变量类型有问题

//设置组合框默认选择项为"中国"

m_myCombo.SetCurSel(0);

这段调了很久

4 给4个移动按钮写代码

MOVE按钮[<]的功能是从List1中得到用户选定顶的索引号,再从这索引号获取选定顶的文本,然后删除这一项,在List2中添加一项。当前项获取索引号函数index=GetCurSel()返回整数。获取选定项的文本用函数GetText(index, item),它把指定项的文本拷贝到字符串item 中。

OnMoveButton()函数的完整代码如下:

void CListCombaDlg::OnMoveButton()

{

CString item;

int index = m_myList1.GetCurSel(); //获取选定顶索引号

m_myList1.GetText(index, item); //获取选定顶的文本

m_myList1.DeleteString(index); //删除一项

m_myList2.AddString(item); //添加到List2中

m_myList1.SetCurSel(0); //设置首项为当前项

}

MOVEALL按钮的代码与上面的类似,加上循环语句就行。

void CListCombaDlg::OnMoveallButton()

{

// TODO: Add your control notification handler code here

CString item;

int index =0 ;

while(m_myList1.GetCount() >0){

m_myList1.GetText(0, item);

m_myList1.DeleteString(0);

相关文档
最新文档