MFC Edit Control和Combo Box实例

来源:互联网 发布:unity3d陷阱 编辑:程序博客网 时间:2024/04/28 10:09

其中ComboBox的Type属性设置为DropList

IDC_COMBO1有+ - * / 四种选择

这里主要目的是熟悉这两个控件使用所以功能就不用要求太完善

新建对话框工程

在Dlg.h下添加+ - * / 对应常量方便阅读

const int DF_JIA = 0;const int DF_JIAN = 1;const int DF_CHENG = 2;const int DF_CHU = 3;
在Dlg类里添加成员变量和成员函数

private:float GetResult(float fData_01, float fData_02, int nFlag);private:CString m_strData_01,m_strData_02,m_strSymbol,m_strResult;public:CComboBox m_cbCalMethod;afx_msg void OnBnClickedOk();
在消息映射宏中添加处理消息映射函数的代码

BEGIN_MESSAGE_MAP(C计算器Dlg, CDialogEx)        //……省略原有宏ON_BN_CLICKED(IDOK, &C计算器Dlg::OnBnClickedOk)END_MESSAGE_MAP()

在C计算器Dlg::OnInitDialog类中添加组合框的初始化

// TODO: 在此添加额外的初始化代码m_cbCalMethod.InsertString(DF_JIA, _T("+"));m_cbCalMethod.InsertString(DF_JIAN, _T("-"));m_cbCalMethod.InsertString(DF_CHENG, _T("*"));m_cbCalMethod.InsertString(DF_CHU, _T("/"));m_cbCalMethod.SetCurSel(DF_JIA);  //默认为加号

Dlg.cpp添加成员函数定义

float C计算器Dlg::GetResult(float fData_01, float fData_02, int nFlag){switch (nFlag){case DF_JIA:return (float)(fData_01 + fData_02);case DF_JIAN:return (float)(fData_01 - fData_02);case DF_CHENG:return (float)(fData_01 * fData_02);case DF_CHU:return (float)(fData_01 / fData_02);default:break;}return (float)-1;}

void C计算器Dlg::OnBnClickedOk(){//CDialogEx::OnOK();GetDlgItemText(IDC_EDIT1, m_strData_01);GetDlgItemText(IDC_EDIT2, m_strData_02);GetDlgItemText(IDC_COMBO1, m_strSymbol);int nFlag = ((CComboBox *)GetDlgItem(IDC_COMBO1))->GetCurSel();float fResult = GetResult(atof((_bstr_t)m_strData_01), atof((_bstr_t)m_strData_02),nFlag);m_strResult = _T("");m_strResult.Format(_T("%.5f"), fResult);SetDlgItemText(IDC_EDIT3, m_strResult);}

查阅MSDN,CComboBox类是Combo Box对应的控件类

int AddString(   LPCTSTR lpszString );
在列表末尾添加相应字符串,但是排列顺序不一定是末尾,如果要在特定位置插入字符串使用InsertString

int InsertString(   int nIndex,   LPCTSTR lpszString );

nIndex 包含从零开始的索引来在将接收该字符串的列表框的位置。如果此参数是– 1,则字符串添加到列表的末尾。

lpszString  指向要插入的Null终止的字符串

int GetCurSel( ) const;

取得选定项的索引值,在这个程序里加减乘除有各自对应的const int作为索引值(0,1,2,3)并通过索引值判断是使用哪个计算方法

用GetDlgItemText和SetDlgItemText来取得和设置Edit Control文本

BOOL GetDlgItemText(   int nID,   BSTR& bstrText ) const throw();
virtual void SetDlgItemText(   int nID,   LPCTSTR lpszString );

nID为控件的标识符,bstrText和lpszString为对应文本,其中BSTR类型就是wchar*类型,和CStringW可以共用。

另外可以用_bstr_t将CStringW强制转化成char*类型

0 0
原创粉丝点击