关于控件接口的有关问题
关于控件接口的问题
写了个小控件activeX. 程序用的unicode编码
有一个接口是:VARIANT_BOOL ED_BaseCode(BSTR strCode , BSTR * strRtnCode)
{
////一些处理,得出一个字节数组BYTE strByteData[16]//这里大小 16 没问题
char * base64Encode = base64_encode((const char *)sy_cipher,16);
CString strRtn = A2W((char*)sy_cipher);
*strRtnCode= strRtn.AllocSysString();
//这里另外一种改进CComBSTR aa copyto 方法也用过,情况与上面的一样
}
//这里相当与对上面的进行解码 strCode === 是上面接口的出参值
另外一个接口是:VARIANT_BOOL ED_BaseDeEncode(BSTR strCode , BSTR * strRtnCode)
{
//一些处理
CString strData = strCode ;
char * porgData = W2A(strData .GetBuffer());
int ilen = strlen(porgData);
char *base64DeEncode = base64_decode(porgData,ilen);
//到这里,base64DeEncode 这个值,就与上面接口传出的值 就不一样了。通过跟踪,发现少了一个一字节
//说明下,可能大家伙会认为我内存分配少了,事实不是这样的,换成其他的数据可能少好几个字节
}
===下面是测试ocx的demo调用
首先是调用第一个接口 ED_BaseCode
//m_ocx关联ocx控件
BSTR bb;
m_ocx.ED_BaseCode(L"111",&bb);
USES_CONVERSION;
CString cstr1 =pp;
strJMEdData =cstr1;
//strJMEdData 是成员变量CString类型 在后台要调用到
===========================
然后是调用第二个接口ED_BaseDeEncode
BSTR ppp ;
m_GM.DeEncryptData(strJMEdData,L"111111",&ppp);
//strJMEdData就是上面赋值的数据在这里调用
================================
代码跟踪后,在ocx里代码里跟踪,数据就与之前返回的不一样了
------解决思路----------------------
好象是位不对
写了个小控件activeX. 程序用的unicode编码
有一个接口是:VARIANT_BOOL ED_BaseCode(BSTR strCode , BSTR * strRtnCode)
{
////一些处理,得出一个字节数组BYTE strByteData[16]//这里大小 16 没问题
char * base64Encode = base64_encode((const char *)sy_cipher,16);
CString strRtn = A2W((char*)sy_cipher);
*strRtnCode= strRtn.AllocSysString();
//这里另外一种改进CComBSTR aa copyto 方法也用过,情况与上面的一样
}
//这里相当与对上面的进行解码 strCode === 是上面接口的出参值
另外一个接口是:VARIANT_BOOL ED_BaseDeEncode(BSTR strCode , BSTR * strRtnCode)
{
//一些处理
CString strData = strCode ;
char * porgData = W2A(strData .GetBuffer());
int ilen = strlen(porgData);
char *base64DeEncode = base64_decode(porgData,ilen);
//到这里,base64DeEncode 这个值,就与上面接口传出的值 就不一样了。通过跟踪,发现少了一个一字节
//说明下,可能大家伙会认为我内存分配少了,事实不是这样的,换成其他的数据可能少好几个字节
}
===下面是测试ocx的demo调用
首先是调用第一个接口 ED_BaseCode
//m_ocx关联ocx控件
BSTR bb;
m_ocx.ED_BaseCode(L"111",&bb);
USES_CONVERSION;
CString cstr1 =pp;
strJMEdData =cstr1;
//strJMEdData 是成员变量CString类型 在后台要调用到
===========================
然后是调用第二个接口ED_BaseDeEncode
BSTR ppp ;
m_GM.DeEncryptData(strJMEdData,L"111111",&ppp);
//strJMEdData就是上面赋值的数据在这里调用
================================
代码跟踪后,在ocx里代码里跟踪,数据就与之前返回的不一样了
------解决思路----------------------
好象是位不对