VC开发的ActiveX在C#下使用的一个疑难杂症,忘高手解答

此帐号已弃用12 2008-11-14 03:07:47
1,新建一个VC开发的一个ActiveX,将Invisible at runtime勾选上
2,添加一个接口函数Test1(),其中内容为

void test ()
{
SetTimer(1,1234,NULL);
}

此外没有做任何修改。

在VC中调用此函数木有问题,
在VC#2005下调用此函数报错,这是什么原因捏?
...全文
57 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunheart 2008-11-28
  • 打赏
  • 举报
回复
这个最直接的原因是,如果你的控件是invisible in runtime,那么在C#(或许VB、DELPHI也如此)生成它时,它会把你的控件当作一个windowless,不会为COleControl生产那个m_hWnd句柄,即此时m_hWnd=NULL。此时,你如果调用任何窗口相关的函数,都会崩溃,包括SetTimer.如何让C#能像VC调用该控件一样,我不知道。
一般,让这个控件还是运行时可见。只不过让使用者把它设置成Visible=false。这是最简单的解决方法。
palmax 2008-11-15
  • 打赏
  • 举报
回复
vc#下你咋调用的?
yjgx007 2008-11-15
  • 打赏
  • 举报
回复
一定时断言窗口无效,SetTimer依赖于窗口,除非你用API::SetTimer(NULL, ...),指定窗口为空,即使用和窗口无关的定时器调用。
Tinary3v0 2008-11-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 palmax 的回复:]
vc#下你咋调用的?
[/Quote]

就是 怎么调用的啊? 控件怎么添加到工程里面去的 怎么生成的? 用Creat么?

如果连窗口都没有建立 调用控件的方法肯定会报错。
  • 打赏
  • 举报
回复
debug assertion failed!
program:...\
...

JJZHK 2008-11-14
  • 打赏
  • 举报
回复
报什么错?

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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