关于消息传递

Tone_zrt 2001-11-21 04:29:53
我现在有一个窗体,窗体上有一个标准控件。我现在要给控件添加一个消息处理函数,以响应某一特殊事件。我应该如何声明?例如:Form1上有一个控件PerformanceGraph1,我如何使PerformanceGraph1响应鼠标单击、双击事件?
消息声明:
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_LBUTTONDOWN , TMessage , LButtonDown)
END_MESSAGE_MAP(。。。)
应该放在哪一个头文件里,如何处理?
答对者马上给分。
...全文
147 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
jxhywdh 2001-12-07
  • 打赏
  • 举报
回复
已解决!!!!
jxhywdh 2001-12-06
  • 打赏
  • 举报
回复
上面的错误提示不对 应该是这样的:::

[C++ Error] Unit1.cpp(204): E2125 Compiler could not generate default constructor for class 'TButtonX'
jxhywdh 2001-12-06
  • 打赏
  • 举报
回复
现在如何使用TButtonX 这个控件!!!!
我用 TButtonX *mybutton1;
mybutton1=new TButtonX ;
编译时出错:
[C++ Error] Unit1.cpp(204): E2125 Compiler could not generate default constructor for class 'TMypage'


不知道要如何修改!!!各位有例程吗?????
Tone_zrt 2001-11-30
  • 打赏
  • 举报
回复
我试过此类的方法。请问需要把这个新的控件加入到某一个控件组里吗?我曾经加入到了某一个控件组,然后试着象其他的控件一样拖放到窗体里,但是报错,错误信息是“stack overflow”。请问这是为何?
有帮助这立刻加分,可以再加分。
CanMe 2001-11-22
  • 打赏
  • 举报
回复
同意楼上意见,需要重载TButton类,生成一个新的控件
gzbwl99 2001-11-22
  • 打赏
  • 举报
回复
#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
typedef void __fastcall (__closure *TOnMouseLeave)(TObject *Sender);
class TButtonX:public TButton
{
private:
TOnMouseLeave FOnMouseLeave;
protected:
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(WM_MOUSELEAVE, TMessage, MouseLeave)
END_MESSAGE_MAP(TButton)
void __fastcall MouseLeave(TMessage & Msg);
public:
__fastcall TButtonX(TComponent* AOwner);
__published:
__property TOnMouseLeave OmMouseLeave={read=FOnMouseLeave,write=FOnMouseLeave};

};
#endif
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit2.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)


void __fastcall TButtonX::MouseLeave(TMessage & Msg)
{
if(FOnMouseLeave) FOnMouseLeave(this);
}
__fastcall TButtonX::TButtonX(TComponent *AOwner):TButton(AOwner)
{
FOnMouseLeave=0;
}
已经有完整的解答了
详细看:
http://www.csdn.net/expert/topic/350/350931.shtm
IUNKNOWN_COM 2001-11-22
  • 打赏
  • 举报
回复
你要重新派生這個控件,如你要讓按鈕得到這個消息,你就從TBUTTON中派生一個MYBUTTON,能後在這個新控件的.h文件中加就行了,你要用這個按鈕作為一個就的控件使用
Tone_zrt 2001-11-21
  • 打赏
  • 举报
回复
每人会这个问题吗?
Tone_zrt 2001-11-21
  • 打赏
  • 举报
回复
ThinkX() 
能讲的详细一些吗?
ThinkX 2001-11-21
  • 打赏
  • 举报
回复
用新的WndProc替换控件内的WindowProc属性
Tone_zrt 2001-11-21
  • 打赏
  • 举报
回复
定义这个消息这能使Form获得,而不能使Form里的控件获得。我是要控件进行响应。
kingfish 2001-11-21
  • 打赏
  • 举报
回复

class TMain_Form : public TForm
{
...
protected:
void __fastcall TcpipMessage(TMessage &Msg);

BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(CM_TCPIPMSG,TMessage,TcpipMessage)
END_MESSAGE_MAP(TForm)
...
kingfish 2001-11-21
  • 打赏
  • 举报
回复
Form1.h

13,826

社区成员

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

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