环境VS2008,unicode。
1,绑定变量
在VC6中可以使用Add Variable添加绑定变量。在VS2008中没有绑定变量的设定。
我尝试使用以下方法绑定编辑框的文本变量,但不对。
1),放置编辑框控件“IDC_EDIT1”。使用"添加变量向导"添加变量m_text,类型为CString。
2),增加绑定代码
void Ctest8Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, m_text);     //增加此行
}
3),使用MessageBox(m_text)显示编辑框的值。4),然后编译会报错。重新修改。请问此处是什么原因???Ctest8Dlg::Ctest8Dlg(CWnd* pParent /*=NULL*/)
: CDialog(Ctest8Dlg::IDD, pParent)
, m_text(0)                          //注销掉此行后编译可以通过                      
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); 
}
5),重新编译可以通过,但是MessageBox(m_text)不能显示编辑框的值。
请问是什么原因?VS2008要怎么绑定变量?2,绑定控件变量
在程序的对话框中绑定控件变量正确使用,但在DLL的对话框中相同方法绑定控件变量编译可以通过,执行错误。
我把一个列表框绑定变量m_list,然后使用以下代码即可。
void Ctest8Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
m_npclist.AddString(_T("北京"));
}
但是我在DLL的对话框中相同的方法使用编译没有问题,程序执行错误。请问是什么原因?

解决方案 »

  1.   

    在VC6中可以使用Add Variable添加绑定变量。在VS2008中没有绑定变量的设定。
    ====================
    没用过VS2008,但是VS2005中是有的,只不过操作方法变了而已,所以2008应该也是有的。
      

  2.   

    我就是这样添加的变量,没有用。程序都没有增加此行
    DDX_Text(pDX, IDC_EDIT1, m_text); 
    根本就没有跟控件联系起来。
      

  3.   

    1,绑定变量
    VS2008是也是有的,你右键控件,在弹出的Wizard对话框中去掉Control variable即可关联非控件类型
      

  4.   

    三楼说的是正确的,可能是你那里的问题。
    将工程关闭后打开一下试试,实在不行就手动添加变量在CPP文件添加如下代码,(对照你自己的工程)
    CDebugDlg::CDebugDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CDebugDlg::IDD, pParent)
    , m_edit1(_T(""))
    {}
    void CDebugDlg::DoDataExchange(CDataExchange* pDX)
    {
    CDialog::DoDataExchange(pDX);
    DDX_Text(pDX, IDC_EDIT3, m_edit1);

    }
    在.h中添加声明
    CString m_edit1;
    或者 CEdit m_edit1;
      

  5.   

    5),重新编译可以通过,但是MessageBox(m_text)不能显示编辑框的值。
    请问是什么原因?VS2008要怎么绑定变量?
    -----------------------
    在MessageBox输出之前,你需要调用UpdateData();然后MessageBox/AfxMessageBox输出
      

  6.   

    Ctest8Dlg::Ctest8Dlg(CWnd* pParent /*=NULL*/)
        : CDialog(Ctest8Dlg::IDD, pParent)
        , m_text(0)                          //注销掉此行后编译可以通过                      
    {
        m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); 
    }-----------------------
    这里的代码m_text(0);这里你直接写个0是会有问题的,因为匹配的构造函数有多个,会出现ambiguous call错误,你可以写成m_text(_T(""))这样就可以了
      

  7.   


    谢谢。。原来是我在MessageBox(m_text)忘了加UpdateData();
    应该是
    UpdateData();
    MessageBox(m_text);
      

  8.   

    那第二个"绑定控件变量"的问题是怎么回事?
    在程序的对话框中绑定控件变量正确使用,但在DLL的对话框中相同方法绑定控件变量编译可以通过,执行错误。