關於ObjectARX中自定義物件的OPM

2022-03-24 23:12:32 字數 1133 閱讀 2832

關鍵字

objectarx,autocad,自定義物件,opm

在objectarx開發中,給自定義物件新增乙個屬性頁面是個很有吸引力的事情,

學習路徑如下,

但估計是製作年代比較久遠,按照readme雖然能編譯通過,並且正確執行,但有些細節已經不一樣了。

1.2研究polysamp,這是乙個複雜,但也有很多的值得學習的例子,包括自定義物件,如何對映到com上,對映到dotnet上等等

主要看compoly看如何對映到com,

1.3(可選)再研究asdksquare,並對其進行重新改造;

小結:通過c++,實現乙個opm介面的屬性頁,asdksquare為藍本,已經足夠了,不需要像polysamp那麼複雜

兩者對比:

a輸出為乙個dll,然後由登錄檔檔案reg,使用者自行註冊, 而p則是 包裝成乙個dbx檔案,在autocad的過程中,呼叫註冊,完成註冊,隱含使用了資源中rgs

a中的main.cpp相對簡單;p中則是增加了acrxentrypoint等函式,以支援上述問題

a中無安裝檔案;p中提供了乙個msi專案參考,從而進行註冊

a的檔案組織有缺陷,需要兩次編譯(一次生成midl,一次生成dlls);而這方面p則比較好,重複包含idl檔案可以就可以解決這個問題

a中的asdksquarelib.h應該是過時的產物,新的應該是asdksquarelib_i.h;而p則無這方面的問題

a中使用def檔案硬編碼匯出c++(很有勇氣);而在p中則是使用的常規的 dllimpexp 巨集

2 網上資料

這方面資料很少

2.1《opm的實現 》

這個只要看看其中的知識點就行,理解其中的含義即可,並不能說明其中是一種好的方案,或者整體知識是正確的。

2.2《動態屬性》

2.3 arx嚮導

有些教程中是通過arx嚮導完成專案初步建立,對建立專案應該有幫助,但我沒有使用。

2.4 《opm(物件屬性管理器)在注意事項》 

講到了一些注意事項

2.5 對於dotnet版本的opm,可以參考 devblog

3 要點

3.1 在屬性面板中顯示屬性,則一定要實現subgetclassid;否則可以不用

3.1.1 其中的guid要和idl中的一致

關於Flex中自定義事件

事件是乙個非常有用的功能,通常用於資訊傳遞互動大大提高程式編寫的靈活性。在高階語言中都會整合這方面特性 flex也不例外幾乎所有控制項中都整合了大量的事件,如果button的click事件等。但實際應用中控制項自有的事件是不能滿真實需要的,特別在自己編寫自定義控制項時,自定義控制項內部資訊的改變如何...

關於自定義演算法

晶元內部執行被保護程式是乙個很好的思路。但目前並不實用。主要原因的執行效率。由於加密狗晶元的能力與終端使用者計算機的能力相差太遠,實際上它根本不可能執行任何核心程式段或複雜運算程式段。當然,帶有任何輸入輸出指令的程式段也是不可能被執行的。而且,被執行程式段必須是結構完整的,不能與其它程式段有複雜的呼...

關於在ATL中自定義訊息

在atl中自定義訊息的機制與mfc類似,使用訊息對映。訊息對映 為了確保我們能夠在cwindowimpl derived class中處理windows訊息,atl從抽象基類cmessagemap中繼承。cmessagemap宣告乙個純虛函式 processwindowmessage,整個類如下 c...