自定义事件的一点疑问

soloist 2000-10-30 10:31:00
我定义了一个新类TMyImage,从TImage继承,重定义了WndProc虚函数,
在其中截获CM_MOUSEENTER,CM_MOUSELEAVE两个消息,并相应地定义了
OnMouseEnter和OnMouseLeave两个事件。但是我发现当有另一个窗口以
模态显示时,我的TMyImage仍然会发生OnMouseLeave和OnMouseEnter这两个
事件,而对从TImage继承下来的事件,如OnClick等却不会发生。一开
始以为是因为Enabled属性已经为false了,而我自定义事件调度函数中没有
考虑Enabled属性,所以自定义事件仍然发生,继承下来的事件却不发生。
后来我试了一下,发现Enabled属性没变,仍然为true。也就是说另外
一个模态窗口正在显示时,主窗口和它包容的控件不接受任何用户输入与
Enabled属性无关,那它是怎么做到不接受用户输入的呢?我要怎么样做,
才能使我的主窗口中的TMyImage在有另外一个模态窗口显示时不发生
OnMouseEnter和OnMouseLeave这两个事件呢?
...全文
176 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ton2000 2000-11-03
  • 打赏
  • 举报
回复
关注
老魏2006 2000-11-03
  • 打赏
  • 举报
回复
判断你的Application->ActiveForm是不是你的控件的父窗口。
wxz 2000-11-03
  • 打赏
  • 举报
回复
对不起,打错了

if(Enabled)改为
HWND hWnd=FindWindow(NULL,NULL);
if(hWnd==((TForm*)Owner)->Handle)
wxz 2000-11-03
  • 打赏
  • 举报
回复
先提供一个治标的方法,

if(Enabled)改为
HWND hWnd=FindWindow(NULL,NULL);
if(hWnd==Handle)
peng_hui 2000-11-03
  • 打赏
  • 举报
回复
将Enabled改为Active试试。
peng_hui 2000-11-03
  • 打赏
  • 举报
回复
将Enabled改为Active试试。
actinia 2000-10-31
  • 打赏
  • 举报
回复
关注
Wingsun 2000-10-31
  • 打赏
  • 举报
回复
把你的代码贴出来看一看才知道。
soloist 2000-10-31
  • 打赏
  • 举报
回复
在头文件中的声明:
private:
TNotifyEvent FOnMouseEnter,FOnMouseLeave;
protected:
virtual void __fastcall WndProc(TMessage& Message);
void __fastcall MouseEnter(void);
void __fastcall MouseLeave(void);
published:
__property TNotifyEvent OnMouseEnter=
{read=FOnMouseEnter,write=FOnMouseEnter};
__property TNotifyEvent OnMouseLeave=
{read=FOnMouseLeave,write=FOnMouseLeave};

在CPP文件中的定义:
void __fastcall WndProc(TMessage& Message)
{
inherited::WndProc(Message);

if(Enabled)
{
switch(Message.Msg)
{
case CM_MOUSEENTER: //鼠标移入消息
MouseEnter();
break;
case CM_MOUSELEAVE: //鼠标移出消息
MouseLeave();
break;
}
}
}

void __fastcall MouseEnter(void) //鼠标移入事件调度函数
{
if(FOnMouseEnter) //如果用户定义了事件句柄则调用
FOnMouseEnter(this);
}

void __fastcall MouseLeave(void) //鼠标移出事件调度函数
{
if(FOnMouseLeave) //如果用户定义了事件句柄则调用
FOnMouseLeave(this);
}

13,870

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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