• <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. 

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

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 无码午夜成人1000部免费视频| 亚洲精品国产品国语在线| 亚洲福利秒拍一区二区| a在线观看免费网址大全| 国产精品亚洲精品日韩已方| 国产亚洲福利一区二区免费看| 成人免费看吃奶视频网站| 亚洲理论精品午夜电影| 日韩中文字幕精品免费一区| 亚洲图片校园春色| 久久99九九国产免费看小说| 国产精品亚洲综合五月天| 国产精品怡红院永久免费| 456亚洲人成在线播放网站| 免费看的一级毛片| 免费精品视频在线| 久久久久久久综合日本亚洲| 无码国产精品一区二区免费模式 | 免费一看一级毛片人| 免费精品视频在线| 亚洲av永久无码精品表情包| 91精品视频在线免费观看| 亚洲fuli在线观看| 四虎国产精品免费久久影院| 4hu四虎免费影院www| 久久综合亚洲鲁鲁五月天| 最近中文字幕mv手机免费高清| 国产亚洲精品2021自在线| 亚洲va久久久噜噜噜久久狠狠| 中文字幕在线免费| jizzjizz亚洲日本少妇| 亚洲av中文无码乱人伦在线咪咕 | 男性gay黄免费网站| 亚洲精品无码久久久久去q| 99久久99久久精品免费看蜜桃 | 亚洲一日韩欧美中文字幕在线| 国产乱子影视频上线免费观看| 国产免费AV片在线观看| 亚洲日韩国产AV无码无码精品| 亚洲热线99精品视频| 中字幕视频在线永久在线观看免费|