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

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

?? 11.txt

?? 本小節通過一個簡單的實例來講述ARX程序的創建過程
?? TXT
字號:
使用Visual C++創建ARX程序


本小節通過一個簡單的實例來講述ARX程序的創建過程,介紹編制Object ARX程序的一些基本步驟和原則,并初步了解ARX程序與AutoCAD進行通訊的方式。如同學習其它計算機語言一樣,我們首先來創建一個最簡單的ARX程序—“Hello.ARX”,在AutoCAD 2002中加載并運行該程序,將會在命令行出現-“Hello, ObjectARX!”。
38.2.1 建立ARX程序的基本步驟
    由于ARX程序是一種可以共享AutoCAD地址空間并對AutoCAD進行直接調用的動態鏈接庫,因此應該按照下列基本步驟建立ARX程序:
    (1) 創建自定義類來實現新的命令:用戶可以從ARX類層次關系中的大多數類和符號表類中派生自己的類。
    (2) 決定ARX程序應該響應的AutoCAD消息:AutoCAD通過向ARX程序發出一系列的消息指明在它內部發生的特殊事件,ARX程序必須對其中的某些消息作出反映,并觸發相應的操作。
    (3) 實現應用程序與AutoCAD通信的入口:AutoCAD通過函數acrxEntryPoint()來調用ARX程序,而不是象普通的C++程序那樣使用main()函數。函數acrxEntryPoint()中可以用switch語句處理AutoCAD的各種返回信息,根據不同信息執行不同的函數,并返回狀態碼。如果針對特定的消息返回出錯代碼,則必須用case語句來處理。最后,必須用AcRx::kRetOk作為函數acrxEntryPoint()的最終返回值。
    (4) 完成ARX程序的初始化:用戶必須在acrxEntryPoint()函數的AcRx::kInitAppMsg事件中或者該事件調用的函數(例如:initApp()函數)中,對程序中自定義的所有類進行初始化,然后調用acedRegCmds->addCommand()函數在AutoCAD命令堆棧中注冊新命令。
    (5) 實現卸載(Unload)功能:用戶必須在acrxEntryPoint()函數的AcRx:: kUnloadAppMsg事件中或者該事件調用的函數(例如:unloadApp()函數)中,調用acedRegCmds->removeGroup()函數將initApp()函數中注冊的新命令組從AutoCAD命令堆棧中清除,調用deleteAcRxClass()函數清除程序中自定義的任何類,然后刪除所有由應用程序添加到AutoCAD中的對象,并清除所有與AcDbObject、AcDbDatabase、AcRxDynamicLinker或AcEditor對象相關聯的事件反應器。
    注意 缺省情況下,ARX程序處于被鎖定狀態而不能被卸載,如果要使ARX程序可以被卸載,需保存由AcRx::kInitAppMsg傳送的appId參數,由unlockApplication()函數調用,見acrxEntryPoint ()函數注釋。
38.2.2 AutoCAD與ARX程序之間的消息傳遞
    AutoCAD向ARX程序發送四類消息:
    (1) 發送給所有ARX程序的消息:kInitAppMsg、kUnloadAppMsg、kLoadDwgMsg、kPreQuitMsg。
    (2) 只發送給通過調用acedDefun() 函數注冊AutoLISP函數的ARX程序的消息:kUnloadDwgMsg、kInvkSubrMsg、kEndMsg、kQuitMsg、kSaveMsgkCfgMsg。
    (3) 只發送給注冊service對象的ARX程序的消息:kDependencyMsg、kNoDependencyMsg。
    (4) 只發送給使用ActiveX控件對象的ARX程序的消息:kOleUnloadAppMsg。
    普通的ARX程序僅需要響應消息kInitAppMsg和kUnloadAppMsg,這兩種消息的含義和ARX程序對它們的響應方式為:
    (1) 消息kInitAppMsg:當AutoCAD 加載ObjectARX應用程序并開始進行與應用程序的通信時發送此消息。
    對于此消息,ARX程序應該注冊服務對象、類、AcEd命令和事件反應器,以及AcRxDynamicLinker類事件反應器,初始化應用程序的系統資源(如設備、窗口),并執行簡單的初始化操作;這時,AcRx、AcEd和AcGe類庫都應該被激活;如果需要對應用程序進行解鎖或重新加鎖操作,還應該保存pkt參數。
    但是這里不能進行下列操作:初始化設備驅動程序、激活用戶界面資源、按特殊順序加載應用程序、執行AutoLISP程序以及打開任何數據庫,否則將導致錯誤發生或者系統崩潰;AcDb和AcGi類庫也不能在這里激活,盡管它們與AcRx 和其它結構有聯系。
    (2) 消息kUnloadAppMsg:當ObjectARX程序被卸載時(由用戶卸載或者AutoCAD程序終止時),AutoCAD發送此消息,關閉當前文件并執行清除操作。
    對于此消息,ARX程序應該清除所有系統資源,所有對kInitAppMsg消息所做的初始化等工作都應該在這里被終止或者析構。AutoCAD不會自動解除初始化所做的工作。
38.2.3 實例1 最簡單的ARX程序——“Hello.ARX”
    Hello.ARX是最簡單的ARX程序,但是麻雀雖小,五臟俱全,它是進一步學習編寫復雜程序的基礎,現在請大家和我來一步步的完成它,具體過程如下:
    Step 1 創建工程
    (1) 運行Visual C++ 6.0,選擇菜單命令【File】→【New…】,彈出“New”對話框。
    (2) 在“New”對話框中選擇“Projects”選項卡。
    (3) 在“Projects”選項卡中選擇“Win32 Dynamic-Link Library”項。
    (4) 輸入程序名稱“Hello”和存放目錄,并確認“Platforms:”內選中“Win32”。
    (5) 完成以上步驟后(如圖38-2所示),單擊OK按鈕,并在下一提示對話框中單擊Finishig按鈕來建立一個空的DLL工程。

    Step 2 建立源文件“Hello.cpp”
    (1) 選擇菜單命令【File】→【New…】,彈出“New”對話框。
    (2) 在“New”對話框中選擇“Files”選項卡。
    (3) 在“Files”選項卡中選擇“C++ Source File”項。
    (4) 輸入源文件名稱“Hello.cpp”和存放目錄,確認“Add to project:”項被選中,并選擇加入的工程為“Hello”。
    (5) 完成以上步驟后(如圖38-3所示),單擊OK按鈕確定。

    (6) 在Visual C++的工作窗口中輸入源文件“Hello.cpp”的內容并保存,程序清單如下:
    // Hello.cpp
    #include <rxregsvc.h>
    #include <aced.h>
    #include <ADSLib.h>
    // 執行函數,在AutoCAD中執行Hello命令時被調用
    void Hello()
    {
    acutPrintf("Hello, Object ARX!");
    }
    // 初始化函數
    // 在acrxEntryPoint()函數的kInitAppMsg事件中被調用,
    // 向AutoCAD命令堆棧中添加新命令組以及ACRX類層次
    // 中添加新的自定義類,本實例中無自定義類,故不用初始化新類
    void initApp()
    {
    //顯示提示信息
    acutPrintf("\n初始化函數\n");
    // addCommand函數在AutoCAD命令堆棧中注冊
    // 新的命令組名“HelloARX_COMMANDS”、
    // 通用命令名“Hello”、
    // 本地命令名“Hello”和該命令的執行函數Hello()
    acedRegCmds->addCommand("HelloARX_COMMANDS","Hello","Hello",
    ACRX_CMD_MODAL,Hello);
    }
    // 程序卸載函數
    // 在acrxEntryPoint()函數的kUnloadAppMsg事件中被調用
    // 從AutoCAD命令堆棧清除已添加的命令以及從ACRX類層次中清除自定義類
    void unloadApp()
    {
    // 顯示提示信息
    acutPrintf("\n卸載函數\n");
    // 從命令堆棧中清除命令組“HelloARX_COMMANDS”
    acedRegCmds->removeGroup("HelloARX_COMMANDS");
    }
    // ARX程序主函數
    // 與AutoCAD通信的入口,處理AutoCAD發送的各類消息
    extern "C" AcRx::AppRetCode
    acrxEntryPoint(AcRx::AppMsgCode msg, void* appId)
    {
    switch (msg) {
    case AcRx::kInitAppMsg:
    acrxDynamicLinker->unlockApplication(appId);
    acrxDynamicLinker->registerAppMDIAware(appId);
    //調用initApp()函數
    initApp();
    break;
    case AcRx::kUnloadAppMsg:
    //調用unloadApp()函數
    unloadApp();
    }
    return AcRx::kRetOK;
    }
    Step 3 建立源文件“Hello.def”
    重復Step 2中步驟,建立源文件“Hello.def”,
    程序內容如下:
    LIBRARY HelloARX
    DESCRIPTION 'The simplest ObjectARX sample program - Hello'
    EXPORTS
    acrxEntryPoint PRIVATE
    acrxGetApiVersion PRIVATE
    Step 4 設置ObjectARX文件路徑
    (1) 選擇菜單命令【Tools】→【Options…】,彈出“Options”對話框。
    (2) 在“Options”對話框中選擇“DirectorIEs”選項卡。
    (3) 在“Show directories for:”下拉列表中選擇“Include files”項。
    (4) 在“Directories:”列表的空白項中添加ObjectARX中“Inc”目錄的路徑(如圖38-4所示)。

    (5) 在“Show directories for:”下拉列表中選擇“Library files”項。
    (6) 在“Directories:”列表的空白項中添加ObjectARX中“Lib”目錄的路徑(如圖38-5所示)。

    Step 5 ObjectARX工程設置

    (1) 選擇菜單命令【Project】→【Settings…】,彈出“Project Settings”對話框。
    (2) 在“Project Settings”對話框中選擇“Setting For:”下拉列表的“All Configurations”項。
    (3) 在“Project Settings”對話框中選擇“C/C++”選項卡。
    (4) 在“Category:”下拉列表中選擇“Code Generation”項。然后選中“Use run-time library”下拉列表中的“Multithreaded DLL”選項(如圖38-6所示)。再在“Category:”下拉列表框中選擇“Preprocessor”項,然后在“Preprocessor definitions:”編輯框中內容的后面添加“ACRXAPP,RADPACK”,表示需要預鏈接的庫(如圖38-7所示)。
    (5) 在“Project Settings”對話框中選擇“Link”選項卡。
    (6) 在“Category:”下拉列表中選擇“General”項,然后在“Output file name:”編輯框中鍵入應用程序名“.\HelloARX.arx”(圖38-8);在“Object/library modules:”編輯框中添加“acutil15.lib acrx15.lib acdb15.lib acedapi.lib rxapi.lib acad.lib acge15.lib”;在“Category:”下拉列表框中選擇“Output”項,然后在“Base address:”編輯框中鍵入“0x1c000000”(圖38-9)。

    (7) 完成上述步驟后,單擊OK按鈕確定設置。
    Step 6 編譯和建立ARX程序
    選擇菜單命令【Build】→【Build HelloARX】,編譯和建立Hello.arx程序。
    Step 7 加載并運行ARX程序
    (1) 在AutoCAD 2002環境中,選擇菜單命令【Tools(工具)】→【Load Application…(加載應用程序)】,彈出“Load/Unload Applications(加載/卸載應用程序)”對話框。
    (2) 選中“Hello.arx”文件,單擊Load...按鈕。
    (3) 單擊Close按鈕返回AutoCAD主窗口。
    (4) 在命令行中輸入命令“Hello”,將在命令行中出現“Hello, Object ARX!”。
    (5) 如果需要卸載程序,則再彈出“Load/Unload Applications(加載/卸載應用程序)”對話框,如圖38-10所示。在“Loaded Applications(已加載應用程序)”選項卡內選擇“Hello.ARX”程序,單擊Unload按鈕,則該程序被卸載。

    實例說明
    1. 在AutoCAD 2002中還可通過“appload”和“arx”命令來載入或卸載ARX程序。
    2. ARX程序還可在AutoCAD啟動時加載。編輯AutoCAD初始加載文件acad.rx,指定需要在啟動時加載的ARX程序名稱。

小 結
    本章主要介紹了ObjectARX的概念和作用,并通過一個最簡單的ARX應用程序實例,介紹了Object ARX程序的基本結構、AutoCAD與ARX應用程序之間的消息傳遞機制、建立ARX應用程序的基本步驟,以及如何在AutoCAD中使用ARX程序。
上一篇: 了解AutoCAD 2006 Beta2新特性
下一篇: AutoCAD中“布局”的使用

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产盗摄一区二区三区| 久久女同精品一区二区| 国产精品12区| 九九九久久久精品| 日本欧美肥老太交大片| 日韩国产在线观看一区| 日韩精品三区四区| 日韩高清国产一区在线| 欧美精品在线一区二区三区| 久久电影国产免费久久电影| 青草国产精品久久久久久| 蜜臀久久99精品久久久画质超高清| 日韩激情视频在线观看| 日本不卡免费在线视频| 国内精品久久久久影院色| 国产精品一二三在| 91视视频在线观看入口直接观看www| 99re成人在线| 欧美视频一区二区三区在线观看| 久久一区二区三区四区| 久久久久久久av麻豆果冻| 中文字幕av不卡| 有码一区二区三区| 日本不卡不码高清免费观看| 国产在线看一区| av中文字幕不卡| 欧美日韩成人高清| 亚洲精品在线观看网站| 高清av一区二区| 国产精品高潮呻吟| 亚洲欧洲一区二区在线播放| 亚洲综合免费观看高清在线观看| 日韩电影免费在线观看网站| 国产精一区二区三区| 成人高清在线视频| 91精品国产色综合久久ai换脸 | 欧美精品在线观看播放| 日韩精品最新网址| 亚洲欧洲99久久| 午夜不卡av免费| 成人午夜激情在线| 日韩免费高清电影| 一区二区三区四区不卡在线 | 91伊人久久大香线蕉| 欧美伊人久久久久久久久影院| 日韩一区二区免费高清| 亚洲国产精品ⅴa在线观看| 天天亚洲美女在线视频| 成人免费毛片高清视频| 日韩一区二区在线观看| 怡红院av一区二区三区| 国产精品123区| 日韩视频在线你懂得| 亚洲精品乱码久久久久| 懂色av一区二区在线播放| 欧美一区二区视频网站| 一区二区三区在线免费观看| 精品综合免费视频观看| 91精品国产欧美一区二区成人| 中文字幕亚洲综合久久菠萝蜜| 蜜桃精品在线观看| 777久久久精品| 亚洲成人精品一区| 欧美综合亚洲图片综合区| 国产精品久久久久久久久免费相片 | 亚洲精品免费在线观看| 国产剧情一区二区| 综合av第一页| 国产精品 欧美精品| 精品免费99久久| 老司机精品视频导航| 91精品国产综合久久婷婷香蕉 | 日韩一卡二卡三卡四卡| 午夜免费欧美电影| 欧美三级日韩在线| 亚洲一区影音先锋| 欧美日韩三级一区二区| 亚洲成人一二三| 欧美裸体一区二区三区| 亚洲电影你懂得| 欧美日韩国产天堂| 日韩电影在线一区| 精品国产一区二区三区忘忧草| 午夜精品一区二区三区电影天堂 | 久久99久久久久久久久久久| 8v天堂国产在线一区二区| 午夜亚洲福利老司机| 欧美日韩国产成人在线91| 午夜影视日本亚洲欧洲精品| 欧美日韩国产高清一区二区 | 欧美一区二区三区在线视频 | 91精品一区二区三区久久久久久 | 亚洲电影第三页| 欧美日韩和欧美的一区二区| 日韩在线观看一区二区| 精品国产欧美一区二区| 国产最新精品免费| 最新国产精品久久精品| 欧美狂野另类xxxxoooo| 久久99精品久久只有精品| 中文字幕 久热精品 视频在线| 成人av资源网站| 亚洲1区2区3区视频| 日韩欧美国产麻豆| 极品少妇xxxx偷拍精品少妇| 日韩欧美aaaaaa| 丰满放荡岳乱妇91ww| 一区二区三区免费看视频| 3d动漫精品啪啪一区二区竹菊| 国产在线精品一区在线观看麻豆| 国产精品色噜噜| 欧美美女一区二区三区| 欧美伊人久久大香线蕉综合69| 日本欧美一区二区三区乱码| 欧美激情中文字幕一区二区| 91福利国产成人精品照片| 激情五月播播久久久精品| 亚洲天堂2014| 2欧美一区二区三区在线观看视频| 成人综合婷婷国产精品久久蜜臀 | 日韩电影在线免费观看| 一区二区在线免费| 美女视频黄 久久| 国产精品免费久久| 欧美精品日韩精品| 成人高清视频在线| 国内成人精品2018免费看| 一区二区三区国产| 国产精品麻豆久久久| 欧美mv日韩mv国产网站app| 欧美在线一区二区三区| 岛国精品在线观看| 精品午夜久久福利影院| 亚洲va在线va天堂| 中文字幕中文在线不卡住| 精品日韩在线观看| 制服丝袜av成人在线看| 欧美在线免费播放| av动漫一区二区| 丁香网亚洲国际| 国产乱码字幕精品高清av| 麻豆精品蜜桃视频网站| www.亚洲国产| 国产成人自拍网| 国产精品正在播放| 精品亚洲免费视频| 无码av免费一区二区三区试看| 成人免费视频在线观看| 国产精品视频第一区| 国产亚洲综合色| 久久久久久久电影| 久久久久久久久一| 国产欧美精品日韩区二区麻豆天美| 日韩欧美亚洲国产精品字幕久久久| 欧美高清视频在线高清观看mv色露露十八| 一本久道久久综合中文字幕| 94色蜜桃网一区二区三区| 91色.com| 欧美日韩亚洲综合在线| 欧美三级日本三级少妇99| 欧美三级电影在线观看| 欧美精品亚洲一区二区在线播放| 欧美日韩中文字幕精品| 6080日韩午夜伦伦午夜伦| 欧美一区二区三区日韩视频| 日韩欧美激情一区| 久久久久久97三级| 日本一二三不卡| 亚洲激情五月婷婷| 水野朝阳av一区二区三区| 青青草精品视频| 国产不卡视频一区| 91在线观看一区二区| 欧美三级一区二区| 精品成a人在线观看| 国产欧美日韩视频在线观看| 亚洲美女视频在线| 午夜久久电影网| 国产伦精品一区二区三区免费迷 | 欧美电视剧在线看免费| 久久久国产精品麻豆| 全部av―极品视觉盛宴亚洲| 韩国av一区二区三区四区| 99精品欧美一区二区三区小说 | 日本亚洲一区二区| 国产成人免费视频网站高清观看视频 | 在线成人小视频| 国产网红主播福利一区二区| 亚洲激情在线激情| 久草在线在线精品观看| 色偷偷成人一区二区三区91| 91精品国产乱码久久蜜臀| 偷拍亚洲欧洲综合| 亚洲免费成人av| 自拍偷拍亚洲激情| 久久电影网站中文字幕| 91麻豆免费看| 国产无一区二区| 日韩影视精彩在线| 白白色 亚洲乱淫|