亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 實現右鍵菜單的方法.txt

?? 實現右鍵菜單的方法 用于VC開發CAD; 二次開發;
?? TXT
字號:
網上看到好像網友問到在AutoCAD窗口中實現右鍵菜單的方法,覺得這種技術很實用,在許多開發應用中都能用得到,所以就寫了這篇文章,以供大家參考。由于本人水平有限,不對之處敬請原諒。 
 右鍵菜單,也叫快捷菜單,在Windows編程中叫上下文(context)菜單。ObjectARX本身提供了一套處理上下文菜單的機制。在 ObjectARX類庫中有一個名為AcEdUIContext的類,此類負責在ObjectARX應用中的上下文菜單中添加自己的菜單項,而原菜單項不會被破壞,這也是此種方法的優點之一。用AcEdUIContext類添加菜單時,菜單項的數目沒有限制,但必須是文本菜單。菜單可以層疊,但不允許使用鍵盤加速鍵,不能夠在狀態行顯示快捷菜單命令狀態提示。此類可以處理三種情況下的上下文菜單:一個默認上下文菜單,二是實體對象上下文菜單,三是命令執行時上下文菜單。雖然菜單出現的時機不同,但方法基本相同,它們之間主要的不同是所用的加載和卸載函數不同。下面加以詳細介紹。

  在AcEdUIContext為中包含了三個重要的成員函數,他們分別是:

(1) AutoCAD系統獲取快捷菜單句柄函數
  virtual void * getMenuContext(const AcRxClass * unnamed,const AcDbObjectIdArray& unnamed) = 0;
  其中,第一個參數unnamed 是當前所選擇的實體的對象句柄,第二個參數unnamed是所選實體的實體ID數組。這兩個參數只有在實體對象上下文菜單中有效。

(2) 菜單項命令事件響應函數
  virtual void onCommand(Adesk::UInt32 unnamed) = 0;
  其中,unnamed是相應菜單項的菜單ID。此函數在用戶選擇執行快捷菜單中的某個菜單項時被調用。

  (3) 菜單更新函數
  virtual void OnUpdateMenu();
  AutoCAD在快捷菜單彈出之前調用此函數。相當于MFC中的菜單更新事件,我們可以在這個函數中改變菜單項的檢查狀態或使能菜單項等。

  其實,我們利用ObjectARX實現上下文菜單要做的工作主要是重載并填寫這幾個AcEdUIContext成員函數,其操作方法如下:

  首先,我們從AcEdUIContext類派生一個自己的類,名字就叫CDefaultContextMenu吧,當然,你可以按自己的喜好起名字了:-)。然后,在派生的類中重載以上三個函數。

class CDefaultContextMenu: public AcEdUIContext
{
public:
CDefaultContextMenu();
~CDefaultContextMenu();

// 如下重載以下三個函數
virtual void* getMenuContext(const AcRxClass *pClass, const AcDbObjectIdArray& ids) ;
virtual void onCommand(Adesk::UInt32 cmdIndex);
virtual void OnUpdateMenu();

private:
CMenu *m_pDemoMenu; // 用來增加菜單項的MFC菜單對象,使用它是為了加載我們在VC中增加的菜單資源。
HMENU m_hDemoMenu; // 菜單項所對應的句柄,這才是我們真正要加載的的菜單項,它是m_pDemoMenu中的一項。
};

 接下來我們需要做的是:(1)在構造函數中加載菜單資源;(2)在getMenuContext函數中添加顯示我們自己菜單項的代碼;(3)在 onCommand函數中處理命令執行代碼;(4)在OnUpdateMenu中修改菜單項的顯示狀態(此步可選可不選);(5)在析構函數中卸載資源。

  --在構造函數中加載菜單資源
  acDocManager->pushResourceHandle(_hdllInstance); // 切換當前使用的資源,千萬不要忘記加上吆!_hdllInstance是模塊
//實例指針,通過extern引用到使用的位置就可以了。
m_pDemoMenu= new CMenu; // 創建一個菜單對象
m_pDemoMenu->LoadMenu(IDR_DEMO_DEFAULT_MENU); // 使用創建的菜單對象加載在資源編輯器中編輯好的資源
acDocManager->popResourceHandle(); // 再把資源切換回來吧!

--在getMenuContext函數中添加顯示我們自己菜單項的代碼
m_hDemoMenu= m_pDemoMenu->GetSubMenu(0)->GetSafeHmenu(); // 這里我們就顯示已經加載的菜單(m_pDemoMenu)中的第一個子菜單吧!
return &m_hDemoMenu; // 返回子菜單對象的句柄

--在onCommand函數中處理命令執行代碼
acDocManager->pushResourceHandle(_hdllInstance); // 切換當前使用的資源

CString strMenuTitle, strPrompt;
m_pMenu->GetMenuString(cmdIndex,strMenuTitle,MF_BYCOMMAND); // 獲取一所選菜單項的文本標題
strPrompt.Format("\n您已經選取了菜單:%s\n",strMenuTitle);
acutPrintf(strPrompt); // 我們的例子顯示哪一個菜單項被選擇
acedPostCommandPrompt(); // 顯示命令提示

acDocManager->popResourceHandle(); // 將資源切換回來

--在OnUpdateMenu中修改菜單項的顯示狀態
m_pDemoMenu->EnableMenuItem(IDR_DEMO_DEFAULT_MENU_ITEM1,MF_GRAYED); // 使菜單變灰
m_pDemoMenu->EnableMenuItem(IDR_DEMO_DEFAULT_MENU_ITEM2,MF_ENABLED); // 使能菜單項
m_pDemoMenu->CheckMenuItem(IDR_DEMO_DEFAULT_MENU_ITEM3, MF_BYCOMMAND|MF_CHECKED); // 復選菜單項 

--在析構函數中卸載資源
if (m_pMenu) delete m_pMenu; // 不釋放的話麻煩可大呀!!!


 以上用默認上下文菜單為例對AcEdUIContext類的使用方法作了闡述,至于其他兩種基本是與默認上下文菜單相同。只不過在實體對象上下文菜單中的getMenuContext函數中可以對所選的實體進行響應,因為我們可以通過getMenuContext函數的參數獲取實體對象。

  有了以上的準備工作,我們就可以按照菜單顯示時機加載不同種類的菜單了。

  --首先,要行聲明一個全局的上下文菜單對象,如下:
  CDefaultContextMenu *gpDefDemoCM; // 默認上下文菜單
CEntityContextMenu *gpEntDemoCM; // 實體對象上下文菜單
CCmdContextMenu *gpCmdDemoCM; // 命令時上下文菜單

--然后,在初始化ARX應用時創建并加載上下文菜單對象。
  gpDefDemoCM = new CDefaultContextMenu; // 創建默認上下文菜單
gpEntDemoCM = new CEntityContextMenu; // 創建實體對象上下文菜單
gpCmdDemoCM = new CCmdContextMenu; // 創建命令時上下文菜單

acDocManager->pushResourceHandle(_hdllInstance); // 切換當前使用的資源

acedAddDefaultContextMenu(gpDefDemoCM, pAppID); // 向AutoCAD應用中添加默認上下文菜單

  acedAddObjectContextMenu(AcDbEntity::desc(), gpEntDemoCM , pAppID); // 向AutoCAD應用中添加實體對象上下文菜單

// 向AutoCAD應用中添加命令時上下文菜單
// myCmd是一個命令函數。第一個參數是命令組名,第二個參數是全局命令名,
// 第三個參數是本地命令名,第四個參數是命令模式,第5和6個參數就不用說了,大家應該明白了。:-0
acedRegCmds->addCommand("MyGrp", "MyDemo", "MyDemo", ACRX_CMD_MODAL, &myCmd, gpCmdDemoCM ); 

acDocManager->popResourceHandle(); // 切換回資源

 說明:pAppID是acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt)中是第二個參數。acedAddObjectContextMenu中的第一個參數根據實體的不同而不同,如對于線實體則為AcDbLine:: desc()等。

--最后,在卸載ARX應用時,將加載的上下文菜單對象移除,并釋放內存空間。
  HINSTANCE hInst = AfxGetResourceHandle(); // 保證資源正確
AfxSetResourceHandle(_hdllInstance);

acedRemoveDefaultContextMenu(gpDefDemoCM ); // 移除默認上下文菜單
acedRemoveObjectContextMenu(AcDbEntity::desc(), gpEntDemoCM ); // 移除實體對象上下文菜單
acedRegCmds->removeGroup("MyGrp"); // 移除命令組"MyGrp"

delete gpDefDemoCM;
delete gpEntDemoCM;
delete gpCmdDemoCM;

AfxSetResourceHandle(hInst); 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久蜜桃香蕉精品一区二区三区| 欧美日韩视频专区在线播放| 午夜日韩在线观看| 一区二区三区中文字幕| 亚洲日穴在线视频| 亚洲五月六月丁香激情| 丝袜亚洲另类丝袜在线| 日本不卡视频一二三区| 精品一区二区三区在线播放视频| 久久精品久久精品| 精品在线观看视频| 国产成人亚洲精品狼色在线| 国产成人免费视频一区| 成人午夜伦理影院| 色八戒一区二区三区| 欧美日韩一区二区三区四区五区 | 天天综合日日夜夜精品| 亚洲地区一二三色| 奇米亚洲午夜久久精品| 国产精品资源在线看| 成人黄色免费短视频| 色94色欧美sute亚洲线路一ni| 欧美日韩亚州综合| 欧美videofree性高清杂交| 欧美激情一区在线观看| 亚洲久草在线视频| 免费成人在线播放| 成人永久免费视频| 欧美日韩在线三区| 精品美女被调教视频大全网站| 国产精品亲子伦对白| 亚洲成人一区在线| 国产在线观看一区二区| 色先锋资源久久综合| 日韩欧美在线影院| 中文字幕在线不卡国产视频| 水蜜桃久久夜色精品一区的特点| 久久国产精品72免费观看| a在线播放不卡| 91精品国产美女浴室洗澡无遮挡| 国产欧美精品国产国产专区| 亚州成人在线电影| 99久久精品免费观看| 日韩亚洲电影在线| 一区二区三区欧美亚洲| 国产一区二区视频在线播放| 欧洲精品在线观看| 国产欧美精品一区二区色综合| 亚洲 欧美综合在线网络| av不卡免费电影| 久久精品一区蜜桃臀影院| 亚洲国产裸拍裸体视频在线观看乱了| 黄色日韩三级电影| 欧美日韩黄色一区二区| 国产精品乱码人人做人人爱 | 777色狠狠一区二区三区| 国产精品美女久久久久高潮| 奇米888四色在线精品| 一本久久精品一区二区| 欧美激情一区二区三区四区| 日本在线不卡一区| 日本韩国一区二区三区视频| 国产精品人妖ts系列视频| 六月丁香综合在线视频| 欧美日韩中字一区| 亚洲啪啪综合av一区二区三区| 国产精品资源在线| 日韩欧美123| 日本aⅴ免费视频一区二区三区| aaa欧美大片| 日韩一区欧美一区| 99久久婷婷国产精品综合| 久久天天做天天爱综合色| 久久99国产精品免费网站| 日韩一级成人av| 久久精品72免费观看| 日韩欧美一区电影| 久久精品国产亚洲一区二区三区 | 欧美一级午夜免费电影| 亚洲国产sm捆绑调教视频| 在线观看av一区二区| 亚洲一区二区综合| 欧美日韩亚州综合| 蜜臀av性久久久久av蜜臀妖精| 在线播放亚洲一区| 麻豆精品视频在线观看| 欧美一区二区三区视频在线| 国产精品成人免费| 色一区在线观看| 亚洲图片欧美综合| 日韩欧美专区在线| 国产精一区二区三区| 中文在线一区二区| 91捆绑美女网站| 亚洲一区二区三区中文字幕| 欧美丰满高潮xxxx喷水动漫| 久久福利资源站| 亚洲国产激情av| 色综合久久中文综合久久97| 亚洲一区二区美女| 日韩欧美色电影| 成人黄色777网| 午夜精品久久久久久| 久久美女高清视频| 在线看国产一区| 另类小说图片综合网| 国产精品欧美极品| 欧美日韩精品二区第二页| 国产在线日韩欧美| 一区二区三区av电影| 精品国产伦一区二区三区观看体验| 高清视频一区二区| 午夜久久福利影院| 中文字幕av一区二区三区高| 欧美精品一二三| 成人午夜看片网址| 日韩精品一区第一页| 久久久777精品电影网影网| 色综合天天性综合| 韩国视频一区二区| 亚洲成人动漫在线观看| 国产亚洲欧美日韩日本| 欧美亚洲综合网| 国产999精品久久| 免费在线看成人av| 夜夜嗨av一区二区三区中文字幕| 久久久久久久综合日本| 欧美在线小视频| 成人黄色免费短视频| 精品制服美女丁香| 香蕉久久夜色精品国产使用方法| 国产精品高潮呻吟| 久久综合狠狠综合| 欧美男男青年gay1069videost| 成人午夜伦理影院| 国产精品一二一区| 欧美aaaaa成人免费观看视频| 亚洲日本va在线观看| 久久婷婷国产综合国色天香| 欧美一级艳片视频免费观看| 欧美在线免费观看亚洲| av不卡免费在线观看| 国产丶欧美丶日本不卡视频| 伦理电影国产精品| 美女视频黄 久久| 首页国产丝袜综合| 婷婷丁香久久五月婷婷| 亚洲一区二区三区中文字幕 | 欧美美女bb生活片| 色婷婷一区二区| 色综合天天综合| 91香蕉视频在线| 欧美日韩色综合| 欧美日韩在线播放三区| 99国产精品国产精品久久| 免费高清视频精品| 日韩激情视频在线观看| 午夜久久久久久久久久一区二区| 亚洲精品日产精品乱码不卡| 自拍偷拍欧美激情| 尤物在线观看一区| 亚洲一区二区视频在线观看| 亚洲一二三四久久| 视频精品一区二区| 看片网站欧美日韩| 国产乱码精品一区二区三| 国产一区不卡视频| 成人开心网精品视频| 97aⅴ精品视频一二三区| 91丨porny丨中文| 欧美性大战久久久| 91精品国产综合久久香蕉的特点| 91精品国产麻豆国产自产在线 | 欧美日韩一区小说| 日韩美一区二区三区| 国产视频一区不卡| 国产精品女人毛片| 五月激情综合网| 国产一区久久久| 91在线视频播放地址| 欧美丰满少妇xxxxx高潮对白 | 精品国产乱码久久久久久浪潮| 精品国产凹凸成av人导航| 欧美激情艳妇裸体舞| 亚洲自拍偷拍欧美| 精品一区二区三区影院在线午夜| 国产精品一级片在线观看| 在线亚洲免费视频| xf在线a精品一区二区视频网站| 国产精品二三区| 日本最新不卡在线| 99久久精品免费看国产 | 爽好多水快深点欧美视频| 国产激情精品久久久第一区二区 | 成人午夜大片免费观看| 欧美日韩国产精选| 国产精品视频一二三| 免费观看日韩电影| 在线视频你懂得一区| 欧美本精品男人aⅴ天堂|