MFC Edit控件 error:“DDX_Control”: 不能将参数 3 从“int”转换为“CWnd &”

简介:

在使用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)

 

目录
相关文章
|
2月前
|
TensorFlow 算法框架/工具
Tensorflow error(二):x and y must have the same dtype, got tf.float32 != tf.int32
本文讨论了TensorFlow中的一个常见错误,即在计算过程中,变量的数据类型(dtype)不一致导致的错误,并通过使用`tf.cast`函数来解决这个问题。
25 0
error C2040: ‘n‘ : ‘int [1000]‘ differs in levels of indirection from ‘int ‘
error C2040: ‘n‘ : ‘int [1000]‘ differs in levels of indirection from ‘int ‘
127 0
|
关系型数据库 MySQL C++
类型收窄 error C2397: conversion from ‘const int‘ to ‘char‘ requires a narrowing conversion
类型收窄 error C2397: conversion from ‘const int‘ to ‘char‘ requires a narrowing conversion
191 0
|
关系型数据库 MySQL C++
Error:E0415 no suitable constructor exists to convert from “int“ to “Rational“
Error:E0415 no suitable constructor exists to convert from “int“ to “Rational“
172 0
|
Linux Windows
编译OpenJDK8-u302出错:error C3861: “INT64_C”: 找不到标识符
编译OpenJDK8-u302出错:error C3861: “INT64_C”: 找不到标识符
128 0
解决办法:error: unknown type name ‘__int64‘
解决办法:error: unknown type name ‘__int64‘
502 0
关于 error: invalid types ‘int[int]‘ for array subscript 的解决
关于 error: invalid types ‘int[int]‘ for array subscript 的解决
1462 0
关于 error: invalid types ‘int[int]‘ for array subscript 的解决
解决办法:error LNK2005: "void * __cdecl operator new(unsigned int)" 已经在 LIBCMTD.lib(new.obj) 中定义
解决办法:error LNK2005: "void * __cdecl operator new(unsigned int)" 已经在 LIBCMTD.lib(new.obj) 中定义
269 0
解决办法:error LNK2005: "void * __cdecl operator new(unsigned int)" 已经在 LIBCMTD.lib(new.obj) 中定义
解决办法:error LNK2005: "void * __cdecl operator new(unsigned int)" 已经在 LIBCMTD.lib(new.obj) 中定义
217 0