程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> 用C++ Builder創建上下文菜單擴展處理器

用C++ Builder創建上下文菜單擴展處理器

編輯:vc教程

當用戶右擊一個shell對象時,shell會顯示它的上下文菜單。文件系統對象有大量的標准菜單項,如"剪切"和"拷貝",這些都是缺省的菜單項。如果對象是一個文件,是文件類的成員,就能夠在注冊表裡指定附加的菜單項。Shell檢查注冊表,看看文件類型是否與一些上下文菜單handler相關聯,如果是,shell會咨詢這些handler是否添加額外的菜單項。

上下文菜單handler是一種shell擴展handler,它添加命令到已有的上下文菜單中。上下文菜單handler都與特定的文件類相關聯,並且在顯示這類文件的成員的上下文菜單時調用。通過實現和注冊這樣一個handler,能夠動態地添加菜單項到對象的上下文菜單上,從而為特殊的對象定制菜單。

上下文菜單Handler的工作原理

作為一種shell擴展handler,上下文菜單handler同所有其它handler一樣, 是進程內COM 對象,即對象作為動態連接庫 (DLL)實現。除了IUnknown接口外,上下文菜單還必須導出IShellExtInit和IContextMenu接口,作為選擇,上下文菜單也能導出IContextMenu2和IContextMenu3,這些接口可以實現自畫菜單項。

IShellExtInit接口僅僅被shell用來初始化handler,主要的操作通過handler的IContextMenu接口進行。Shell首先調用IContextMenu::QueryContextMenu,傳送一個HMENU句柄,這個方法用它來增加上下文菜單。如果用戶亮選了這些新添加的某個命令項, IContextMenu::GetCommandString將被調用,以取得這條菜單的幫助信息,把它顯示在資源管理器的狀態條上。如果用戶單擊了handler的條目,shell調用IContextMenu::InvokeCommand,從而handler能夠執行合適的操作。

實現IContextMenu接口

1、實現QueryContextMenu方法

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved