我想看一级黄色大片_久久亚洲国产精品一区二区_久久精品免视看国产明星_91久久青青青国产免费

您的位置:網站首頁 > CAD新聞

簡介鉤子技術在AutoCAD中的應用

時間:2010-01-08 13:19:09 來源:

鉤子技術是很有用的一種技術,它如同給函數掛上一個鉤子(我們自己的函數),讓它在執行前先執行我們掛的鉤子(我們掛接的函數),從而達到攔截事件和函數調用等的目的。在autocad中,利用鉤子技術可以為我們做很多事情:如建立快捷鍵(不希望更改已有菜單),等待或者觸發特定消息(如鼠標,鍵盤),可以獲得比反應器更強大的功能,等等。

objectARX提供了幾種向autocad注冊鉤子函數的ARX API函數,見下面:

acedRegisterFilterWinMsg,注冊一個鉤子函數
acedRemoveFilterWinMsg,注銷一個鉤子函數
acedRegisterWatchWinMsg, 監測鉤子函數
acedRemoveWatchWinMsg, 移除監測函數

其具體用法各位不妨參考幫助文件。

下面函數提供一個例程,該例程定義了一個快捷命令 Ctrl+I,當用戶按下快捷鍵時候,autocad 將執行appload命令。


我這里采用了向導方式創建了一個新工程Hook

采不采用MFC對這個程序沒有影響.

 

在acrxEntryPoint.cpp 中開頭添加如下代碼:
#include <aced.h>             //僅因為版本較低,所以加了這兩個
#include <rxmfcapi.h>           //對于高版本無須此兩個
復制代碼
并申明函數:


//------------------------------------------------------------------------------------------------
//函數原型及其全局變量申明
void sendCommandToAutoCAD(HWND hWndAcad,CString cmd); //向AutoCAD窗口發送字符串命令(cmd)
void watchCtrlI(const MSG * pMsg);        //鉤子監測函數
void Accelerator(void);              //快捷鍵注冊函數
static BOOL filterCtrlKeyDone = FALSE;                
//------------------------------------------------------------------------------------------------
復制代碼

 

函數定義

void   Accelerator(void)
{
if(filterCtrlKeyDone == TRUE)
{
   acutPrintf(_T("Hook has already been registered!n")); //如果鉤子已經注冊,則返回
   return;
}
if(acedRegisterWatchWinMsg(watchCtrlI) == FALSE)
   acedPrompt(_T("Hook can't be registered!n"));       //無法注冊鉤子
else
{
   acedPrompt(_T("Shortcut Ctrl+I has been defined!n"));   //快捷命令Ctrl + I 已經定義
   filterCtrlKeyDone = TRUE;
}
return;
}
//鉤子監測函數,監測Ctrl+I鍵盤消息
void watchCtrlI(const MSG *pMsg)
{
if (pMsg->message == WM_CHAR && pMsg->wParam == 9) //發生鍵盤Ctrl + I消息
{
   sendCommandToAutoCAD(adsw_acadMainWnd(), _T("apploadn"));
            //這里可以是你自己定義的任何函數
}
return;
}
//向AutoCAD窗口發送字符串命令(cmd)
void sendCommandToAutoCAD(HWND hWndAcad,CString cmd)
{
if(! hWndAcad)
   return;
COPYDATASTRUCT cmdMsg;
cmdMsg.dwData = (DWORD)1;
cmdMsg.cbData = (DWORD)_tcslen(cmd) + 1;
cmdMsg.lpData = cmd.GetBuffer(cmd.GetLength() + 1);
SendMessage(hWndAcad,WM_COPYDATA,(WPARAM)hWndAcad, (LPARAM)& cmdMsg);
return;
}
復制代碼


修改一下初始化入口On_kInitAppMsg和卸載函數On_kUnloadAppMsg


virtual AcRx::AppRetCode On_kInitAppMsg (void *pkt) {
   // TODO: Load dependencies here
   // You *must* call On_kInitAppMsg here
   AcRx::AppRetCode retCode =AcRxArxApp::On_kInitAppMsg (pkt)
  
   // TODO: Add your initialization code here
   //我在這里添加到了初始化,如果你感覺不好的話,可以定義到命令組里
   Accelerator();

   return (retCode)
}
virtual AcRx::AppRetCode On_kUnloadAppMsg (void *pkt) {
   // TODO: Add your code here
   // You *must* call On_kUnloadAppMsg here
   AcRx::AppRetCode retCode =AcRxArxApp::On_kUnloadAppMsg (pkt)
   // TODO: Unload dependencies here

   //卸載arx程序前卸載鉤子函數
   if(filterCtrlKeyDone == TRUE)
   {
acedRemoveWatchWinMsg(watchCtrlI);
acutPrintf(_T("nHook has been removed!n"));
   }

   return (retCode)
}
復制代碼
編譯后,形成arx,加載hook.arx,然后當你用快捷鍵的時候,你就會發現彈出appload對話框了。
最終效果如下圖:
如果你感覺到代碼不好讀或者有出入,見我下面的附件:
在vs2002 + arx2006 + autocad2006 編譯成功并運行正確。

我這個例子僅僅很簡單,希望大家討論。
這個利用鉤子技術在autocad 中定義快捷命令的思路,具有較大的啟發意義。因為,對于在autocad 平臺上開發cad系統來說,如果直接與autocad建立底層聯系(如等待或者觸發特定的消息),利用鉤子技術是很必要的。

 


我想看一级黄色大片_久久亚洲国产精品一区二区_久久精品免视看国产明星_91久久青青青国产免费

            国产精品久久久久四虎| a美女胸又www黄视频久久| 日韩欧美精品在线视频| 日韩一区精品字幕| 一区二区三区**美女毛片| 日本一区二区三区高清不卡| 精品国产伦理网| 日韩欧美一级精品久久| 欧美一区二区三区婷婷月色| 欧美欧美欧美欧美| 在线不卡一区二区| 日韩欧美中文字幕一区| 日韩一区二区精品| 日韩欧美一区二区在线视频| 国产精品高清亚洲| 亚洲国产成人午夜在线一区| 日本一区二区三区国色天香 | 欧美v日韩v国产v| 欧美一区二区三区四区视频| 日韩欧美一区二区不卡| 精品日韩在线一区| 久久综合九色欧美综合狠狠| 国产天堂亚洲国产碰碰| 国产精品美女一区二区三区 | 91天堂素人约啪| 欧美日韩精品电影| 日韩欧美中文字幕制服| 久久久久久99精品| 樱桃视频在线观看一区| 三级欧美韩日大片在线看| 韩国视频一区二区| 91女厕偷拍女厕偷拍高清| 欧美日本一区二区| 久久综合精品国产一区二区三区| 欧美国产精品一区| 亚洲r级在线视频| 极品少妇一区二区| 不卡一二三区首页| 欧美日韩一级大片网址| 久久久精品中文字幕麻豆发布| 亚洲天堂福利av| 日韩电影一区二区三区| 粉嫩一区二区三区性色av| 欧美亚洲国产怡红院影院| 日韩精品一区国产麻豆| 综合av第一页| 国产自产视频一区二区三区| 91国产精品成人| 久久免费视频一区| 亚洲.国产.中文慕字在线| 国产精品一区三区| 91精品国产手机| 亚洲欧美日韩国产一区二区三区| 免费一区二区视频| 91久久人澡人人添人人爽欧美 | 在线观看91精品国产麻豆| 亚洲国产精华液网站w| 天天综合天天做天天综合| 成人夜色视频网站在线观看| 欧美久久高跟鞋激| 国产精品乱码一区二区三区软件| 日韩高清不卡一区| 91亚洲精品一区二区乱码| 精品捆绑美女sm三区| 香蕉加勒比综合久久| 91视视频在线观看入口直接观看www | 精品一区二区三区蜜桃| 欧洲国内综合视频| 亚洲国产精华液网站w| 欧美aa在线视频| 精品视频999| 亚洲人成亚洲人成在线观看图片| 国产美女久久久久| 国产成人av一区二区| 91麻豆精品国产无毒不卡在线观看 | 久久精品国产亚洲a| 6080午夜不卡| 亚洲电影在线播放| 欧美综合天天夜夜久久| 中文字幕一区二区三区在线观看| 国产传媒久久文化传媒| 久久综合精品国产一区二区三区| 日韩电影免费一区| 91精品国产入口| 日本成人中文字幕| 日韩欧美成人激情| 久久99久久久欧美国产| 日韩午夜精品视频| 久久精品国产秦先生| 日韩免费观看2025年上映的电影| 日产欧产美韩系列久久99| 欧美一区二区三区免费| 免费人成精品欧美精品| 精品少妇一区二区三区日产乱码| 另类小说色综合网站| 欧美成人猛片aaaaaaa| 国产一区二区三区综合| 久久久久久97三级| 成人动漫一区二区三区| 亚洲人精品午夜| 欧洲一区二区三区免费视频| 亚洲一区二区三区精品在线| 欧美日韩精品一区二区三区| 午夜电影网一区| 日韩欧美的一区二区| 国产精品一二三四区| 国产精品美女久久久久久2018| 91蜜桃免费观看视频| 亚洲成人av在线电影| 欧美白人最猛性xxxxx69交| 精品一区二区综合| 中文字幕乱码亚洲精品一区| 一本到不卡精品视频在线观看 | 制服丝袜中文字幕一区| 国产在线播放一区| 国产精品伦理一区二区| 在线看不卡av| 免费欧美日韩国产三级电影| 国产调教视频一区| 一本一本久久a久久精品综合麻豆| 亚洲小说春色综合另类电影| 日韩一级片在线观看| 国产成人精品一区二| 亚洲自拍偷拍麻豆| 欧美精品一区二| 色94色欧美sute亚洲13| 精品一区二区三区视频| 最好看的中文字幕久久| 91精品国产色综合久久ai换脸| 国内精品伊人久久久久影院对白| 国产精品久久久99| 欧美综合在线视频| 国产成人在线电影| 日韩国产一二三区| 亚洲婷婷在线视频| 精品国产一区二区三区久久影院| 99久久国产综合精品女不卡| 老鸭窝一区二区久久精品| 亚洲欧美另类久久久精品| 久久亚洲综合色| 欧美久久免费观看| 99久久精品国产观看| 国产在线麻豆精品观看| 亚洲成人免费视频| 亚洲天堂成人网| 久久久激情视频| 欧美一区二区三区视频在线| 色香色香欲天天天影视综合网| 美女爽到高潮91| 五月激情综合网| 亚洲精选免费视频| 国产精品麻豆一区二区| 精品少妇一区二区三区在线播放| 欧美色偷偷大香| 一本色道a无线码一区v| 成人一区二区三区| 国产一区视频网站| 裸体健美xxxx欧美裸体表演| 午夜亚洲国产au精品一区二区 | 一区二区三区 在线观看视频| 国产日产欧产精品推荐色 | 国产精品白丝jk白祙喷水网站| 热久久国产精品| 亚洲大型综合色站| 亚洲一区二区影院| 一区二区高清视频在线观看| 中文字幕在线一区二区三区| 日本一区二区三区四区| 欧美激情一区在线观看| 国产欧美一区二区在线| 久久久久久久性| 国产偷国产偷精品高清尤物| 久久久久久久久一| 国产视频911| 中文字幕免费在线观看视频一区| 久久九九99视频| 国产日韩精品一区二区三区| 国产日韩欧美亚洲| 国产精品久久久久久久浪潮网站| 国产精品婷婷午夜在线观看| 欧美激情一区二区在线| 国产精品久久久久久户外露出| 亚洲视频电影在线| 亚洲福利视频导航| 日本不卡中文字幕| 国内久久精品视频| www.激情成人| 欧美性感一类影片在线播放| 精品污污网站免费看| 欧美一区二区三区不卡| 久久在线观看免费| 国产欧美日韩综合精品一区二区| 久久影院视频免费| 欧美日韩免费一区二区三区视频| 欧美日韩国产高清一区| 欧美色网站导航| 26uuu国产电影一区二区| 久久先锋资源网| 亚洲欧美日韩国产综合| 一区二区三区在线不卡|