其他语言

本类阅读TOP10

·基于Solaris 开发环境的整体构思
·使用AutoMake轻松生成Makefile
·BCB数据库图像保存技术
·GNU中的Makefile
·射频芯片nRF401天线设计的分析
·iframe 的自适应高度
·BCB之Socket通信
·软件企业如何实施CMM
·入门系列--OpenGL最简单的入门
·WIN95中日志钩子(JournalRecord Hook)的使用

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
如何改变系统菜单

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

从前现在过去便再不来
红红落叶长埋尘土内
开始终结总是没变改
天边的你飘泊白云外
苦海翻起爱恨
在世间难逃离命运
相亲竟不可接近
或我应该相信是缘分
情人别后永远再不来
无言独坐放眼尘世外
鲜花虽会凋谢但会再开
一生所爱隐约在白云外 ————《大话西游》

C++Builder虽然和Delphi用的是同一个VCL库,但C++Builder中对自定义消息的声明和处理却和Delphi的不一样。
首先,要在相应的头文件里添加如下代码:
#include <vcl\Messages.hpp>   //要用到的头文件
#define CM_MyMsg (WM_USER+400)  //CM_MyMsg为自定义的消息
void __fastcall WMSysCommand(TWMSysCommand &Message);
      //在头文件中定义相应消息的处理函数
BEGIN_MESSAGE_MAP
  MESSAGE_HANDLER(WM_SYSCOMMAND, TWMSysCommand, WMSysCommand)
END_MESSAGE_MAP(TForm)   //用自定义的消息处理函数来代替原消息处理函数

然后在相应的文件中加入:
void __fastcall TForm1::WMSysCommand(TWMSysCommand &Message)
{
  switch(Message.CmdType)
  {
    case CM_YouMessage: ...  //添加你自已的代码
    break;
    default:
    TForm::Dispatch(&Message);     //用它来处理其它消息
  }
}
//这是窗体的新建过程
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  HMENU SysHMenu;
  SysHMenu=GetSystemMenu(Handle,false);
  AppendMenu(SysHMenu,MF_STRING,CM_MyMsg,"你好");
}


--------------------------------------------------------------------------------

Delphi
在Delphi中就比C++ Builder简单多了:

首先,在TForm类的Pravite中加入这句用于覆盖缺省的消息处理
procedure WMSysCommand(var message:TMessage) ; message WM_SYSCOMMAND;

在常量定义中加入这句用于定义自定义消息
CM_MyMsg = WM_USER + 400;

在Form的OnCreate事件中为系统菜单添加新的菜单项
procedure TForm1.FormCreate(Sender: TObject);
var
  SysHMenu : HMENU;
begin
  SysHMenu:=GetSystemMenu(Handle,False);
  AppendMenu(SysHMenu,MF_STRING,CM_MyMsg,'你好');
end;


消息处理函数
procedure TForm1.WMSysCommand(var message:TMessage);
begin
  case message.WParam of
    CM_MyMsg: Application.MessageBox('你好','',MB_OK);
  else
    inherited;
  end;
end;

 


 




相关文章

相关软件