在这一函数内发生错误,我定义的m_sTime是CString类型
void CTimersDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_STATICTIME, m_sTime);说不能将参数 3 从“CString”转换为“CWnd &”什么原因,如何解决,请高手不吝赐教

解决方案 »

  1.   

    一般是你定义错了,我想你是定义了一个控件类的变量...
    DoDataExchange一般都是在CLASSWIZARD中自动完成的了
      

  2.   

    DDX_Text(pDX, IDC_STATICTIME, m_sTime);
      

  3.   

    DDX_函数是数据交换函数
    比如
    你在一个对话框程序里,有个按钮IDC_BUTTON_OK
    ctrl +w 进入类视图,在member variables页双击列表里的IDC_BUTTON_OK
    就会有个对话框出来,中间的这个组合框里一般列出2种,一种是数据型比如 CString和int
    另一种就是控件型 比如我说的例子就会出现CButton
    前者数据型是该控件的标题,后者就是控件本身绑定的一个对象了
    DDX_Contral是后者型
    _TEXT呢,就是数据型了
    你在不熟悉的时候不要手工添加这些东西,Ctrl + w用向导加吧
      

  4.   

    我用的是.net,找不到你说的东西
      

  5.   

    m_sTime是一个静态文本控件的变量
      

  6.   

    二楼正解。改一下就行了。
    DDX_Control(pDX, IDC_STATICTIME, m_sTime);改成
    DDX_Text(pDX, IDC_STATICTIME, m_sTime);
      

  7.   

    二楼说的没错,谁能帮我讲一下DDX_Control跟DDX_Text的区别呢,谢谢。
      

  8.   

    DDX_Control跟DDX_Text的区别:前者数据型是该控件的标题,后者就是控件本身绑定的一个对象
      去取里面值的方法不一样了   Text 直接用"= " Control呢,用GetWindowText()