• 主页
  • 招聘
  • 语言基础/算法/系统设计
  • 数据库相关
  • 图形处理/多媒体
  • 网络通信/分布式开发
  • VCL组件开发及应用
  • Windows SDK/API

Winamp3 是怎样重载系统菜单的

iriscat 2001-11-29 09:01:26
Winamp3 是怎样重载系统菜单的,它的系统菜单是自己写的
屏蔽了任务栏上的系统菜单,这是怎样做的!!!!
我问过几次了,好像csdn上没人会的呀
msdn上面也没有
...全文
58 点赞 收藏 4
写回复
4 条回复
cqwty 2002年01月06日
楼上的说法不错,我这儿有一个完整的程序,可以运行的,代码如下!
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure wmSysCommand(var msg:TMessage); message WM_SYSCOMMAND;
public
{ Public declarations }
end;
var
Form1: TForm1;
const
ID_ABOUT = WM_USER+1;
ID_HELP = WM_USER+2;
ID_NEWLINE = WM_USER+4;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
var
SysMenu:THandle;
begin
SysMenu := GetSystemMenu(Handle,False);
InsertMenu(SysMenu,Word(-1),MF_SEPARATOR,ID_NEWLINE,'');
InsertMenu(SysMenu,Word(-1),MF_BYPOSITION,ID_HELP, '帮助');
InsertMenu(SysMenu,Word(-1),MF_BYPOSITION,ID_ABOUT, '关于...');
end;
///下面部分是响应相应的菜单的事件的!
procedure TForm1.wmSysCommand;
begin
case Msg.wParam of
ID_ABOUT : ShowMessage('想知道什么?');
ID_HELP : ShowMessage('不会不懂吧,确实有点难度的!');
end;
inherited;
end;
end.
回复 点赞
taxi 2001年11月29日
procedure TForm1.FormCreate(Sender: TObject);
var
hSysMenu: integer;
begin
hSysMenu := GetSystemMenu(Application.Handle, false);
DeleteMenu(hSysMenu, 3, MF_BYPOSITION);
DeleteMenu(hSysMenu, 2, MF_BYPOSITION);
DeleteMenu(hSysMenu, 1, MF_BYPOSITION);
DeleteMenu(hSysMenu, 0, MF_BYPOSITION);
InsertMenu(hSysMenu, 0, MF_BYPOSITION, SC_ABOUT, Pchar('About')); //如何响应该菜单俺不懂
end;
回复 点赞
知足常乐 2001年11月29日
~up一下
回复 点赞
Linux2001 2001年11月29日
是左下脚的开始菜单屏遮吗
回复 点赞
发动态
发帖子
Delphi
创建于2007-08-02

1478

社区成员

26.2w+

社区内容

Delphi 开发及应用
社区公告
暂无公告