Chinaunix首页 | 论坛 | 博客
  • 博客访问: 526810
  • 博文数量: 26
  • 博客积分: 509
  • 博客等级: 下士
  • 技术积分: 809
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-15 18:01
文章分类

全部博文(26)

文章存档

2015年(1)

2013年(6)

2012年(19)

分类: C/C++

2012-05-12 13:14:54

MFC里组合框控件显示下拉列表

现在正在帮一个大四的哥们做毕业设计。需要设计一个MFC程序。实现的功能是实现和GSM模块的通信。也就是能够通过这个程序来收发短信。这个功能很简单,短信的内容也是实现约定好的ASCII码(因为最终与GSM通信的不是手机,而是MCU控制的GSM模块),没有实现中文短信的功能。

编写的过程就是用VC++(我用的是VC6SP6)编写一个基于对话框的应用程序,在对话框里面添加MSComm控件,实现程序控制电脑串口的功能。程序界面大致如下:

 父窗口.png   

 

实际运行的时候发现,这个程序只能运行在固定的串口号上面,如果把模块插在不同的usb口(串口号发生改变),这个程序就运行不正常了。所以我就想在程序里面添加一个选择串口号的功能。

实现的方法如下:

1.       插入—>资源打开插入资源对话框,在里面选择dialog,然后点击新建,就会出现一个dialog资源。

2.       双击这个资源,会出现让你添加一个类,这样添加一个类即可。

3.       修改这个新建资源的界面,如下:

然后再在父窗口里面的OnInitDialog()函数里面添加这样的代码:

// TODO: Add extra initialization here

       CChoseCom dlg;  //CchoseCom是你新建资源添加的类的类名,父类是Cdialog

       dlg.DoModal();

这样再编译一下(可能需要添加一下头文件,就include一下即可),运行结果会先出现这个串口选择对话框。当然组合框的下拉列表内还没有内容。所以下一步就是要添加内容。

4.       在组合框里面添加选项。首先打开类向导,在里面选择Message Maps选项页。在里面现在CchoseCom类,控件IDIDC_COMBO1(组合框控件),分别选择消息CBN_DROPDOWNCBN_SELCHANGE添加消息响应函数。CBN_DROPDOWN是当点击组合框的倒黑色小三角是触发的消息,CBN_SELCHANGE是选择好组合框的一个选项后触发的消息。然后在CBN_DROPDOWN响应函数里面就可以添加组合框列表的内容:

m_chosecom.AddString("COM1");

m_chosecom.AddString("COM2");

m_chosecom.AddString("COM3");

m_chosecom.AddString("COM4");

m_chosecom.AddString("COM5");

m_chosecom.AddString("COM6");

m_chosecom.AddString("COM7");

m_chosecom.AddString("COM8");//m_chosecom是用类向导添加的CcomboBox类对象,对于与IDC_COMBO1。这样当选择倒三角后就可以显示组合框内容了。在CBN_SELCHANGE响应函数里面添加:

com_num=m_chosecom.GetCurSel();//com_num是在类CchoseCom里面添加的int型变量

5.       再在类CChoseCom里面添加一个intpublic的函数PopComNum()函数体如下:

int CChoseCom::PopComNum()

{

       return com_num;

}

6.       然后在负类里面调用PopComNum()函数就可以获得选择的串口的值

 

到这里功能就已经实现了。运行程序的时候首先弹出一个模态对话框,让我们选择串口,选择完后点击确定,这样父窗口就出现,然后就可以正常的运行了。呵呵,这个功能我想了老半天,结果实现起来原来这么简单!!

 

 

 

 

 

阅读(31889) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~