天天看點

如何在自己的對話框調用CAD的内置對話框,并能夠再傳回自己的對話框中

轉載來自:http://blog.163.com/aiding_001/blog/static/2290819201321532458888/

例如在自己的對話框中的按鈕中調出象style指令出現的對話框,操作完畢後再回到自己的對話框。

如常用的幾個對話框對應的函數為: 1、尺寸标注樣式編輯對話框: int acedEditDimstyleInteractie(AcDbDatabase *,AcDbDimStyleTableRecord *,int); 2、多行文字編輯對話框: int acedEditMTextInteractie(AcDbMText *); 3、公差編輯對話框: void acedEditToleranceInteractie(AcDbFcf *); 4、CAD自己的檔案對話框: int acedGetFileD(const char *,const char *,const char *,int,struct resbuf *); int acedGetFileNavDialog(const char *,const char *,const char *,const char *,int,struct resbuf**); 5、填充面闆對話框: bool acedHatchPalletteDialog(const char *,bool,char * &); 6、線形對話框: bool acedLinetypeDialog(AcDbObjectId,bool,char * &,AcDbObjectId &); 7、線寬對話框: bool acedLineWeightDialog(AcDb::LineWeight,bool,AcDb::LineWeight &); 8、列印樣式對話框: bool acedPlotstyleDialog(const char *,bool,char * &); 9、填充編輯對話框: void hatchedit(long,int,bool,const AcDbObject *); 10、文字樣式對話框: void inokeTextStyleDialog(AcDbDatabase *,CString *); 這些函數大多不在文檔中,可按兩種方式使用: 1、将這些函數放在一個頭檔案中,使用時直接包含進來就可以了。 2、先用GetModuleHandle擷取acad.exe的句柄,然後用GetProcAddress動态擷取指定函數的入口位址,之後就可以直接調用了。

不過在一般函數裡引用沒有問題,但是在對話框中調用就有問題,調不出那個cad對話框。其原因是資源問題,使用前需要用AfxSetResourceHandle設定CAD資源,用完回設就可以了!

繼續閱讀