使用DDX_Text()无法获取EDIT CONTROL控件输入的内容(显示大致相同)

1、问题阐述

1、代码

  • 资源文件

  •  相关函数变量的声明
protected:
    virtual void DoDataExchange(CDataExchange* pDx);
    
    CString GetConfigInfo();                //获取控件的值
    void SetConfigInfo(CString strInfo);            //设置控件的值

private:
    double m_dDataRecvRate;
  • 控件与变量值的绑定
void 类名::DoDataExchange(CDataExchange* pDx)
{
    CDialog::DoDataExchange(pDx);

    //DDX_Text关联控件(输入值和显示值)与变量
    DDX_Text(pDx , IDC_EDIT_DATARECVRATE , m_dDataRecvRate);
}
  • 获取控件输入的值
CString GetConfigInfo()
{
	CString strTmp;
	CString strInfo = "0;";

    strInfo += strTmp.Format("%f;" , m_dDataRecvRate);
	
	strInfo += "\r\n";
	return strInfo;
}
  • 设置控件的值
void SetConfigInfo(CString strInfo)
{
	int nFindIndex = -1;
	
	nFindIndex = strInfo.Find(';');
	if(nFindIndex != -1)
	{
		m_dDataRecvRate = atof(strInfo.Left(nFindIndex));
		strInfo.Delete(0,nFindIndex+1);
	}

}

2、出现的问题

  • 问题1:

  •  问题2:

2、解决的方式

  • 问题1解决方法:

  •  问题2解决方法:

3、涉及的知识点

  • UpdateData

    • 用法1:UpdateData(true);
UpdateData(true);        //用于将屏幕上控件中的数据载入到变量中
    • 用法2:UpdateData(false);
UpdateData(false);        //用于将控件变量的数据在对应的控件中进行显示出来

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ddx_control是一个MFC的宏定义,用于将控件的值与对应的变量进行绑定。 具体用法如下: 1. 在DoDataExchange函数中使用ddx_control宏定义,将控件和变量进行绑定: ``` void CMyDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_EDIT1, m_edit1); // 将IDC_EDIT1控件与m_edit1变量进行绑定 } ``` 2. 在OnInitDialog函数中使用GetDlgItem函数获取控件的句柄,并将其与变量进行绑定: ``` BOOL CMyDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // 获取IDC_EDIT1控件的句柄,并将其与m_edit1变量进行绑定 m_edit1.SubclassDlgItem(IDC_EDIT1, this); return TRUE; } ``` 3. 在响应控件事件时,可以通过控件句柄获取控件的值,并将其赋值给对应的变量: ``` void CMyDlg::OnOK() { CString str; m_edit1.GetWindowText(str); // 获取IDC_EDIT1控件的值 m_myData.m_strEdit1 = str; // 将IDC_EDIT1控件的值赋值给m_myData.m_strEdit1变量 CDialogEx::OnOK(); } ``` 4. 在响应变量改变时,可以通过控件句柄将变量的值设置给控件: ``` void CMyDlg::OnMyDataChanged() { m_edit1.SetWindowText(m_myData.m_strEdit1); // 将m_myData.m_strEdit1变量的值设置给IDC_EDIT1控件 UpdateData(FALSE); // 更新控件的值 } ``` 注意事项: 1. 使用ddx_control绑定控件和变量时,变量的类型必须与控件类型匹配。 2. 在使用GetDlgItem函数获取控件句柄时,必须在OnInitDialog函数中调用。 3. 在使用SetWindowText函数设置控件值时,必须保证控件已经创建,并且在当前线程中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值