新手哇
给edit控件赋值GetDlgItem(IDC_EDIT)->SetWindowText( "test");编译无错,运行到这句赋值代码时报错 
“Debug Assertion Failed! Program:d\aaa\debug\aaa.exe 
File:wincore.cpp 
Line:312 For information on how your program can cause an assertion failure,see the Visual C++ documentation on asserts. (Press Retry to debug the application) Debug Assertion Failed”啥意思?我看网上都这么写赋值语句的啊,怎么我这里就报错了呢?

解决方案 »

  1.   

    崩溃的时候点 Retry看看在哪里崩的
      

  2.   

    在winocc.cpp文件里void CWnd::SetWindowText(LPCTSTR lpszString)
    {
    ENSURE(this);
    ENSURE(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL)); if (m_pCtrlSite == NULL)
    ::SetWindowText(m_hWnd, lpszString);
    else
    m_pCtrlSite->SetWindowText(lpszString);
    }下面这一句执行时报错
    ENSURE(this);
      

  3.   

    应该是你的窗口已经被销毁了吧,你是在哪里调用GetDlgItem(IDC_EDIT)->SetWindowText( "test");这个的?
      

  4.   

    哦,对了。是我错了
    我的控件在a.cpp文件里,我现在在b.cpp文件里给a.cpp文件的控件赋值
    这样应该怎么做??
    感谢前面几位回答
      

  5.   


    GetDlgItem(IDC_EDIT)->SetWindowText( "test");// 改成这样,下面这样就不会出错,并且你可以看一下pWnd这个指针有没有值,句柄有没有
    CWnd* pWnd = GetDlgItem(IDC_EDIT);
    if ( pWnd && ::IsWindow(pWnd->GetSafeHwnd()) )
        pWnd)->SetWindowText( "test");
      

  6.   

    在classWiz里,将这个控件变成value cstring,然后 直接赋值不就好了.为什么搞这么麻烦.
    你这样写也可以,但是 如果 你的b对该控件是不可见的话,你可以 将a实例化,再赋值
      

  7.   

    a.cpp,b.cpp分别是什么??是两个什么类的文件?
    如果你要在a类中对b类的控件赋值,你要得到b类的指针,这样那个this指针才有效啊,比如用: pB->GetDlgItem(IDC_EDIT)->SetWindowText("aa");
      

  8.   


    尝试了这样写法,但是没成功啊。。pWnd取得值为????显示值错误啊
      

  9.   


    就是a类对b类的控件赋值。b是dlg文件
    您这里的pB指什么?
      

  10.   

    按9楼说的整,以前有些书都是教
    GetDlgItem(IDC_EDIT)->SetWindowText( "test");
    害了不少人。
      

  11.   

    GetDlgItem(IDC_EDIT)->SetWindowText( "test");
    这句代码已经很详细了
    问题时又不知道你的应用环境
    怎么给你写代码
      

  12.   

    可以在控件上添加个变量。然后更新控件内容的时候调用 UPDATADATE(FALSE)
      

  13.   

    我在之前说过发消息
    而且他就说a.cpp、b.xpp我们怎么知道具体是什么情况
    那你说赋值具体该怎么写
      

  14.   

    1. 添加成员变量。在view-->classwiz里的弹出对话框里选择成员变量,定义一下名字,然后DoDataExchange里自动会生成DDX_Text()方法2. 如果用的是VS2008,直接右击控件,选择属性,添加成员变量就可以了
    3. 在另一个赋值的文件里,用控件类的类对象来操作上面生成的控件变量,给它赋值
     
      

  15.   

    成员变量我已经添加好了
    但是在另一个文件里,怎么给这个变量赋值?
    比如这个变量我定义的是strValue
    我虽然导入了前面定义的头文件,但还是报“未声明变量”
      

  16.   

    在调用的类里面定义一个那个对话框类的成员变量
    CDialog m_dlg;m_dlg.strValue = ....
      

  17.   

    确定正确this指针时候错的.
    应该是方的位置错了.
    放在initdialog里面.
      

  18.   

    GetDlgItem(IDC_EDIT)->SetWindowText( "test");
    GetDlgItem(IDC_EDIT)应该是没有找到IDC_EDIT这个控件吧!看看IDC_EDIT存在不存在。
      

  19.   

    if(IPdlg->DoModal() != IDOK) 
    //代码执行到这里的时候窗体已经被销毁了
    return; DoModal()函数执行时,窗体创建
    DoModal()函数返回时,窗体已经被销毁如果要操作CDialog中的控件必须在窗体销毁前处理。可以在OnOK  函数中执行
      

  20.   

    楼上的说的有道理,好像是这么回事
    不过OnOK函数是要按钮触发的吧?
    我不想动任何按钮就要触发的
      

  21.   


    看看人家这分得的多容易
    http://topic.csdn.net/u/20101013/08/7c06f198-864c-4aa4-ad48-4f3ae20c750b.html
      

  22.   

    我也在纠结LZ的问题,初学很懵懂,我是用的控件变量,开始也是想在a.cpp里控制b.cpp,但后来我决定在a   b里各写各的,很纠结啊!
      

  23.   

    我也在纠结LZ的问题,初学很懵懂,我是用的控件变量,开始也是想在a.cpp里控制b.cpp,但后来我决定在a   b里各写各的,很纠结啊!
      

  24.   

    检查一下EDIT的IDK号,是否正确
      

  25.   

    我也碰到了楼主的问题。我用visual studio 2010,这样解决的:dlgPopmenu->SetDlgItemTextA(IDC_EDIT_FF_CM,_T("EDIT控件内容"));dlgPopmenu:是Edit控件所在的dialog的指针。
    SetDlgItemTextA:修改对话框Edit控件的内容。低级的VC++编译器里可能是SetDlgItemText。
    IDC_EDIT_FF_CM:EDIT控件的ID。