为什么UpdateData(true)后没有得到控件的值? 在一个对话框里,有一个EDIT控件,我在EDIT控件改变时,先UpdateData(true),断点调试,可没有得到该控件的值,检查了变量关联,是正确的,还有resource.h文件中定义的ID,开始时有重复的,也手工改过来,但还是没有得到变量的值,到底什么原因呀?谢谢各位,在线等…… 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 还有,在resource.h文件中定义的ID值有什么要求,会不会是改错了?我是有重复ID的,都把原来的1000多改为2000多,把1改为2。 和ID没有关系,只要同一个对话框中的ID不重复就可以了。肯定程序那个地方有错啊。贴出来看看吧。 把关联变量的值改一下,然后UpdateData(FALSE),看看能否修改控件的值 在什么函数,怎么调用的UpdateData(),贴代码看看,一看就知道了 我也遇到这个问题了,好象updatedata没什么用处一样 在输入内容改变时触发消息的处理函数中,部分代码如下void CChangeDlg::OnChangeChangeEditId() { CRecordset rs(&db); CString strDep,strJob; CString str, strSQL; int i = 1; UpdateData(true); //***此处设断点,然后单步执行,m_strID即 为EDIT控件关联的变量,updatedata后,m_strID的值总是空的 if(!m_strID.Find("P")) str.Format("P%05d",m_strID); m_strID = str; //构造记录集 rs.Open(CRecordset::forwardOnly,"select * from PERSON where ID='"+ str +"'");但把代码如下,断点在断点处确可以得到str即EDIT传入的值void CChangeDlg::OnChangeChangeEditId() { CRecordset rs(&db); CString strDep,strJob; CString str, strSQL; int i = 1; m_ctrID.GetWindowText(str); if(m_strID.Find("P")) // 此处m_strID.find("P")没有意义,只 // 是为了测试能不能得到控件的值,但是当我确定能 // 得到后,把m_strIDfind("P")改为str.find("P"), // 再试断点跟踪时str值又是空的。还有,我在if( // m_strID.find("P");前加上 m_strID = str.此时str // 是控件传入的值,但m_strID仍是空值。真是太奇 // 怪了,大家帮我看看怎么回事? str.Format("P%05d",m_strID); m_strID = str; //构造记录集 rs.Open(CRecordset::forwardOnly,"select * from PERSON where ID='"+ str +"'"); //顺序取出记录集中的资料 上面的变量m_ctrID为EDIT关联的control型变量。 m_strID是不是关联的CString类型的变量啊? m_strID是与EDIT关联的CString类型的变量 我有点看不大明白,EDIT关联的是哪个变量?什么类型? 检查一下CChangeDlg::DoDataExchange()这个函数,看看你的m_strID是否确实跟控件关联了。 求msdn用法! VS2005 Find In Files 按钮无法使用 如何生成指定范围内的单精度随机数?如0.000001-0.999999 怎样将打开的线程关掉? 有关SOCKET中,SEND的缓冲区的问题 怎样控制ListCtrl(报表形式)高亮显示多行? 我使用eVC打开一本书带的小程序,build时出现了现面的错误,详情请进来看看! 如何在关掉一个对话框是同时关掉它所在的窗口 怎样修给 建议在这里划分等级,以示大虾和高手的级别!不要这么乱糟糟的一团! MFC下打印预览如何实现? 极难问题!怎样将TreeCtrl中TVI_ROOT节点下的多个节点的连线去掉???
void CChangeDlg::OnChangeChangeEditId()
{
CRecordset rs(&db); CString strDep,strJob;
CString str, strSQL;
int i = 1;
UpdateData(true); //***此处设断点,然后单步执行,m_strID即
为EDIT控件关联的变量,updatedata后,m_strID的值总是空的 if(!m_strID.Find("P"))
str.Format("P%05d",m_strID);
m_strID = str; //构造记录集
rs.Open(CRecordset::forwardOnly,"select * from PERSON where ID='"+ str +"'");但把代码如下,断点在断点处确可以得到str即EDIT传入的值
void CChangeDlg::OnChangeChangeEditId()
{
CRecordset rs(&db); CString strDep,strJob;
CString str, strSQL;
int i = 1;
m_ctrID.GetWindowText(str); if(m_strID.Find("P")) // 此处m_strID.find("P")没有意义,只
// 是为了测试能不能得到控件的值,但是当我确定能
// 得到后,把m_strIDfind("P")改为str.find("P"),
// 再试断点跟踪时str值又是空的。还有,我在if(
// m_strID.find("P");前加上 m_strID = str.此时str
// 是控件传入的值,但m_strID仍是空值。真是太奇
// 怪了,大家帮我看看怎么回事?
str.Format("P%05d",m_strID);
m_strID = str; //构造记录集
rs.Open(CRecordset::forwardOnly,"select * from PERSON where ID='"+ str +"'");
//顺序取出记录集中的资料