关于com中变量保存的问题。

schollc 2007-06-24 02:14:42
我页面触发了ondrop事件,当某些html格式的内容拖到div中,我把这些html的原始url保存在一个public变量中,然后我再响应一个ondbclick事件,发现无论如何都取不到这个变量了。那com中如何保存这个值呢?
很奇怪的是,我还定义了一个IElementBehaviorSite智能指针,每次页面初始化的时候,保存当前页面。如果我反复的触发ondrop事件,这个指针都可以用,但是在ondbclick中,这个指针就不能用了,为什么啊?
...全文
228 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
schollc 2007-06-25
  • 打赏
  • 举报
回复
已经解决了,我改成了定义char mSourceURL[256]之后,构造函数中memset(mSource,0,256)了一把,就OK了,恐怕是我没有指定内存的具体位置,所以不能传值。
不过,不知道char*怎么初始化。等待后面的人接问题了。
2天没人回,我就结贴了。
谢谢上面2位。
schollc 2007-06-25
  • 打赏
  • 举报
回复
TO:tufaqing 没有new。
TO:jiangsheng
1 应该是一个所属对象。
2 在behavior类中先把页面的某个element与eventSink绑定。
hr = AtlAdvise( m_spElem, m_pEventSink, DIID_HTMLElementEvents, &m_dwCookie );
然后在eventsink类的invoke中响应事件。
CEventSink::Invoke(
DISPID dispidMember,
REFIID riid,
LCID lcid,
WORD wFlags,
DISPPARAMS* pdispparams,
VARIANT* pvarResult,
EXCEPINFO* pexcepinfo,
UINT* puArgErr)
{
switch ( dispidMember )
{
case DISPID_HTMLELEMENTEVENTS_ONDROP:
OnDrop();
break;
...
onDrop函数中的方法是写在behavior中的。
当然之前作了个factory类,用来创建behavior类的指针。
具体的框架,我是仿照http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/samples/internet/browser/binarybehavior/default.asp这个实现的。
蒋晟 2007-06-24
  • 打赏
  • 举报
回复
1 你确定你的public变量所属对象是同一个?
2 你的描述有太多不确定性,把你如何响应事件,如何保存当前页面说一下
tufaqing 2007-06-24
  • 打赏
  • 举报
回复
char* mSourceURL new空间了没有,LZ不会是直接mSourceURL = "aaa"吧?
schollc 2007-06-24
  • 打赏
  • 举报
回复
我刚才又试了一下,在.h中定义了一个UINT变量,在第一次drop的时候给一个值,在dbclick的时候可以得到阿。
另外一个试验,还是.h中定义的那个char* mSourceURL,在drop的时候赋一个“aaa”,在dbclick的时候同样可以得到。
但是为什么当mSourceURL="www.csdn.net/....."什么的时候就不行了么?在drop的时候,可以看到mSourceURL的值是正确的,到了dbclick就没有了。太奇怪了,大家帮帮忙啊,周2前就要完成的

3,245

社区成员

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

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