我想看一级黄色大片_久久亚洲国产精品一区二区_久久精品免视看国产明星_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久久青青青国产免费

            成人一道本在线| 亚洲欧美视频在线观看| 黄色资源网久久资源365| 日韩专区中文字幕一区二区| 亚洲制服丝袜av| 亚洲 欧美综合在线网络| 亚洲国产一区二区a毛片| 日韩影视精彩在线| 久久精品国产亚洲一区二区三区 | 亚洲成人动漫一区| 亚洲综合小说图片| 日韩激情av在线| 韩日欧美一区二区三区| 国产高清不卡一区| 91网址在线看| 欧美日韩视频在线观看一区二区三区| 亚洲精品欧美专区| 亚洲色图一区二区| 亚洲国产美女搞黄色| 天堂一区二区在线| 国精产品一区一区三区mba视频 | 亚洲一区二区在线观看视频| 亚洲图片自拍偷拍| 韩国成人精品a∨在线观看| 国产精品一区二区在线观看不卡| 亚洲欧洲制服丝袜| 亚洲一区二区三区爽爽爽爽爽| 国产精品日韩成人| 亚洲精品高清视频在线观看| 亚洲高清不卡在线| 国产一区二区三区不卡在线观看| 午夜视频一区在线观看| 美女性感视频久久| 99久久精品免费看国产免费软件| 久久草av在线| 99久久久免费精品国产一区二区| 国产一区二区电影| 一本一道久久a久久精品| 欧美高清你懂得| 一区免费观看视频| 精品一区二区精品| 日本精品免费观看高清观看| 精品久久久三级丝袜| 亚洲精品国产无套在线观 | 日本少妇一区二区| 东方aⅴ免费观看久久av| 欧美中文一区二区三区| xfplay精品久久| 日韩电影免费在线观看网站| 91免费在线播放| 国产精品视频你懂的| 激情图片小说一区| 91精品国产91热久久久做人人| 欧美一区二区播放| 国产精品美女久久久久久久网站| 国产精品久久久久久亚洲毛片| 久久精品一区二区| 男女男精品视频网| 在线看国产一区| 中文字幕一区二区三中文字幕| 中文字幕二三区不卡| 免费高清视频精品| 欧美精选在线播放| 亚洲香肠在线观看| 色噜噜夜夜夜综合网| 国产精品国模大尺度视频| 国产剧情在线观看一区二区| 欧美zozozo| 国内精品免费**视频| 日韩欧美在线1卡| 免费一区二区视频| 欧美成人福利视频| 日韩精品一卡二卡三卡四卡无卡| 精品亚洲成a人| 日韩一区二区在线播放| 亚洲专区一二三| 欧美亚洲国产一卡| 亚洲成人自拍网| 6080日韩午夜伦伦午夜伦| 日韩精品1区2区3区| 日韩一区二区三区免费观看| 久久精品国产久精国产爱| 精品福利视频一区二区三区| 国产乱子伦视频一区二区三区| 91国偷自产一区二区三区成为亚洲经典 | 色噜噜狠狠色综合中国| √…a在线天堂一区| 国产91精品免费| 中文成人av在线| 97精品国产露脸对白| 亚洲在线观看免费视频| 欧美日韩国产美| 精品一区中文字幕| 欧美激情综合五月色丁香小说| 亚洲一区二区欧美日韩 | 国产精品电影院| 成人av电影在线网| 国产亚洲欧美激情| 成人黄色国产精品网站大全在线免费观看| 欧美综合天天夜夜久久| 亚洲三级理论片| 欧美三级电影网站| 国产中文一区二区三区| 国产精品久久久久久久久果冻传媒 | 久久久www免费人成精品| 成人av网址在线观看| 亚洲自拍偷拍网站| 欧美www视频| 99久久久免费精品国产一区二区| 精品久久一区二区三区| 成人国产精品免费观看| 天天综合网天天综合色| 欧美国产日韩在线观看| 欧美日韩黄视频| 国产成人自拍网| 午夜精品久久久久久久| 国产欧美日韩视频在线观看| 欧美三级欧美一级| 国产精品1区2区| 亚洲一区二区3| 国产日韩欧美不卡| 欧美精品在线观看播放| 高清国产一区二区| 五月天视频一区| 亚洲视频在线一区| 日韩精品在线看片z| 在线视频综合导航| 国产一区二区在线观看视频| 亚洲成人免费视| 亚洲欧洲韩国日本视频| 日韩欧美你懂的| 欧美日韩美女一区二区| 成人高清视频免费观看| 久久精品国产99国产精品| 伊人开心综合网| 欧美国产乱子伦| 亚洲精品一区二区在线观看| 欧美精品777| 欧美亚洲日本一区| 91色九色蝌蚪| 成人视屏免费看| 国产精品 日产精品 欧美精品| 中文字幕免费在线观看视频一区| 国产麻豆视频一区二区| 午夜精品免费在线| 亚洲三级理论片| 国产精品第一页第二页第三页| 日本福利一区二区| 成人午夜视频福利| 国产在线国偷精品免费看| 日韩av电影免费观看高清完整版| 欧美成人精品3d动漫h| 欧美在线播放高清精品| av不卡在线播放| 成人av第一页| 成人激情免费视频| 国产成人av网站| 国产高清无密码一区二区三区| 亚洲精品免费看| 亚洲女同ⅹxx女同tv| 久久久国产综合精品女国产盗摄| 91丨九色丨国产丨porny| 国产电影一区二区三区| 国产盗摄一区二区| 国产精品一二三区| 国产a区久久久| 成人av资源站| 99精品热视频| 欧美主播一区二区三区| 欧美日韩国产精品成人| 3751色影院一区二区三区| 国产精品不卡在线| 色94色欧美sute亚洲线路二 | 成人免费在线播放视频| 国产午夜精品久久久久久久 | 国产丝袜美腿一区二区三区| 欧美大片免费久久精品三p | 成人免费视频caoporn| 蜜臀国产一区二区三区在线播放 | 亚洲国产精品一区二区www在线| 欧美怡红院视频| 国产乱码精品一区二区三区五月婷 | 欧美激情一区在线观看| 欧美精品一区二区高清在线观看| 成人黄页在线观看| 国产综合色在线| 国产精品一二三四区| 国产jizzjizz一区二区| 成人自拍视频在线观看| 91麻豆福利精品推荐| 在线视频综合导航| 欧美人体做爰大胆视频| 精品卡一卡二卡三卡四在线| 久久久久久久久久美女| 国产日本欧美一区二区| 中文字幕一区在线| 亚洲国产美女搞黄色| 韩国毛片一区二区三区| 国产99久久久精品| 色综合天天狠狠|