怎样调试active控件的编辑状态的代码?怎样响应控件编辑状态下的各种鼠标点击和位置变化?

Springer 2003-09-01 11:17:28
感觉这方面DELPHI做得比VC要好,可能是我还不太了解vc的原因吧。
请高手指点。
其实这是两个问题。无论回答了那个问题我都给全分。
分不够可以另外开贴。
...全文
119 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Springer 2003-09-01
  • 打赏
  • 举报
回复
编辑状态的调试倒也可行了,可在VC里头看到我控件的句柄居然是0,靠。

VC真是让人迷惑。

Springer 2003-09-01
  • 打赏
  • 举报
回复
又试了一下,发现我写的控件在Delphi和ActiveX control test container中编辑时可以响应位置变化的消息,可在VC中怎么都没反应。靠。
哪位能给个解释先?
atEleven 2003-09-01
  • 打赏
  • 举报
回复
呵呵.

windows出来的时候,对象语言也刚出现不久,而且很多东西的确是需要特殊保护的资源.
Springer 2003-09-01
  • 打赏
  • 举报
回复
其实这里头就看出WINDOWS把很多东西拎出来归堆叫做什么资源实在是很失败的,到这里就跟面向对象格格不入了,其实资源是很容易归入对象一类的,这帮MS的煞笔!
Springer 2003-09-01
  • 打赏
  • 举报
回复
呵呵, atEleven(@十一) ,谢了。
不知道VC的OnDraw和其他两个函数是怎么实现的,否则也就一样画葫芦了。
看了一下,OnDraw就直接取了个HDC过来,再把RECT传近来就好了,不过它弄的那个
OnPropExchange就不知道了,还有ResetState。不知道能不能翻到源代码。
现在真是很尴尬,VC写的控件,在VC里头反倒不好用,SHIT。
atEleven 2003-09-01
  • 打赏
  • 举报
回复
对的.vc的对话框编辑器当activeX控件时,跟ActiveX control test container 或者 Delphi 或者vb不同.

我的理解:
vc中根本不能算是编辑状态.反过来说,在vc做为客户端使用activex控件的时候,没有所谓的Design Mode,只有Run Mode.
从这个概念来讲,vc的对话框编辑器只是一个资源编辑器,而不是一个设计器.

如果要测试编辑状态,拖动到delphi里测试就可以了.
Springer 2003-09-01
  • 打赏
  • 举报
回复
to atEleven(@十一):
我的编辑状态是指使用控件装好以后放到对话框,应该叫design mode更确切些。
现在问题是在VC中放到对话框中的控件并没有实际的句柄,所以不响应任何消息,而只对他自动生成的三个函数 OnDraw,DoPropExchange,OnResetState()提供支持,其他函数诸如OnPaint, OnSize和所有WINDOWS消息都不响应,我是在调试的时候发现我控件的m_hWnd=0的,而当我把宿主程序换成ActiveX control test container或者Delphi时,我控件的m_hWnd是一个有效的值,所以我就不知道怎样去写一个能在VC里头正常工作的控件了。:(

atEleven 2003-09-01
  • 打赏
  • 举报
回复
首先我指的是MFC框架下的ActiveX control


编辑状态指的是什么??
是不是指 AmbientRunMode()==FALSE
可以在这个条件下做该做的事情.

另外,跟鼠标相关的,可能还需要看看这个函数: OnActivateInPlace
调用表示实地激活(In Place Activate)

举例:
int CYourCtrl::OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message)
{
if( AmbientUserMode() )
{
if (!m_bUIActive)
OnActivateInPlace (TRUE, NULL); // == UI-Activate the control
}
return COleControl::OnMouseActivate(pDesktopWnd, nHitTest, message);
}

Springer 2003-09-01
  • 打赏
  • 举报
回复
问题基本有点头绪了,VC里头编辑控件时,不为控件生成句柄,所以也就没有办法响应消息了。
有了这个特性(毛病),让我怎么做了控件在VC里头用呢?
请高手路过指点一下?
过路的帮忙顶一下。

3,245

社区成员

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

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