C++ 消息的运用_C/C++语言_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

C++ 消息的运用

作者:黑客防线网安C/C++教程基地 来源:黑客防线网安C/C++教程基地 浏览次数:0

本篇关键词:运用消息 处理
黑客防线网安网讯:   一、TApplication的OnMessage事件  OnMessage事件只处理消息队列中的消息,SendMessage()发送的消息不会被截获。  任何窗体接收到一个windows消息,都会触发一次此事件  函数原型...
   一、TApplication的OnMessage事件
  OnMessage事件只处理消息队列中的消息SendMessage()发送的消息不会被截获
  任何窗体接收到一个windows消息都会触发一次此事件
  函数原型:
  typedef void __fastcall (__closure *TMessageEvent) (tagMSG &Msg,bool &Handled);
  Msg表示被截获的消息,Handled表示是否处理完成,为TRUE则防止被再次处理,设为FALSE则可以继续处理
  代码
  //计算程序响应的消息数
  //---------------------------------------------------------------------------
  #ifndef Msg_testH
  #define Msg_testH
  //---------------------------------------------------------------------------
  #include <Classes.hpp>
  #include <Controls.hpp>
  #include <StdCtrls.hpp>
  #include <Forms.hpp>
  //---------------------------------------------------------------------------
  class TForm1 : public TForm
  {
  __published:    // IDE-managed Components
  TLabel *Label1;
  void __fastcall FormCreate(TObject *Sender);
  private:    // User declarations
  //自定义消息响应函数
  void __fastcall AppMessage(tagMSG &MSG,bool &Handled);
  public:        // User declarations
  __fastcall TForm1(TComponent* Owner);
  int Num;
  };
  //---------------------------------------------------------------------------
  extern PACKAGE TForm1 *Form1;
  //---------------------------------------------------------------------------
  #endif
  //---------------------------------------------------------------------------
  #include <vcl.h>
  #pragma hdrstop
  #include "Msg_test.h"
  //---------------------------------------------------------------------------
  #pragma package(smart_init)
  #pragma resource "*.dfm"
  TForm1 *Form1;
  //---------------------------------------------------------------------------
  __fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
  {
  Num = 0;
  }
  //---------------------------------------------------------------------------
  void __fastcall TForm1::FormCreate(TObject *Sender)
  {
  //将自定义函数与OnMessage事件联系起来
  Application->OnMessage = AppMessage;
  }
  //---------------------------------------------------------------------------
  void __fastcall TForm1::AppMessage(tagMSG &MSG,bool &Handled)
  {
  Num++;
  Label1->Caption = AnsiString(Num);
  Handled = false;
  }
   二、消息映射
  使用消息映射,一般需要三步:
  (1).声明消息映射表,把某些消息的处理权,交给自己定义的函数
  以一个没有参数的BEGIN_MESSAGE_MAP宏开始,
  以END_MESSAGE_MAP宏结束(唯一参数是组件的父类的名字,通常为TForm)
  在中间插入一个或多个MESSAGE_HANDLER宏,其将一个消息句柄和一个消息处理函数联系在一起。
  MESSAGE_HANDLER(windows消息名,消息结构体名,消
    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-15271-1.html
网站维护教程更新时间:2012-04-04 22:52:29  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer