介绍VC中3种方法得到文本框中的值

来源:互联网 发布:linux 查看监听端口 编辑:程序博客网 时间:2024/06/05 06:35

字号 订阅

      现在介绍介绍VC++6.0中2种方法得到文本框中的值.一种是用户选择下拉列表后,采用GetCurSel()方法获取其输入的索引选项,再根据返回的索引号调用GetLBText()方法,从而可以获取其文本;第二种方法是直接调用GetWindowText()方法获取文本框中的值。第三种方法直接根据ControlID调用  GetDlgItemText()获取其文本;相比之下,第一种方法一般适合下拉列表可以选择,但又不允许输入的情况下;第二种方法适合无需用户选择下拉列表,即可获取文本框的情况;第三种方法与第二种差不多,但更有优势,即无需要设置控件的变量,直接根据其ControlID来获取值,但缺点就是可读性不是很好。总之三种各有千秋,应因时因地选择,否则,用得不恰当,效果适得其反。

    举个例子,先新建一个MFC(.exe)的工程,选择"对话框"类型;在工具栏上分别拖一个CComboBox和一个CButton控件到界面中,并按Ctrl+W,新建一个类,如CTESTDLGDlg。然后将CComboBox命名成"m_cbo"的Control类型,并右击该控件,选择“属性”->“列表”,输入"china","america","japan","中文","英文","日文",每输入一个请按Ctrl+Enter,以便可以输入下一个;接着,我们双击一下CButton控件,编辑其方法;代码如下:

void CTESTDLGDlg::OnButton1() 
{
 // TODO: Add your control notification handler code here 
  
    int nIndex = m_cbo.GetCurSel(); //得到选择的选项值
    CString strCBText; 
    m_cbo.GetLBText(nIndex,strCBText); 
  strCBText.Format("strCBText=%s,nIndex=%d",_T(strCBText+"\0"),nIndex); //此处字符串后加\0是为了防止输出时乱码
 AfxMessageBox(_T("您选择的是:"+strCBText));

 CString strInput;              //得到文本框中的值
 m_cbo.GetWindowText(strInput);
 AfxMessageBox(_T("您输入的是:"+strInput));
}

然后,我们按Ctrl+F5运行程序,我们就会发现弹出的对话框能正确地显示我们需要的效果。