急:为什么OCX里的事件没有被触发?
我调用了一个DELPHI编写的OCX控件。该控件在DELPHI下调用一切正常。
现在需要在VC环境下调用此控件,此OCX内实现了一个回调事件,在监听的端口收到消息时触发。我已经在ClassWiazrd内添加了这个事件的消息和其中的要处理的代码,但是在同等条件下(跟DELPHI相比较),此事件在VC下却没有触发?请问会是什么原因呢?
BEGIN_EVENTSINK_MAP(CTTDlg, CDialog)
//{{AFX_EVENTSINK_MAP(CTTDlg)
ON_EVENT(CTTDlg, IDC_SMSCLIENTX1, 209 /* OnReceiveInfo */, OnOnReceiveInfoSmsclientx1, VTS_PBSTR VTS_PBSTR VTS_PBSTR VTS_PBSTR VTS_PBSTR VTS_PBSTR VTS_PBSTR)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
void CTTDlg::OnOnReceiveInfoSmsclientx1(BSTR FAR* sTxCode, BSTR FAR* sMobileNum, BSTR FAR* sMsg, BSTR FAR* sMsgId, BSTR FAR* sInfoId, BSTR FAR* sInfoContent, BSTR FAR* sLinkID)
{
// TODO: Add your control notification handler code here
GetDlgItem(IDC_STATIC)->SetWindowText("收到消息喽");
}
问题点数:100、回复次数:6Top
1 楼akirya(坏[其实偶不是什么所谓的坏人])回复于 2006-03-16 15:04:26 得分 0
有没有挂接连接点对象?Top
2 楼liounzhou(潇潇夜雨)回复于 2006-03-16 15:19:12 得分 0
什么叫挂接连接点对象?Top
3 楼jiangsheng(蒋晟.Net[MVP])回复于 2006-03-16 15:39:58 得分 70
ON_EVENT这些就是了
你的控件是不是用了多线程?MFC不支持跨线程触发事件Top
4 楼xiaoqiqixiao(七七)回复于 2006-03-16 15:40:54 得分 15
最好用别的方式来确定有没有收到消息比较好,比较设置断点等
用IDC_STATIC获得的窗口未必正确,因为Picture,GroupBox等等,ID都可以是IDC_STATIC,一般是获得tab顺序最前面的那个窗口的临时CWnd*指针的。你也可以将ID设置为其它表示如IDC_STATIC1等等Top
5 楼liounzhou(潇潇夜雨)回复于 2006-03-16 16:01:29 得分 0
to jiangsheng:
你好.我用到的控件确实用到了多线程.那么有什么好的办法能够解决这个问题吗?Top
6 楼jiangsheng(蒋晟.Net[MVP])回复于 2006-03-16 16:22:58 得分 15
在GetDlgItem(IDC_STATIC)->SetWindowText("收到消息喽");
这里设置一个断点看看
如果没断下来的话去看http://support.microsoft.com/kb/q157437/Top




