C#调用MFC dll,把C#传入的内容显示在VC窗体上乱码
如题,我用C#调用MFCdll,将C#传入的内容显示在窗体上时乱码,求解!!MFC工程师unicode编码,怀疑是编码问题,但是不知道怎么解,请高手指点!========...
如题,我用C#调用MFC dll,将C#传入的内容显示在窗体上时乱码,求解!!
MFC工程师unicode编码,怀疑是编码问题,但是不知道怎么解,请高手指点!
=====================以下为代码部分==================================
DllImport int ShowDialog(char* ip,char* sn) //C#中调用的接口
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
COpalVideoDlg *ph = new COpalVideoDlg;
ph->Create(COpalVideoDlg::IDD);
ph->ShowWindow(SW_SHOW); //显示窗体
CString ipStr, snStr;
ipStr.Format(_T("%s"), ip);
snStr.Format(_T("%s"), sn);
//显示传入参数
ph->mSNEdt.SetWindowText(snStr); //乱码
ph->mIPIpc.SetAddress(htonl(inet_addr(CW2A(ipStr)))); //传入的ip显示后也不对
return 1;
}
直接在MFC赋值显示是OK的,如下:
CString ipStr = _T("192.168.1.99");
CString snStr = _T("111111111111"); 展开
MFC工程师unicode编码,怀疑是编码问题,但是不知道怎么解,请高手指点!
=====================以下为代码部分==================================
DllImport int ShowDialog(char* ip,char* sn) //C#中调用的接口
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
COpalVideoDlg *ph = new COpalVideoDlg;
ph->Create(COpalVideoDlg::IDD);
ph->ShowWindow(SW_SHOW); //显示窗体
CString ipStr, snStr;
ipStr.Format(_T("%s"), ip);
snStr.Format(_T("%s"), sn);
//显示传入参数
ph->mSNEdt.SetWindowText(snStr); //乱码
ph->mIPIpc.SetAddress(htonl(inet_addr(CW2A(ipStr)))); //传入的ip显示后也不对
return 1;
}
直接在MFC赋值显示是OK的,如下:
CString ipStr = _T("192.168.1.99");
CString snStr = _T("111111111111"); 展开
1个回答
展开全部
应该是编码问题。编码问题需要C#和C++来配合工作才行。
你这里只贴出了C++的函数实现,请贴出C#中ShowDialog的函数定义。
另外,上述ShowDialog没有使用Unicode,如果是Unicode的话,参数不应该是char,而应该使用wchar 或者TCHAR。
你这里只贴出了C++的函数实现,请贴出C#中ShowDialog的函数定义。
另外,上述ShowDialog没有使用Unicode,如果是Unicode的话,参数不应该是char,而应该使用wchar 或者TCHAR。
追答
工程里的设置,表明内部是按照Unicode来处理的。但是你内部并没有使用Unicode的字符串来存储,会出问题的。char *不是unicode字符串。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询