MFC获取编辑框内容以及UpdateData方法

编程中多次用到获取界面中编辑框中的内容。关于编辑框还有一些其他的问题:如UpdateData(TRUE),函数参数为TRUEFALSE的含义,以及编辑框关联值变量(CString)以及控件变量(Edit)获取编辑框的内容等问题。先就这几个问题做小结,供后续参考,后续再做补充。

新建测试界面如下:


测试工程界面

一、关联字符串变量的编辑框获取编辑框的内容

关联字符串变量的编辑框添加变量(值变量,Value  CString 如下图所示)


编辑框控件关联值变量

对应地测试代码添加到 测试对应的消息响应函数中,代码如下:

void CGetEditctrlDataDlg::OnTest()
{
//调用函数
//BOOL b=TRUE;
BOOL b=FALSE;
UpdateData(b);
CString str;
//b=TRUE  str的值为输入编辑框的字符串值
//b=FALSE  str的值为 空
str=m_strValue;
MessageBox(str);
}

代码中调用函数UpdateData获取变量的值,参数为TRUEFALSE所得结果见注释。

这里对UpdateData函数做一个小结:

UpdateData(TRUE): 表示写数据,将窗口控制变量写入内存(更新数据) 

-------使用OnOk时将自动调用UpdateData(True) ,用以将窗口数据写入内存相应成员变量中

UpdateData(FALSE): 表示读数据,即显示窗口读取内存的数据以供实时显示  

------使用OnInitDialog中,MFC调用UpdateData((FALSE)将内存成员数据显示到对应的窗口中

 

所谓写数据,即是将外部数据写入到内存变量中(改变内存数据);

所谓读数据,显示窗口读取内存数据(不改变内存数据)

 

二者经常使用于如下情况:  

     在设置窗口数据默认值时,或将窗口数据作为控制参数传入到内存时,这时需要往内存写入数据,此时应首先调用UpdataData(TRUE); 

     写入之后,需要观察内存这个数据的变化,这时应该时刻读取内存数据,此时应调用UpdateData(FALSE)

 

例如 CDialog两个成员函数OnInitDialog()和OnOK()

BOOL CDialog::OnInitDialog()
{ 
// execute dialog RT_DLGINIT resource 
BOOL bDlgInit; 
if (m_lpDialogInit != NULL)  
bDlgInit = ExecuteDlgInit(m_lpDialogInit); 
else  
bDlgInit = ExecuteDlgInit(m_lpszTemplateName);
if (!bDlgInit) 
{  TRACE(traceAppMsg, 0, "Warning: ExecuteDlgInit failed during dialog init./n");  
EndDialog(-1);  
return FALSE; 
}
// transfer data into the dialog from member variables 
if (!UpdateData(FALSE)) 
{  
TRACE(traceAppMsg, 0, "Warning: UpdateData failed during dialog init./n");  
EndDialog(-1);  return FALSE; 
}
// enable/disable help button automatically 
CWnd* pHelpButton = GetDlgItem(ID_HELP); 
if (pHelpButton != NULL)  
pHelpButton->ShowWindow(AfxHelpEnabled() ? SW_SHOW : SW_HIDE);
return TRUE;    // set focus to first one
}

void CDialog::OnOK()
{ 
if (!UpdateData(TRUE)) 
{  
TRACE(traceAppMsg, 0, "UpdateData failed during dialog termination./n");  // the UpdateData routine will set focus to correct item  
return; 
} 
EndDialog(IDOK);
} 

关于UpdateDate函数,设置断点发现,该函数在CDialog启动的时候,和关闭的时候都调用。解释:CWnd::UpdateData
调用此函数来初始化对话框中的数据,或者从对话框中接收数据。当一个模态对话框被创建,框架会自动在CDialog::OnInITDialog中调用UpdateDataFALSE),这种调用发生在对话框可视情况下,默认的CDialog::OnOK会调用UpdateDataTRUE)来接收数据。。。如果接收成功。。。就会关掉对话框。。。Cancel对话框不会调用此函数而直接关闭对话框。 简单的说,如果Updatedata(TRUE) == 将控件的值赋值给成员变量,Updatedata(FALSE) == 将成员变量的值赋值给控件

二、关联控件变量的编辑框获取编辑框中的内容

编辑框控件关联控件变量

对应地测试代码添加到 测试对应的消息响应函数中,代码如下:

void CGetEditctrlDataDlg::OnTest2()
{
//第二个编辑框关联的是一个Edit的控件变量
CString str;
//方法1 获取没有关联 值变量 的编辑框中的内容 通过ID号
//GetDlgItem(IDC_EDIT_TWO2)->GetWindowText(str);
//方法2 获取没有关联 值变量 的编辑框中的内容 通过编辑框关联的 控件变量
m_editctrl.GetWindowText(str);
MessageBox(str);
}

代码中方法1和方法2都是有效的,都可以在此情况下获取编辑框中的内容。

  • 4
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MFC是一种基于Microsoft Foundation Classes的框架,可用于Windows应用程序开发。要实现数据库登录界面,需要使用MFC提供的类库中的一些类和控件。 以下是一个简单的MFC数据库登录界面的示例: 1. 创建一个MFC对话框应用程序。 2. 在资源编辑器中添加一个对话框,设置它的标题和大小。 3. 在对话框中添加以下控件: - 两个静态文本控件,一个用于输入用户名,另一个用于输入密码。 - 两个编辑框控件,一个用于输入用户名,另一个用于输入密码。 - 一个按钮控件,用于登录。 4. 在对话框类的头文件中添加以下成员变量: CString m_strUsername; CString m_strPassword; 5. 在对话框类的消息映射中添加以下代码: void CLoginDlg::OnBnClickedButtonLogin() { UpdateData(TRUE); // TODO: 连接数据库并验证用户名和密码 EndDialog(IDOK); } 6. 在OnBnClickedButtonLogin函数中,首先调用UpdateData(TRUE)来获取编辑框中的文本,并将其存储在成员变量m_strUsername和m_strPassword中。 7. 然后,使用ODBC API或MFC的CDatabase类连接到数据库,并验证用户名和密码是否正确。 8. 如果验证成功,调用EndDialog(IDOK)来关闭对话框并返回IDOK。 9. 如果验证失败,可以显示一个错误消息框,或者清空用户名和密码编辑框,让用户重新输入。 这就是一个简单的MFC数据库登录界面的实现。当然,实际开发中需要注意安全性和稳定性等问题,并根据实际需求进行适当的修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

法哥2012

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值