您的位置:首页 > 编程语言 > C#

智能设备 C#调用MFC DLL 传参值为汉字的解决方案 CString转存 unsigned char数组

2007-12-23 19:37 465 查看
C#中调用:


[DllImport(DLLName, EntryPoint = "pdaAppRead", CharSet = CharSet.Auto, SetLastError = true)]


public static extern short td_select(Int32 Adr, byte[] getData);


private void button1_Click(object sender, EventArgs e)//写




...{


string s = "这是测试1";


s = textBox1.Text;


byte[] b = Encoding.Unicode.GetBytes(s);//Encoding.Default.GetBytes(s);也可以;


td_select(2, s);


}



C++


LPSTR unicodeTOmbcs(CString str)




...{


LPSTR retlpa;


LPCOLESTR lpw;


lpw=(LPCOLESTR)str;


size_t wLen = wcslen( lpw ) + 1; // 宽字符字符长度,+1表示包含字符串结束符




int aLen=WideCharToMultiByte( // 第一次调用,计算所需 MBCS 字符串字节长度


CP_ACP,


0,


lpw, // 宽字符串指针


wLen, // 字符长度


NULL,


0, // 参数0表示计算转换后的字符空间


NULL,


NULL);




LPSTR lpa = new char [aLen];




WideCharToMultiByte(


CP_ACP,


0,


lpw,


wLen,


lpa, // 转换后的字符串指针


aLen, // 给出空间大小


NULL,


NULL);


// 此时,lpa 中保存着转换后的 MBCS 字符串




retlpa=lpa;


delete [] lpa;


return retlpa;


}




int td_select(unsigned char _Adr,unsigned char *_Data)




...{


CString inputstr=(LPCWSTR)_Data;


CString result;


LPSTR lpa=NULL;


unsigned char data[16];


lpa=unicodeTOmbcs(inputstr);//转换


strcpy((char *)data,(const char *)lpa);//data 这是测试1


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: