欧美特黄不卡,涩涩视频在线,成人国产精品一区二区网站,亚洲一区二区三区欧美

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

控制系統菜單

控制系統菜單

更新時間:2022-04-30 文章作者:未知 信息來源:網絡 閱讀次數:

----WINDOWS附帶的時鐘程序有這樣一個特點:它的"Alwaysontop"選項是加在系
統菜單中的,這一技巧為該程序增色不少,同時也增加了其神秘感。我們
在程序設計時能否把自己的菜單項加入系統菜單呢?回答是肯定的,筆者
用Delphi方便的實現了這一功能。

----為實現這一功能,需要解決兩個問題:①、如何把用戶菜單項加入系統
菜單,②、如何才能響應這一菜單項。

----要解決第一個問題,就需要獲取系統菜單的句柄,這一點可用API函數
getsystemmenu()來獲取(getmenu()只能獲取用戶菜單句柄),有了系統菜單句柄,便
可以用API函數appendmenu()向系統菜單中加入用戶菜單選項了。

----要解決第二個問題,需要重載WM_SYSCOMMAND或WM_MENUSELECT消息。我們
知道,當用戶從菜單中選一項時,系統便會發出WM_COMMMAND消息,而對
于系統菜單,則會發出WM_SYSCOMMAND消息,重載這個消息,并判斷選中菜
單的ID值是否為用戶設定值便可以了。Delphi為我們提供了這方面的機制,使
我們能方便的實現這一功能。當然,為實現這一功能我們還可以利用子類
或為系統加消息鉤子的方法來解決。

----為了便于實現,在這里,我們采用重載WM_SYSCOMMAND消息和填寫
WM_MENUSELECT消息結構的方法來實現這一功能。

----下面為筆者為實現這一功能而開發的實例。

----程序在Delphi  ver1.0下調試通過。

program Psysmenu;
uses
  Forms,
  Sysmenu in '\SYSMENU.PAS' {Form1};

{$R *.RES}
begin
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

unit Sysmenu;

interface
uses
  SysUtils, WinTypes, WinProcs, Messages, Classes,
  Graphics, Controls,Forms, Dialogs;
type
  TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
  private
      procedure  user_sysmenu(var msg:twmmenuselect);
                               message wm_syscommand;

  public
        { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.DFM}

procedure  TForm1.user_sysmenu(var msg:TWMMENUSELECT);
begin
   if msg.iditem=100 then
      showmessage('     響應系統菜單!')
      { 也 可 以setwindowpos()來實現處于最前端功能}
   else
      inherited;     { 作缺省處理,必須調用這一過程}
end;

procedure TForm1.FormCreate(Sender: TObject);
   var hmenu:integer;
begin
   hmenu:=getsystemmenu(handle,false);
   {獲取系統菜單句柄}
   appendmenu(hmenu,MF_SEPARATOR,0,nil);
   appendmenu(hmenu,MF_STRING,100,'加入系統菜單');
   {加入用戶菜單}
end;
end. 

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

主站蜘蛛池模板: 荥阳市| 新野县| 台湾省| 北票市| 金山区| 密云县| 台湾省| 喀什市| 荥阳市| 礼泉县| 漯河市| 凤山市| 清水河县| 阜康市| 大港区| 定西市| 仲巴县| 新田县| 界首市| 拜泉县| 栾城县| 兴宁市| 临江市| 日土县| 海林市| 荆州市| 大港区| 屯门区| 贵溪市| 茂名市| 隆子县| 东乡| 临安市| 滨海县| 博野县| 淳化县| 城固县| 凤阳县| 搜索| 措勤县| 武强县|