CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

主窗口在任务栏上的右键菜单能改吗

楼主snjun(XX)2001-04-29 09:24:00 在 Delphi / VCL组件开发及应用 提问

delphi做的formmain在任务栏的右键菜单始终只有三项,  
  像foxmail,网络吸血鬼,protel99等等只要是delphi做的都一样 问题点数:20、回复次数:10Top

1 楼sundayboys(sunboy)回复于 2001-04-29 09:26:00 得分 0

好像用vc改起来方便些,delphi太困难了。Top

2 楼vince12()回复于 2001-04-29 09:38:00 得分 3

用API函数解决。Top

3 楼Fox_110(防暴狐狸)回复于 2001-04-29 16:43:00 得分 5

procedure   TForm1.FormActivate(Sender:   TObject);  
  var  
  menuh:HMENU;  
  begin  
      menuh:=getsystemmenu(findwindow('Tform1','Form1'),False);  
      InsertMenu(menuh,MF_MENUBREAK,0,100,'加入菜单项');  
  end;  
  但是要加入响应事件才有作用。Top

4 楼Musicwind(Musicwind)回复于 2001-04-29 17:03:00 得分 5

var  
  menuh:HMENU;  
  begin  
      menuh:=getsystemmenu(   Form1.Handle,   False);  
      InsertMenu(menuh,MF_MENUBREAK,0,100,'加入菜单项');    
      menuh:=getsystemmenu(   Application.Handle,   False);  
      InsertMenu(menuh,MF_MENUBREAK,0,100,'加入菜单项');    
  end;  
  Top

5 楼Musicwind(Musicwind)回复于 2001-04-29 17:04:00 得分 0

 回复人:Musicwind(风里来雨里去) (2001-4-29   17:03:00)     得0分    
  procedure   TForm1.FormCreate(   Sender:   TObject   );  
  var  
      menuh:HMENU;  
  begin  
      menuh:=getsystemmenu(   Handle,   False);  
      InsertMenu(menuh,MF_MENUBREAK,0,100,'加入菜单项');    
      menuh:=getsystemmenu(   Application.Handle,   False);  
      InsertMenu(menuh,MF_MENUBREAK,0,100,'加入菜单项');    
  end;  
     
   
    Top

6 楼Musicwind(Musicwind)回复于 2001-04-29 17:05:00 得分 0

除了   InsertMenu,   还有许多相关函数,查看   Win32Help(Delphi里带的)Top

7 楼sanjianxia(三剑侠)回复于 2001-04-29 17:40:00 得分 0

我也想知道!Top

8 楼Kingron(单身走我路……)回复于 2001-04-29 18:36:00 得分 5

不是,这个问题bcb说过了,不是form的菜单,而是application的菜单!  
  必须修改VCL的源代码才可以的。下面是以前的讨论:  
  Application本身也是一个窗口(就是哪个按钮呀)。如下就不一样了。  
  InsertMenu(GetSystemMenu(Application.Handle,   False),   0,   MF_BYPOSITION   +   MF_STRING,   0,   'test');    
  在TApplication.CreateHandle中有如下代码:  
      SysMenu   :=   GetSystemMenu(FHandle,   False);  
      DeleteMenu(SysMenu,   SC_MAXIMIZE,   MF_BYCOMMAND);  
      DeleteMenu(SysMenu,   SC_SIZE,   MF_BYCOMMAND);  
      if   NewStyleControls   then   DeleteMenu(SysMenu,   SC_MOVE,   MF_BYCOMMAND);  
  去掉就可以了  
   
  选择菜单Project->Options。在Packages页中关闭Build   with   runtime   packages   选项(即不选中);   并在Dicectorise/Conditionals页中Search   path中添加一项[$DELPHI]\Source\VCL。  
       
      将DelphiX\Lib目录下的Forms.dcu改名为OriginForms.dcu。  
   
      打开DelphiX\Source\VCL目录下的Forms.pas屏蔽掉TApplication.CreateHandle中如下代码:  
      SysMenu   :=   GetSystemMenu(FHandle,   False);  
      DeleteMenu(SysMenu,   SC_MAXIMIZE,   MF_BYCOMMAND);  
      DeleteMenu(SysMenu,   SC_SIZE,   MF_BYCOMMAND);  
      if   NewStyleControls   then   DeleteMenu(SysMenu,   SC_MOVE,   MF_BYCOMMAND);  
   
      选择菜单Project->Build   你的工程即可(请先保存工程,因为有时Build后会兰屏,主要是因为装了一些构件。重运行Delphi即可)。    
   
      最后,选择菜单Project->Options。去掉刚才在Dicectorise/Conditionals页中Search   path中添加的[$DELPHI]\Source\VCL这一项。  
      将DelphiX\Source\VCL目录下的Forms.dcu   复制到DelphiX\Lib目录。再删除DelphiX\Source\VCL目录下其它无用了的*.dcu文件。    
  在Application中的WndProc中没有对这3个消息(SC_SIZE、SC_MOVE、SI_MAXIMIZE)的处理。而且,Application也只有Minimize和Restore这两个功能函数。我想这是由于Delphi的普通应用的风格决定的。一般其它窗口不包含在主窗口之中(即使是MDI程序,非子窗口也是这样),因此,对于应用的最大、移动的操作在逻辑上存在矛盾,所以Borland将这3个应用上的菜单项删除了。   Top

9 楼snjun(XX)回复于 2001-04-30 14:48:00 得分 0

多谢kingron老兄和解惑的各位兄弟姐妹  
  我是一个delphi新手,听kingron一说又发现了delphi  
  的目录下还有这多好东东,大开眼界,呆会儿就给分Top

10 楼kingsong(牛大锅)回复于 2001-04-30 16:32:00 得分 2

长见识了Top

相关问题

  • !!!任务栏右键菜单(添加自己的菜单)!
  • 任务栏右键菜单的简单问题!
  • 如何屏蔽任务栏右键的关闭菜单消息
  • 如何在IE中添加右键菜单项及任务栏按钮
  • 怎样在右键点击任务栏上的图标时生成菜单(鼠标坐标如何定位)
  • 在任务栏中,右键弹出菜单添加了一些项目,如何获取鼠标点击事件?
  • 呵呵.不知怎么弄的WINDOWS2000的任务栏的右键菜单不出来了.
  • 请问一下,如何定位任务栏图标->弹出右键菜单的位置?
  • 如何在windows的任务栏中给程序的右键菜单添加项目?
  • HTA程序可以在任务栏托盘有一个图标跟右键菜单吗

关键词

  • vcl
  • delphi
  • application
  • source
  • menuh
  • delphix
  • menubreak
  • sysmenu
  • getsystemmenu
  • mf

得分解答快速导航

  • 帖主:snjun
  • vince12
  • Fox_110
  • Musicwind
  • Kingron
  • kingsong

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo