• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

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

        控制系統菜單

        控制系統菜單

        更新時間: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. 

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

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 国产色无码精品视频免费| 又黄又爽又成人免费视频| 色播在线永久免费视频网站| 13一14周岁毛片免费| 全亚洲最新黄色特级网站 | 亚洲人成图片小说网站| 亚洲乱码在线观看| 97国免费在线视频| 国产v亚洲v天堂无码网站| 精品亚洲成a人在线观看| 精品香蕉在线观看免费| 亚洲另类激情综合偷自拍图| 亚洲爆乳大丰满无码专区| 91精品免费久久久久久久久| 亚洲情综合五月天| 久久综合九色综合97免费下载| 亚洲av高清在线观看一区二区| 免费国产a理论片| 麻豆成人精品国产免费| 亚洲精品不卡视频| 一区二区三区无码视频免费福利| 亚洲av无码精品网站| 亚洲视频在线免费| 亚洲av无码国产精品色在线看不卡| 亚洲国产综合精品中文第一| 成人免费毛片观看| 亚洲色无码国产精品网站可下载| 2020因为爱你带字幕免费观看全集| 亚洲免费一级视频| 免费精品国产自产拍在| 午夜亚洲国产理论片二级港台二级| 最近中文字幕无吗免费高清| 免费福利在线观看| 精品亚洲综合久久中文字幕| 亚洲黄色片免费看| 免费人人潮人人爽一区二区| 亚洲精品高清国产一久久| 国产高清不卡免费视频| 亚洲中文字幕精品久久| 亚洲无av在线中文字幕| 免费无码精品黄AV电影|