關於CAD夢想控制元件介面控制
CAD控制元件介面上所有元素都可以控制顯示或隱藏,下面逐一介紹,控制元件介面上的元素位置如下圖:
顯示或隱藏介面
顯示或隱藏所有工具條:
C++ | MxDraw::ShowToolBars |
COM介面 | ocx的屬性, ShowToolBars |
例如JS語言隱藏工具條:
<param name="ShowToolBars" value="0">
顯示或隱藏指定工具條, 工具條名稱會在後面的工具條檔案格式中說明。
C++ | MxDraw::ShowToolBar |
COM介面 | _DMxDrawX::ShowToolBar |
MxDraw::ShowToolBar 方法
介面:
static BOOL ShowToolBar(IN MXDRAWOCXHANDLE hOcx, IN const CString& sToolBarName, BOOL isShow);
引數:
引數 | 說明 |
---|---|
IN MXDRAWOCXHANDLE hOcx | 控制元件控制程式碼 |
IN const CString& sToolBarName | 工具條名,在工具條定義檔案(副檔名為mxt)中的第一行第五列 |
BOOL isShow | 為TRUE顯示工具條,否則隱藏工具條 |
顯示或隱藏工具條上某個按鈕
C++介面 | MxDraw::HideToolBarControl |
例如VC程式碼隱藏繪圖工具欄上的繪線和繪矩形框按鈕:
MxDraw::HideToolBarControl(m_hDrawOcx,_T("繪圖工具"),_T("繪線,繪矩形框"));
COM介面 | _DMxDrawX::HideToolBarControl |
例如VC程式碼隱藏繪圖工具欄上的繪線和繪矩形框按鈕:
mxocx.HideToolBarControl(_T("繪圖工具"),_T("繪線,繪矩形框"),true,true);
禁用工具條上某個按鈕
C++介面 | MxDraw::EnableToolBarControl |
例如禁用列印按鈕:
MxDraw::EnableToolBarControl(m_hDrawOcx,_T("列印圖形"),FALSE);
COM介面 | DMxDrawX::EnableToolBarButton |
例如頁中禁用開啟按鈕程式碼:
document.getElementById("MxDrawOcxCtrl").EnableToolBarButton("開啟dwg檔案",0);
工具條檔案
控制元件MxDraw52.dll所在目錄下,所有的mxt都是工具條定義檔案,每個mxt檔案就是一個工具條, 如下:
檔名 | 說明 |
MxDraw-ToolBar.mxt | 常用工具條 |
MxDraw-ToolBar-Draw.mxt |
繪圖工具條 |
MxDraw-ToolBar-DrawParam.mxt | 特性工具條 |
MxDraw-ToolBar-Edit.mxt |
編輯工具條 |
MxDraw-ToolBar-ET.mxt | 擴充套件工具條 |
把不需要的工具條檔案刪除,控制元件載入時就不會顯示該工具條。
它是文字檔案,用記事本開啟編輯,格式如下:
“//”是檔案中的註釋。
檔案中第一行是工具條檔案頭資訊,每列內容如下:
如:("MxDrawToolBarFile" "MxDraw.dll" (214 211 206) "top" "常用工具" "Y")
第幾列 | 例程中的內容 | 說明 |
1 | "MxDrawToolBarFile" | 工具條檔案標誌字串 |
2 |
"MxDraw.dll" |
工具條中按鈕圖片資源載入檔案 注:後面圖示預設從該dll中載入 |
3 | (214 211 206) | 在資原始檔中,按鈕圖片的透明色 |
4 |
"top" |
位置,可以是:top,left,bottom,right |
5 | "常用工具" | 工具條名稱 注:顯示\隱藏函式會使用 |
6 | "Y" | 是否可以浮動,Y \N |
檔案中後面每行代表一個工具條按鈕。
每列的內容如下:
如:("開啟網上dwg檔案" "開啟網上dwg檔案" "_OpenWebDwg" "IDB_OPENWEBDWG_BITMAP" "" "" "" "Y")
命令名稱 | 命令提示字串 | 命令名 | 控鈕在資原始檔中的點陣圖ID | ID型別 | 資原始檔名 | "命令ID" | 沒有命定義時,是否不要載入工具按鈕 |
"開啟網上dwg檔案" | "開啟網上dwg檔案" | _OpenWebDwg | " IDB_OPENWEBDWG_BITMAP " | "" | "" | "" | "Y" |
命令名稱:
"開啟網上dwg檔案"。
命令提示字串:
"開啟網上dwg檔案"。
命令名:
C++使用McEdCommandStack :: addCommand增加,例如下:
acedRegCmds()->addCommand(_T("SysCmd"),
_T("OpenDwg"), _T("OpenDwg"), 1, OpenDwg);
COM介面:DMxDrawX::RegistUserCustomCommand註冊命令
控鈕在資原始檔中的點陣圖ID:
" IDB_OPENWEBDWG_BITMAP "。
ID型別:
目前控制元件內部使用,一般為空。
資原始檔名:
1. 為空取預設資原始檔名,該名稱,需要去掉控制元件版本號如: MxDraw52.dll寫成MxDraw.dll,控制元件會根據具體情況加上這個版本號。
2. 資原始檔如是local:開頭,表示是一個本地bmp檔案,如:取mytoolbar.bmp做工具按鈕圖示:local:mytoolbar.bmp
3. 資原始檔如是web:開頭,表示是一個網路伺服器上的bmp檔案,如:取mytoolbar.bmp做工具按鈕圖示: web:mytoolbar.bmp
命令ID:
指定選單點選後響應的命令事件id,如不為空,可以在控制元件的命令執行事件中響應選單點選事件: ImplementCommandEvent。
沒有命定義時,是否不要載入工具按鈕:
"Y"
自定義按鈕參考例子: samples\AspNet\AspNet\My-MxDraw-ToolBar.txt。
比如:按鈕圖示從本地bmp檔案載入:
("自定義打檔案按鈕" "自定義打檔案按鈕" "Mx_OpenMxg" "" "" " local:mytoolbar.bmp")
比如:按鈕圖示從伺服器bmp檔案載入,bmp檔案與工具條檔案在同一個伺服器目錄中:
("自定義打檔案按鈕" "自定義打檔案按鈕" "Mx_OpenMxg" "" "" "web:mytoolbar.bmp")
從指定檔案載入
控制元件預設是載入控制元件程所在目錄下的所有mxt檔案,下面介紹如何顯示指定載入工具檔案。
C++介面 | MXDRAWOCXHANDLE MxDraw::CreateMxDraw,第四個引數指定工具條載入檔案 |
COM介面 | ToolBarFiles屬性,它支援從伺服器上載入工具檔案,多個工具條檔案用逗號隔開 |
幫助如下圖:
如Js語言從伺服器載入工具條檔案, 工具條檔案相對於當前網頁:
<param name=" ToolBarFiles" value=" ./My-MxDraw-ToolBar.txt,MxDraw-ToolBar-DrawParam.mxt,MxDraw-ToolBar-Draw.mxt,MxDraw-ToolBar-Edit.mxt">
暫不載入工具條檔案,如下:
<param name=" ToolBarFiles " value=" Empty.mxt">
顯示載入工具條檔案
控制元件支援在需要時,再動態載入工具條檔案,介面說明如下:
C++介面 | MxDraw::LoadToolBar |
例如:
void CTestDlg::OnBnClickedLoadtoolbarButton1() { CFileDialog openDlg(TRUE,_T("mxt"),NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("mxt(*.mxt) | *.mxt||"),AfxGetApp()->GetMainWnd()); if(openDlg.DoModal() == IDOK) { CString sToolBarFilePath = openDlg.GetPathName(); MxDraw::LoadToolBar(m_hDrawOcx,sToolBarFilePath); }}
COM介面: _DMxDrawX::LoadToolBar
幫助檔案抓圖:
完整例子說明
在B/S模式下,一步一步的說一下,如何使用者自定義工具條,並響應點選事件。 詳細例子可以參考samples\AspNet\AspNet.sln, samples\AspNet\ My-MxDraw-ToolBar.txt。
1、新建選單檔案
新一個文字檔案: My-MxDraw-ToolBar.txt,內容如下:
定一個按鈕,按鈕名為“自定義按鈕“,圖示是伺服器上載入,圖示名為mytoolbar.bmp,按鈕點選執行命令,命令id為99。
("MxDrawToolBarFile" "MxDraw.dll" (214 211 206) "top" "MyTest工具" "Y")("自定義按鈕" "自定義按鈕" "" "" "" " web:mytoolbar.bmp " "100")
2、把檔案上傳到伺服器
把My-MxDraw-ToolBar.txt, mytoolbar.bmp檔案放到伺服器上,並放在同一個目錄下,保證能直接從ie中訪問。
3、Js程式裡引用工具條
工具條檔案放在當前網頁目錄下。
<param name="ToolBarFiles" value="./ My-MxDraw-ToolBar.txt ">
4、響應命令執行事件,如下:
function DoCommandEventFunc(iCmd){ if (iCmd == 100) { //該函式在mxcustom.js中 alert("工具條按鈕點選");}}
document.getElementById("MxDrawXCtrl").ImplementCommandEventFun = DoCommandEventFunc;
顯示或隱藏介面
C++介面 | MxDraw::ShowMenuBar |
COM介面 | ocx的屬性, ShowModelBar。例如JS語言,隱藏選單欄 |
選單欄檔案
控制元件MxDraw52.dll所在目錄下,所有的mnu檔案,都是 選單定義檔案,它是文字檔案,用記事本開啟編輯,格式如下:
檔案中第一行是選單檔案頭,每列內容如下 :
檔案型別字串 | 資原始檔名(後面選單的圖示預設從該dll中載入) | 圖示的透明顏色 | 位置 | 選單名 | 是否可以浮動,Y/N |
"MxDrawMenuBarFile" | "MxDraw.dll" | (214 211 206) | "top" | "主選單" | "Y" |
“//”是檔案中的註釋
檔案中後面每行代表一個選單項
"POPMENUS" "檔案(&F)",表示一個彈出選單開始
"POPMENUE" 表示彈出選單的結束
後面每列的內容如下:
命令名稱 | 點選執行的命令 | 圖示索引字串 | 資原始檔名 | 命令提示字串 | "命令ID" | ID型別(目前控制元件內部使用,一般為空) |
"新建(&N)" | Mx_New | "IDB_NEW_BITMAP" | "" | "" | "1" | "" |
命令名稱:
新建(&N)。
點選執行的命令:
C++使用acedRegCmds->addCommand註冊命令。
其它語言使用DMxDrawX::RegistUserCustomCommand註冊命令。
圖示索引字串:
IDB_NEW_BITMAP。
資原始檔名:
1. 為空取預設資原始檔名,該名稱需要去掉控制元件版本號如:MxDraw52.dll寫成MxDraw.dll,控制元件會根據具體情況加上這個版本號。
2. 資原始檔如是local:開頭,表示是一個本地bmp檔案,如:取mytoolbar.bmp做工具按鈕圖示:local:mytoolbar.bmp
比如:選單圖示從本地bmp檔案載入:
"自定義新建(&N)" "Mx_New" "IDB_NEW_BITMAP" "local:mytoolbar.bmp"
3. 資原始檔如是web:開頭,表示是一個網路伺服器上的bmp檔案,如:取mytoolbar.bmp做工具按鈕圖示: web:mytoolbar.bmp
比如:選單圖示從伺服器bmp檔案載入,bmp檔案與選單檔案在同一個伺服器目錄中:
"自定義新建(&N)" "Mx_New" "IDB_NEW_BITMAP" "web:mytoolbar.bmp"
命令提示字串:
為空。
命令ID:
指定選單點選後響應的命令事件id,如不為空,可以在控制元件的命令執行事件中響應選單點選事件: ImplementCommandEvent。
ID型別:
目前控制元件內部使用,一般為空。
比如:選單圖示從本地bmp檔案載入:
"自定義新建(&N)" "Mx_New" "IDB_NEW_BITMAP" "local:mytoolbar.bmp"
比如:選單圖示從伺服器bmp檔案載入,bmp檔案與選單檔案在同一個伺服器目錄中:
"自定義新建(&N)" "Mx_New" "IDB_NEW_BITMAP" "web:mytoolbar.bmp"
從指定選單檔案載入
C++介面: MXDRAWOCXHANDLE MxDraw::CreateMxDraw第五個參數列示選單載入檔案
COM介面: Iniset屬性, MenuFile=mymenu.mun,它支援從伺服器上載入選單檔案
幫助如下圖:
如Js語言從伺服器載入選單,選單檔案相對於當前網頁:
<param name="Iniset" value="MenuFile=./mymenu.mun">
相對伺服器路徑, "~"開頭,如下:
<param name="Iniset" value="MenuFile=~/mymenu.mun">
重新從檔案載入選單介面:
C++ | MxDraw::ReLoadMenu |
COM介面,它是自定義函式: | MxDrawXCustomFunction::Mx_ReLoadMenu |
C#程式碼,如下呼叫:
axMxDrawX1.Call("Mx_ReLoadMenu", "mxcad.mnu");
禁用或啟用選單項
C++介面函式: | MxDraw::EnableMenuBarControl |
MxDraw::EnableMenuBarControl方法
啟用或禁用選單項獎條上的按鈕,說明如下:
引數 | 說明 |
---|---|
MXDRAWOCXHANDLE hOcx | 控制元件視窗控制程式碼 |
LPCTSTR pszControlName | 按鈕的名稱,在工具條定義檔案(副檔名為mxt)第一列就是按鈕名稱 |
BOOL isEnable = TRUE | 是否啟用,傳false禁用工具 |
顯示或隱藏選單項
C++介面 | MxDraw:: HideMenuBarControl |
COM介面 | _DMxDrawX::HideMenuBarControl |
例如:
mxOcx.HideMenuBarControl("新建(&N),開啟(&O)",true);
JS程式碼:
function InitMxDrawX() {if (mxOcx) {if (!mxOcx.IsIniting()){clearInterval(mxtime);// 控制元件初始化完成,需要在啟動做的事,在這裡做mxOcx.HideMenuBarControl("新建(&N),開啟(&O)",true);}}}}
完整例子說明
在B/S模式下,一步一步的說一下,如何使用者自定義選單,並響應點選事件。 詳細例子可以參考 samples\AspNet\AspNet.sln。
1、新建選單檔案
新一個文字檔案: mxcad.mnu,內容如下:
定一個選單按鈕,按鈕名為MyMenuButtonName,圖示從伺服器上載入,圖示名為mytoolbar.bmp,按鈕點選執行命令,命令id為99。
"MxDrawMenuBarFile" "MxDraw.dll" (214 211 206) "top" "主選單" "Y""POPMENUS" "檔案(&F)""MyMenuButtonName(&N)" "" "" "web:mytoolbar.bmp" "" "99""POPMENUE"
2、把檔案上傳到伺服器
把mxcad.mnu, mytoolbar.bmp檔案放到伺服器上,並放在同一個目錄下,保證能直接從ie中訪問。
3、Js程式裡引用選單
選單檔案放在當前網頁目錄下。
<param name="Iniset" value="MenuFile=./mxcad.mnu">
4、響應命令執行事件,如下:
function DoCommandEventFunc(iCmd){if (iCmd == 99) {//該函式在mxcustom.js中 alert("選單按鈕點選");}}
document.getElementById("MxDrawXCtrl").ImplementCommandEventFun = DoCommandEventFunc;
右鍵彈出選單
控制元件支援滑鼠右鍵彈出選單,選單的檔案格式和前面的主選單檔案格式一樣。 詳細參考例子, samples\ie\iedemoTest.htm。
彈出函式C++介面 | MxDraw::TrackPopupMenu |
COM介面 | DMxDrawX::TrackPopupMenu |
在B/S模式下,下面一步一步的說明如何支援該功能:
1、新建選單檔案
新一個文字檔案: mxpop.mnu,內容如下:
定一個選單按鈕,按鈕名為MyMenuButtonName,圖示是伺服器上載入,圖示名為mytoolbar.bmp,按鈕點選執行命令,命令id為99。
"MxDrawMenuBarFile" "MxDraw.dll" (214 211 206) "top" "主選單" "Y""POPMENUS" "檔案(&F)""MyMenuButtonName(&N)" "" "" "web:mytoolbar.bmp" "" "99""POPMENUE"
2、把檔案上傳到伺服器
把mxpop.meu, mytoolbar.bmp檔案放到伺服器上,並放在同一個目錄下,保證能直接從ie中訪問。
3、響應滑鼠右鍵事件,彈出選單
選單檔案放在當前網頁目錄下。
document.getElementById("MxDrawXCtrl").ImplementMouseEventFun = MouseEvent;
function MouseEvent(dX, dY, lType) {// 3表示滑鼠右鍵按下 if(lType == 3){var sPopMenu = mxOcx.GetOcxAppPath() + ".\\mxpop.mnu"mxOcx.TrackPopupMenu(dX, dY, sPopMenu);// 設定1,表示滑鼠事件,不再往下傳遞.mxOcx.SetEventRet(1);}}
4、響應命令執行事件,如下:
function DoCommandEventFunc(iCmd){if (iCmd == 99) {//該函式在mxcustom.js中 alert("選單按鈕點選");}}
document.getElementById("MxDrawXCtrl").ImplementCommandEventFun = DoCommandEventFunc;
顯示或隱藏介面:
C++介面 | MxDraw::ShowRulerWindow |
COM介面 | DMxDrawX::ShowRulerWindow |
例如隱藏標尺欄,JS:
<param name="ShowRulerWindow" value="0">
顯示或隱藏介面:
C++介面 | MxDraw::ShowPropertyEditWindow |
COM介面 | DMxDrawX::ShowPropertyWindow |
例如顯示屬性欄,JS:
<param name="ShowPropertyWindow" value="1">
屬性欄功能,預設是沒有啟用的,需要在控制元件啟動時初始化啟用。
COM介面 | MxDraw::EnablePropertyEditWindow |
例如,在App::InitInstance中啟用
BOOL CTestDlgApp::InitInstance(){// …MxDraw::InitMxDraw(true,_T("MxDraw-Edit.ini"));MxDraw::SetTheme(MxDraw::themeWhidbey);MxDraw::EnableUndo(true);MxDraw::EnableOleShow(true);MxDraw::EnableViewModifyNotify(true);MxDraw::EnableDeskCommandWindow(true);MxDraw::ShowCommandWindow(NULL,TRUE);MxDraw::EnablePropertyEditWindow(true);//…}
COM: IniSet=" EnablePropertyWindow=Y"如下圖說明:
例如,Js呼叫啟用屬性視窗功能,但不顯示。
<param name="Iniset" value="LoadMrx=PropertyEditor,EnablePropertyWindow=Y">
顯示或隱藏介面:
C++ | MxDraw::ShowCommandWindow |
COM介面 | _DMxDrawX::ShowCommandWindow |
例如隱藏命令欄,JS:
<param name="ShowCommandWindow" value="0">
顯示或隱藏介面:
C++ | MxDraw::ShowModelBar |
COM介面 | _DMxDrawX::ShowModelBar |
例如隱藏模型欄,JS:
<param name="ShowModelBar" value="0">
顯示或隱藏介面:
C++ | MxDraw::ShowModelBar |
COM介面 | _DMxDrawX::ShowStatusBar |
例如隱藏狀態列,JS:
<param name="ShowStatusBar" value="0">
顯示進度條
COM介面:
設定進度條顯示範圍 | _DMxDrawX::SetStatusBarProgressMeter |
設定進度條顯示位置 | _DMxDrawX::SetStatusBarProgressMeterPos |
隱藏進度條 | DMxDrawX::RestoreStatusBar |
C++介面:
設定進度條顯示範圍 | Mx::mcedSetStatusBarProgressMeter |
設定進度條顯示位置 | Mx::mcedSetStatusBarProgressMeterPos |
設定進度條走一步 | Mx::mcedSetStatusBarProgressStep |
隱藏進度條 | Mx::mcedRestoreStatusBar |
狀態列上按鈕呼叫
參考“ 夢想控制元件20-常用系統變數說明.doc”文件,狀態列上的捕捉,正交等功能如何在自己的程式中設定。
座標設定事件
狀態上的座標被修改後,會觸發一個通知事件,可以幫助使用者寫自定義狀態列。
COM介面 | DMxDrawXEvents::SetTipCoord |
_DMxDrawXEvents::SetTipCoord方法
介面:
static void SetTipCoord(CString sCoordTxt, double dX, double dY, double dZ);
引數:
引數 | 說明 |
---|---|
CString sCoordTxt | 狀態條顯示內容 |
double dX | 狀態條顯示X座標 |
double dY | 狀態條顯示Y座標 |
double dZ | 狀態條顯示Z座標 |
進度條事件
進度條顯示時,會觸發設定進度條事件。
COM介面 | DMxDrawXEvents::SetProgressBar |
狀態列的夢想Logo
控制元件試用版本程式,總是會顯示該Logo,正式程式就會自動去掉該Logo。
設定視區背景色
COM介面 | _DMxDrawX::ViewColor |
C++ | MxDraw::SetViewColor |
例如C#動態修改顏色:
axMxDrawX1.ViewColor = Color.FromArgb(255,255,66,0)
例如JS把背景色變成紅色= 123,綠色=55,藍色=78,顏色值是由(0xFF FF FF)6位的16進位制資料組成,分別代表示(0x紅,綠,藍),比如要設定顏色: 紅色= 123,綠色=55,藍色=78的顏色。
123= 0x7B, 55=0x37, 78=0x4E
也就是0x7B 37 4E, 0x7B374E = 8075086
所以設定ViewColor =8075086
<param name="ViewColor" value="8075086">
設定視區背景色為漸變色
COM介面 | IniSet="ViewGradientColor=RGB;標記" |
C++ | MxDraw::SetViewGradientColor |
設定背景為漸變色填充,RGB是填充的漸變色,標記為 0,不使用漸變填充顏色,1使用漸變填充顏色。
C#如使用綠色漸變:
axMxDrawX1.Iniset = "ViewGradientColor=" + "255" + ";1"; axMxDrawX1.ViewColor = Color.FromArgb(10, 22, 200, 0);
設定水印背景
COM介面 | _DMxDrawX::Watermark |
例如:設定檔名:d:\\mxcad.jpg,透明度為70,居中顯示,x方向距離為5,y方向距離為5,如下:
ocx.Watermark = "d:\\mxcad.jpg,70,5,5,1"
JS例子:
var iShowWatermark = false;function ShowWatermark() { iShowWatermark = !iShowWatermark; if (iShowWatermark) { mxOcx.Watermark = mxOcx.GetOcxAppPath() + "\\Watermark.png" + ",20,5,5,1"; mxOcx.ViewColor = 16777215; // 背景色改成白色 } else { mxOcx.Watermark = ""; mxOcx.ViewColor = 0; // 背景色改成白色 }}
C++ | MxDraw::OpenBackgroundImageFile |
參考說明如下:
// Summary:// 把一個光柵圖開啟,做背景.// Parameters:// hOcx - 控制元件控制程式碼// luPt - 光柵圖顯示的在控制元件視區顯示的左上角位置,視區視窗座標。//在居中顯示時,luPt.x表示左右空白距離,luPt.y表示上下空白距離// pszFile- DWG\BMP\JPG檔案路徑,支援http路徑,檔案件名為空時,清空背景檔案// iTransparen - 表示透明顯示的,透明度,取值在 0~100,// pos - 背景圖片是否居中顯示,還是左上角定位// Returns:// 成功能返回true// -------------------------------------------------------------------------static BOOL OpenBackgroundImageFile(IN MXDRAWOCXHANDLE hOcx,IN CPoint luPt,IN LPCTSTR pszFile,IN int iTransparen = 50,IN MxDraw::ImagePos pos = kAutoCenter,IN BOOL isAutoUpdisplay = TRUE);
繪光柵圖到背景
COM介面 | _DMxDrawX::DrawImageToBackground |
參考說明如下:
BSTR sFileName | 光柵圖檔案.DWGBMPJPG檔案路徑 |
LONG lLeftUpX | 柵圖顯示的在控制元件視區顯示的左上角位置X,視區視窗座標 |
LONG lLeftUpY | 柵圖顯示的在控制元件視區顯示的左上角位置Y,視區視窗座標 |
把DWG檔案當著背景匯入
C++介面 | MxDraw::OpenBackgroundFile |
COM介面 | _DMxDrawX::OpenBackgroundFile |
把一個dwg檔案,或者影像檔案當著一個背景匯入,參考說明如下:
VARIANT_BOOL isGreyness | 是否灰顯示 |
LONG lightColor | 背景灰度顯示顏色 |
VARIANT_BOOL isZoomE | 是否自動把呼叫ZoomE操作 |
VARIANT_BOOL isUpDisplay | 是否自動呼叫更新顯示 |
sFile | DWGBMPJPG檔案路徑 |
物件夾點顯示顏色
COM介面 | IniSet="GripColor=RGB" |
C++介面 | MxDraw::SetGripColor |
例如: JS,把夾點顏色改成 紅色= 123,綠色=55,藍色=78,設定GripColor=8075086:
<param name="IniSet" value="GripColor=8075086">
設定游標線顯示長度:
COM介面 | _DMxDrawX::CursorLong |
_DMxDrawX::SetCursorCrossLong | |
C++ | MxDraw::SetCursorCrossLong |
設定為0表示無限長:CursorLong= 0,預設值為30。
設定游標矩形框大小:
COM介面 | _DMxDrawX::CursorWidth |
_DMxDrawX::SetCursorPickRect | |
C++ | MxDraw::SetCursorPickRect |
預設值為6 ,單位是螢幕畫素大小。
自定義設定游標
COM介面,臨時需要改變游標,用如下函式完成:
儲存游標狀態,與RestoreCursor配合使用 | _DMxDrawX::SaveCursor |
設定游標,從cur游標檔案載入 | _DMxDrawX::SetCursor |
恢復游標 | _DMxDrawX::RestoreCursor |
C++介面,該函式有三個過載,從游標檔案(cur)載入游標,從游標資源中載入,設定內建游標 MxDraw::SetCursor
得到游標函式,用於備份游標,在需要時恢復游標 MxDraw::GetCursor。
設定預設預設時游標
COM介面 | _DMxDrawX::UseArrowCursor |
設定預設使用箭頭游標,不要使用預設的十字游標:
<param name="UseArrowCursor" value="1">
從檔案載入一個預設游標,控制元件預設狀態下將使用這個游標,路徑是個相對 MxDrawX.ocx所在目錄下的檔案。
Iniset屬性,DEFAULTCURSOR=MyCursor.cur。
例如JS:
<param name="Iniset" value="DEFAULTCURSOR=MyCursor.cur">
C++介面 | MxDraw::SetDefaultCursor |
void CMxDrawXCtrl::SetUseArrowCursor(VARIANT_BOOL newVal){AFX_MANAGE_STATE(AfxGetStaticModuleState());m_UseArrowCursor = (newVal != VARIANT_FALSE);if(m_UseArrowCursor){MxDraw::SetDefaultCursor(::LoadCursor(NULL, IDC_ARROW),m_hDrawOcx);}else{MxDraw::SetDefaultCursor(NULL,m_hDrawOcx);}SetModifiedFlag();}
游標位置
得到位置,文件座標,是個MxDrawPoint物件。
COM介面 | _DMxDrawX::GetInputCursorPos |
設定游標位置,文件座標。
COM介面 | _DMxDrawX::SetInputCursorPos |
顯示或隱藏介面:
C++ | MxDraw::SetDrawCoord |
COM介面 | DMxDrawX::IsDrawCoord |
例如隱藏座標圖示,JS:
<param name="IsDrawCoord" value="0">
瀏覽模式下,控制元件會自動載入控制元件程式目錄下的ViewRes目錄的工具條檔案,並禁用夾點編輯和選擇功能。 參考例子: samples\ie\IedemoBrowse.htm。
啟用介面:
C++ | MxDraw::SetBrowner |
COM介面 | DMxDrawX::BrowseMode |
例如隱藏座標圖示,JS:
<param name="IsBrowner" value="1">
例如C++ COM:
void CTestVc2005Dlg::OnBnClickedBrownerButton() { // TODO: 在此新增控制元件通知處理程式程式碼 static BOOL isBrowner = TRUE; m_ocx.SetBrowseMode(isBrowner); m_ocx.SetShowMenuBar(!isBrowner); m_ocx.SetShowCommandWindow(!isBrowner); isBrowner = !isBrowner; }
控制元件具有滑鼠停在一個物件上,然後自動彈出一個提示資訊視窗的功能,效果如下:
參考例子: samples\ie\iedemoTest.htm,點選例子上邊的設定超連線按鈕,然後把滑鼠停在物件上兩秒,就能看到效果了。自動提示事件,使用者響應該事件,返回需要顯示的字串,返回的字串支援Html格式化。
COM介面 | _DMxDrawXEvents::InputPointToolTipEvent |
設定提示時間 | _DMxDrawX::SetToolTipInitialTime |
設定ToolTip自動提示隱藏時間 | _DMxDrawX::SetToolTipPopTime |
JS例子說明:
1. 增加InputPointToolTipEvent事件響應函式:
document.getElementById("MxDrawXCtrl").ImpInputPointToolTipFun = DoInputPointToolTipFun;
2. 在事件中返回需要提示的字串:
function DoInputPointToolTipFun(ent) {var sHyperlinks = ent.Hyperlinks;if(sHyperlinks.length != 0){var sClassName = ent.ObjectName;var tip = "<b><ct=0x0000FF><al_c>"+sClassName+"</b><br><ct=0x00AA00><hr=100%></ct><br><a=\"link\">" + sHyperlinks + "</a>";mxOcx.SetEventRetString(tip);}ent = null;CollectGarbage();}
C++介面 | McEdInputPointMonitor::MonitorInputPointToolTip |
設定提示時間 | MxDraw::SetDynToolTipInitialTime |
設定ToolTip自動提示隱藏時間 | MxDraw::SetDynToolTipPopTime |
McEdInputPointMonitor::MonitorInputPointToolTip方法
介面:
virtual Mcad::ErrorStatus MonitorInputPointToolTip(IN const McDbObjectIdArray& pickedEntities, IN const McGePoint3d& pickedPoint, IN CString& sNewToolTipString);
引數:
引數 | 說明 |
---|---|
IN const McDbObjectIdArray& pickedEntities | 當前游標下面的實體 |
IN const McGePoint3d& pickedPoint | 游標位置 |
IN CString& sNewToolTipString | 返回提示資訊字串 |
參考例子:MxDraw5.2\samples\Edit\Edit.sln中 InputPointMonitor.cpp檔案。程式碼如下:
Mcad::ErrorStatus CInputPointMonitor::MonitorInputPointToolTip(IN const McDbObjectIdArray& pickedEntities,IN const McGePoint3d& pickedPoint,IN CString& sNewToolTipString){if(!pickedEntities.isEmpty()){AcDbObjectId entId = pickedEntities[0];AcDbObjectPointer<AcDbEntity> spEnt(entId,AcDb::kForRead);if(spEnt.openStatus() == Acad::eOk){CString sClassName = spEnt->isA()->name();AcDbHandle handle;spEnt->getAcDbHandle(handle);TCHAR szHandle[256];handle.getIntoAsciiBuffer(szHandle);CString sLayerName;{AcDbObjectPointer<AcDbLayerTableRecord> spLayerTableRec(spEnt->layerId(),AcDb::kForRead);if(spLayerTableRec.openStatus() == Acad::eOk){LPCTSTR pszLayerName = NULL;spLayerTableRec->getName(pszLayerName);sLayerName = pszLayerName;}}sNewToolTipString.Format(_T("類名:%s,層名:%s,名柄:%s"),sClassName,sLayerName,szHandle);}}return Mcad::eOk;}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29511035/viewspace-2775451/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 夢想CAD控制元件 2021.09.05更新控制元件
- CAD夢想畫圖操作介面
- 夢想Android版CAD控制元件2021.09.04更新Android控制元件
- 夢想CAD控制元件(網頁CAD,web瀏覽cad) 2022.09.20更新控制元件網頁Web
- 夢想CAD控制元件網頁開發--圖形資料庫(文字樣式)控制元件網頁資料庫
- CAD夢想畫圖(線上CAD)如何上傳檔案
- CAD夢想畫圖產品簡介
- CAD夢想畫圖中的“延伸命令”
- CAD夢想畫圖中的“分解命令”
- CAD夢想畫圖中的“熱鍵快捷命令”
- 在CAD夢想畫圖中如何使用PLAN命令
- CAD夢想畫圖中的“線型設定”
- CAD夢想畫圖如何自定義座標系統
- CAD夢想畫圖如何進行重畫、繪圖模式繪圖模式
- CAD夢想畫圖的瀏覽模式與繪圖模式模式繪圖
- CAD夢想畫圖中的“繪圖工具——多線段”繪圖
- CAD控制元件CAD .NET問題解答集錦(連載一)控制元件
- 小瓶子大夢想 物理闖關遊戲《瓶子先生和他的夢想》發售遊戲
- 關於vb自定義控制元件中引用mediaplayer控制元件出錯的解決方案控制元件
- 如何修改CAD夢想畫圖繪圖視窗的背景顏色繪圖
- 關於AS(Android studio)新增recyclerview控制元件後的進一步仿微信介面AndroidView控制元件
- 關於tapestry的upload控制元件的問題?控制元件
- WPF控制元件介面自適應控制元件
- Cesium介面學習以及隱藏介面控制元件控制元件
- CAD夢想畫圖的命令輸入、結束、重複與撤銷
- 關於ListView控制元件使用時的一些心得View控制元件
- 用優秀.NET介面控制元件 打造新潮介面效果控制元件
- 夢想cad在網頁開發時如何獲取圖層操作的資訊網頁
- Android右滑關閉Activity介面功能-自定義控制元件實現Android控制元件
- 【Avalonia】【跨平臺】關於控制元件陰影簡單用法控制元件
- 請教關於JFileChooser控制元件的國際化問題控制元件
- Android 介面(1):UI 開發控制元件AndroidUI控制元件
- 你有夢想嗎?華為雲學院助你實現夢想
- 關於Spring生命週期控制的介面:SmartLifecycleSpring
- cocos2dx & cocostudio 控制元件構想控制元件
- WPF 控制元件類派生關係控制元件
- 關於MSCOMM控制元件的一些說明(轉貼)控制元件
- 圖形使用者介面2:常用控制元件控制元件