在使用MFC的Edit Control等控件时可能你会遇到这样的问题:error:“DDX_Control”: 不能将参数 3 从“int”转换为“CWnd &”或error:“DDX_Control”: 不能将参数 3 从“CString”转换为“CWnd &”.这是什么原因呢?
一.浅析
查看资料和搜索后,我也看到了一些具体分析:
在一个对话框程序里,有个按钮IDC_BUTTON_OK。Ctrl+w (VC6.0)或Ctrl+Shift+X进入类视图,在member variables页双击列表里的IDC_BUTTON_OK就会有个对话框出来,中间的这个组合框里一般列出2种:
一种是数据型比如CString和int;另一种就是控件型CButton。
前者数据型是该控件的标题内容,后者就是控件本身绑定的一个对象。DDX_Contral是后者型,_Control是控件类型,_TEXT是数据型。修改如下:( DDX_函数是数据交换函数)
DDX_Control(pDX, IDC_BUTTON1, m_Botton1);改成
DDX_Text(pDX,IDC_BUTTON1,m_Botton1);(或删除该语句)
二.深度分析
它出现该错误的原因是什么呢?
我发现在类向导添加控件变量int CString时(Ctrl+Shitf+X)
应该先选择Value类别,而不是Control强制该变量类型为int型,然后在变量类型中选择int、CString型.在自定义变量名.这样强制的转换就会造成具体的错误.
如上图所示添加一个Edit Control(编辑框)控件,同时定义该控件为CString类型,变量名为m_edit5,在类别中有Control和Value,选择Value。
同时好像在Button控件中我尝试选择Value,好像只有Control类别,因为有的控件很特殊,如按钮,它本身只能定义为Button类型,具体控件具体分析。
希望上面的文章能帮助大家,高手略过。同时浅析中参考了下面博客的内容:
http://hi.baidu.com/wangguang246/item/8d4cad9f03625bdf1e427128
深度分析是自己的见解,错误的地方见谅!
(2013-6-8-夜2点 by:Eastmout)