请大侠帮忙翻译一段C++代码,谢谢!

cnluckyman 2010-01-14 11:33:12
void CallBackProc(BSTR BS_flag,BSTR BS_svalue1,BSTR BS_svalue2,BSTR BS_svalue3,BSTR BS_svalue4,BSTR BS_svalue5,
BSTR BS_svalue6,BSTR BS_svalue7 ,BSTR BS_svalue8)
{
// TODO: Add your control notification handler code here
int flag = atoi(_com_util::ConvertBSTRToString(BS_flag));
char *svalue1 = _com_util::ConvertBSTRToString(BS_svalue1);
char *svalue2 = _com_util::ConvertBSTRToString(BS_svalue2);
char *svalue3 = _com_util::ConvertBSTRToString(BS_svalue3);
char *svalue4 = _com_util::ConvertBSTRToString(BS_svalue4);
char *svalue5 = _com_util::ConvertBSTRToString(BS_svalue5);
char *svalue6 = _com_util::ConvertBSTRToString(BS_svalue6);
char *svalue7 = _com_util::ConvertBSTRToString(BS_svalue7);
char *svalue8 = _com_util::ConvertBSTRToString(BS_svalue8);

CString msgstr;
CString msgtemp;
recvNum ++;
if(flag == 4){
msgtemp.Format("%6d [业务响应包] SequenceID:%s MessID:%s STATUS:%s", recvNum, svalue1, svalue2, svalue3);
}
else if(flag == 5){
msgtemp.Format("%6d [上行短信包] SequenceID:%s 发送号码:%s 接收号码:%s 接收时间:%s 短信内容:%s",
recvNum, svalue1, svalue2, svalue3, svalue4, svalue5);
}
else if(flag == 7){
msgtemp.Format("%6d [短信回执包] SequenceID:%s MessID:%s 发送号码:%s 接收号码:%s 提交时间:%s 下发时间:%s 短信状态:%s 错误代码:%s",
recvNum, svalue1, svalue2, svalue3, svalue4, svalue5, svalue6, svalue7, svalue8);
}
MessageBoxA(NULL,msgtemp,"CallBackProc",MB_OK);
msgstr += msgtemp;
msgstr += '\n';
theApp.m_pMainWnd->GetDlgItem(IDC_SHOWMSG)->SetWindowText(msgstr);
}

void Startthread(CComPtr<IFullTunnelServiceControl>& spTmp)
{_variant_t callback;
VariantInit(&callback);
callback.vt = VT_NULL;
callback.pvRecord= (PVOID)CallBackProc;
cout<<"use com begin.........."<<endl;
CComBSTR str;
spTmp->StartRecv_User(callback);
cout<<"use com end............"<<endl;
}

void CSendTestDlg::OnStartthread()
{
_variant_t callback;
VariantInit(&callback);
callback.vt = VT_NULL; //组件用vt标识 是页面调用 还是 C++调用
callback.pvRecord= (PVOID)CallBackProc;
hr = spTmp->StartRecv_User(callback);
switch(hr)
{
case 0: //其他返回值参见COM调用错误编号 三.调用StartRecv_User
MessageBox("创建接收线程成功","OnStartthread",MB_OK);
break;
case 1:
MessageBox("创建接收线程失败","OnStartthread",MB_OK);
break;
default:
;
}
}
...全文
136 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
fang 2010-02-25
  • 打赏
  • 举报
回复
把那段代码包成动态库,在D里面直接调就好了,
irenewang 2010-02-24
  • 打赏
  • 举报
回复
我也在关注这个问题,要用C#调用这个com组件,就是回调函数的地方有问题,楼主你解决了没。
buding79 2010-01-22
  • 打赏
  • 举报
回复
我觉得就是一个回掉函数的调用。没什么阿?楼主在那里遇到问题了。
callback让我有些看不懂,看上去是个类。
cnluckyman 2010-01-22
  • 打赏
  • 举报
回复
大侠们出个手啊
void Startthread(CComPtr<IFullTunnelServiceControl>& spTmp)
{_variant_t callback;
VariantInit(&callback);
callback.vt = VT_NULL;
callback.pvRecord= (PVOID)CallBackProc;
cout<<"use com begin.........."<<endl;
CComBSTR str;
spTmp->StartRecv_User(callback);
cout<<"use com end............"<<endl;
}
只要这段就可以了
ProgrammerNO1 2010-01-22
  • 打赏
  • 举报
回复
关注 ~~~~
kfcoffe 2010-01-22
  • 打赏
  • 举报
回复
up
柯本 2010-01-22
  • 打赏
  • 举报
回复
void Startthread(CComPtr <IFullTunnelServiceControl>& spTmp)
这个用到了C++的模板,delphi中没有的,而我对delphi的COM+编程不熟。
实在不行,你用VC(因为我见到了VC的CString类)先将此段程序封装成DLL,给delphi调用

kfcoffe 2010-01-19
  • 打赏
  • 举报
回复
cnluckyman 2010-01-19
  • 打赏
  • 举报
回复
给个思路也行啊
cnluckyman 2010-01-14
  • 打赏
  • 举报
回复
是一段短信平台的调用,说明如下:
2. 当认证通过后即可调用StartRecv_User(VARIANT callback)函数;此函数用户创建接收线程(用于接收业务响应包,回执包,上行短信包). (参见SendTest程序中CSendTestDlg::OnStartthread()方法)

此处参数callback.pvRecord特殊。参数必须为void CallBackProc(BSTR BS_flag,BSTR BS_svalue1,BSTR BS_svalue2,BSTR BS_svalue3,BSTR BS_svalue4,BSTR BS_svalue5, BSTR BS_svalue6,BSTR BS_svalue7 ,BSTR BS_svalue8)从而用作回调函数。用户在CallBackProc中根据flag的值相应的取不同的字段从而可以分别得到业务响应包,回执包,上行短信包。

当flag == 4时,此时为业务响应包。

当flag == 5时,此时为上行短信包。

当flag == 7时 此时为回执包
cnluckyman 2010-01-14
  • 打赏
  • 举报
回复
大侠们救命啊!!!
麦客来了 2010-01-14
  • 打赏
  • 举报
回复
mark
cnluckyman 2010-01-14
  • 打赏
  • 举报
回复
C++的大侠们帮帮忙啊!
dd_zhouqian 2010-01-14
  • 打赏
  • 举报
回复
up
你想当“李逍遥”式的“大侠”吗? 这里无需计算机基础,无需编程经验,你也不必是计算机专业的在校大学生....只要爱好游戏,怀揣梦想! 有一定自主学习能力,跟着刘老师从“编程小白”修炼为游戏研发“大虾”吧!!!学习好Unity,其先决条件是一定要有稳固、扎实的编程基础!课程 《C# For Unity系列之入门篇》配套学习资料链接:http://pan.baidu.com/s/1gflxreN 密码:sou5;刘老师讲Unity学员群(2) 497429806一、热更新系列(技术含量:中高级):A:《lua热更新技术中级篇》https://edu.csdn.net/course/detail/27087B:《热更新框架设计之Xlua基础视频课程》https://edu.csdn.net/course/detail/27110C:《热更新框架设计之热更流程与热补丁技术》https://edu.csdn.net/course/detail/27118D:《热更新框架设计之客户端热更框架(上)》https://edu.csdn.net/course/detail/27132E:《热更新框架设计之客户端热更框架(中)》https://edu.csdn.net/course/detail/27135F:《热更新框架设计之客户端热更框架(下)》https://edu.csdn.net/course/detail/27136二:框架设计系列(技术含量:中级): A:《游戏UI界面框架设计系列视频课程》https://edu.csdn.net/course/detail/27142B:《Unity客户端框架设计PureMVC篇视频课程(上)》https://edu.csdn.net/course/detail/27172C:《Unity客户端框架设计PureMVC篇视频课程(下)》https://edu.csdn.net/course/detail/27173D:《AssetBundle框架设计_框架篇视频课程》https://edu.csdn.net/course/detail/27169三、Unity脚本从入门到精通(技术含量:初级)A:《C# For Unity系列之入门篇》https://edu.csdn.net/course/detail/4560B:《C# For Unity系列之基础篇》https://edu.csdn.net/course/detail/4595C: 《C# For Unity系列之中级篇》https://edu.csdn.net/course/detail/24422D:《C# For Unity系列之进阶篇》https://edu.csdn.net/course/detail/24465四、虚拟现实(VR)与增强现实(AR):(技术含量:初级)A:《虚拟现实之汽车仿真模拟系统 》https://edu.csdn.net/course/detail/26618五、Unity基础课程系列(技术含量:初级) A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》 https://edu.csdn.net/course/detail/24643B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》https://edu.csdn.net/course/detail/24645 C:《Unity ECS(二) 小试牛刀》https://edu.csdn.net/course/detail/27096六、Unity ARPG课程(技术含量:初中级):A:《MMOARPG地下守护神_单机版实战视频课程(上部)》https://edu.csdn.net/course/detail/24965B:《MMOARPG地下守护神_单机版实战视频课程(中部)》https://edu.csdn.net/course/detail/24968C:《MMOARPG地下守护神_单机版实战视频课程(下部)》https://edu.csdn.net/course/detail/24979

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧