语言:的Visual C++,MFC传递变量名的功能
环境: Visual Studio 2005中
所以我张贴了类似的问题,但我认识到,我是问错误的问题。我试图用一个循环来调用几个不同变量的函数,但是在这个过程中的某个地方,程序崩溃了。
简化的代码在下面,但我认为它实际上更容易解释它。我有一个函数将CString作为参数。我有几个变量我希望提供给这个函数,所以我把他们的名字放到一个数组中,我试图通过这种方式将它们传递给函数。
//下面的代码是什么,我也有,但它不工作//
头文件:
CString m_strTop;
CString m_strLeft;
CString m_strRight;
CString m_strBottom;
CString *var[4];
源文件: 构造函数( )
CString *var[4] = {
&m_strTop
, &m_strLeft
, &m_strRight
, &m_strBottom
};
源文件: theFunction()
void myClass::DoDataExchange(CDataExchange* pDX)
{
CSAPrefsSubDlg::DoDataExchange(pDX);
for(int i = 2001, j = 0; i <= 2004; i++, j++)
{
// THE LINE BELOW IS WHERE THINGS GO WONKY, SPECIFICALLY AT &var[j]
DDX_Text(pDX, i, *var[j]); // 'i' is the ID of the textbox
}
}
- DDX_TEXT期待什么 -
void AFXAPI DDX_Text(
CDataExchange* pDX,
int nIDC,
CString& value
);
所以就像我说的,我只需要给函数提供变量的实际名称。至少我想。实际上做的是在对话框中的文本框和文本框的输入将被存储的变量之间建立连接。我正确地解除引用和一切,但我不认为这是正确的方法。
谢谢你的帮助。对于回答我上一个问题的人,我很抱歉歪曲了这个问题。
拍摄,复制和粘贴错误的东西。我把它正确地作为* var [j],但它仍然无法正常工作。这不是存储在我感兴趣的变量中的信息,而是变量的实际名称。我是否需要创建一个变量名称的CString数组? – Jon 2011-06-13 16:21:47
什么是DDX_Text寻找?如果它正在寻找对CString的引用,那么否,否则,你需要使var为CString [] = {“m_strTop”,“m_strLeft”,...};自从我使用DDX_Text已经很久了,我不记得它是什么,因为它是第三个参数 – miked 2011-06-13 16:23:51
什么是“变量名称”?在你的情况下,'DDX_Text'根据'CDataExchange :: m_bSaveAndValidate'的值将控件的值(编辑框或类似的东西)复制到'CString'中,反之亦然。 – 2011-06-13 16:26:11