读书人

求教个CString赋值的有关问题~小弟我这

发布时间: 2012-08-25 10:06:20 作者: rapoo

求教个CString赋值的问题~~我这样写错在哪里了?
public:
void OnAfx();
///////////////////////
CMyHookDlg * dlg;
CString S;
void CMyHookDlg::OnBnClickedButton2()
{
S=_T("A");
dlg->OnAfx();
}
void CMyHookDlg::OnAfx()
{

m_e1=S;// 错在这里 为什么不能直接赋值啊? m_e1是Edit控件CString 类型的 中断在return( reinterpret_cast< CStringData* >( m_pszData )-1 );


UpdateData(false);

}

求教啊~~~~~

[解决办法]
楼主可以时移CEdit类型,这样就可以直接
m_edit1.SetWindowText(2);

定义成CString类型,好像需要使用到Update(FALSE/TRUE)啥的,具体我没有那样使用过;
[解决办法]
DoDataExchange函数下面
DDX_Text(pDX, 控件资源编号, CString类型变量);
例子:
DDX_Text(pDX, IDC_EDIT_TASKNAME, m_TaskName);
[解决办法]
类型之间是没有问题的,好像你的用法有问题;貌似函数OnAfx()里的S应该定义为类成员变量。
[解决办法]
同一个类中函数调用,不用再用指针来调用吧,直接调用就行,改成这样:
void CMyHookDlg::OnBnClickedButton2()
{
S=_T("A");
dlg->OnAfx();//直接用OnAfx();
}

[解决办法]
void CMyHookDlg::OnBnClickedButton2()
{
S=_T("A");
OnAfx();
}
void CMyHookDlg::OnAfx()
{

//m_e1=S;// 错在这里 为什么不能直接赋值啊? m_e1是Edit控件CString 类型的 中断在return( //reinterpret_cast< CStringData* >( m_pszData )-1 );

m_e1.SetWindowText(S);

UpdateData(false);

}

这样应该可以吧?
[解决办法]
dlg->OnAfx();
去掉dlg
[解决办法]
会不会是编码的问题?

读书人网 >VC/MFC

热点推荐