ユーザーは、右のポップアップメニューに必要な、あなたは右のボタンを押した後、マウスイベントに応答する必要がある、ポップアップメニューが操作に分けて、コマンドで非コマンドで実行され、(C#言語リファレンスの例を以下に詳細に説明されている:「サンプル\ CSharpRightKeyMenu \ CSharpRightKeyMenu.sln」 ):
1、新しいメニューファイル
新しいテキストファイル(このファイルは、コマンドメニューから実行される)は、次のようにmxpoptest.mnuは、読み取ります。
//記述ファイルヘッダのメニューバー。 //「ファイルの種類の文字列」「リソースファイル名」「透明色」「の位置であってもよい:トップ、左、下、右、」 「MxDrawMenuBarFile」「MxDraw.dll」(214 211 206)「トップ」「ポップアップメニュー2」 //メニューの説明 //「コマンド名」「注文」「アイコンインデックスの文字列」「リソース・ファイル名」「」プロンプト文字列をコマンド「コマンドID」、「IDタイプ」」コマンド実行機能「の前にあるかどうかを 」POPMENUS「」オブジェクト(&O)「 」OK「」「」「」「」OK「」「」ID_OK_BUTTONは「 //」キャンセル「」「」「」「」「」「」キャンセルID_CANCLE_BUTTON「 」キーワード「」「」「」「」キーワード「」「」ID_KEYWORD_BUTTON」 "セパレータ" "テスト(&E)" "テスト" "" "" "编辑文字" "55" "" "Y" "POPMENUE"
ここでのキーワードは、コマンドラインプロンプトのコマンドです。
新しいテキストファイル:次のようにMxPopMenuEnt.mnuは、読み込み(このファイルには、メニューをクリックして実行するための非実体のコマンドです):
//記述ファイルヘッダのメニューバー。 //「ファイルの種類の文字列」「リソースファイル名」「透明色」「の位置であってもよい:トップ、左、下、右、」 「MxDrawMenuBarFile」「MxDraw.dll」(214 211 206)「トップ」「ポップアップメニュー2」 //メニューの説明 //「コマンド名」「注文」「アイコンインデックスの文字列」「リソース・ファイル名」「」プロンプト文字列をコマンド「コマンドID」、「IDタイプ」 」 POPMENUS ""オブジェクト(&O) " "を削除(&E) "" _erase "" IDB_ERASE_BITMAP " "複製(&Y) "" _copy "" IDB_COPY_BITMAP " "移動(&V) "" _move "" IDB_MOVE_BITMAP " "回転(&R) " "_rotation" "IDB_ROTATION_BITMAP" "ズーム(&L)" "_Scale " "IDB_SCALE_BITMAP" "セパレータ" "对象特性(&O)" "Mx_ShowProperties" "IDB_PROPERTY_BITMAP" "PropertyEditor.mrx" "セパレータ" "用户自加命令(&U)" "" "" "" "" "99" " POPMENUE」
新しいテキストファイル:次のようにMxPopMenu.mnuは、(このファイルは非実体のコマンドなし右クリックメニューで実行される)読み取ります。
//記述ファイルヘッダのメニューバー。 //「ファイルの種類の文字列」「リソースファイル名」「透明色」「の位置であってもよい:トップ、左、下、右、」 「MxDrawMenuBarFile」「MxDraw.dll」(214 211 206)「トップ」「ポップアップメニュー1」 //メニューの説明 //「コマンド名」「注文」「アイコンインデックスの文字列」「リソース・ファイル名」「」プロンプト文字列をコマンド「コマンドID」、「IDタイプ」 」 POPMENUS ""ポップアップメニュー。1(&V) " "新規(&N) "" Mx_New "" IDB_NEW_BITMAP "" MxEdit.mrx "" "" "" ID_NEW_BUTTOM " "オープン(&O) "" Mx_OpenMxg " " IDB_OPENMXG_BITMAP "" "" " "" "ID_OPEN_BUTTOM" "(R&)再描画" "レ" "IDB_REGEN_BITMAP" "SEPARATOR" "リアルタイムスケーリング(&Z-)" "ZoomR" "IDB_ZOOM_BITMAP" "SEPARATOR" "戻る" "Zoomp" "ID_PRVVIEW_BITMAP" "ズームウィンドウ(&W)" "WindowZoom" "IDB_ZOOMW_BITMAP" "範囲のスケーリング(&E)" " ZoomE "" IDB_ZOOME_BITMAP " "ビューポート変換(&P) "" P " " IDB_PAN_BITMAP」IDB_ZOOME_BITMAP " "ビューポート変換(&P) "" P " " IDB_PAN_BITMAP」IDB_ZOOME_BITMAP " "ビューポート変換(&P) "" P " " IDB_PAN_BITMAP」 "视区旋转(&L)" "Mx_Plan" "IDB_PLAN_BITMAP" "MxEdit.mrx" "セパレータ" "セパレータ" "セパレータ" "鸟瞰(&D)" "DsViewer" "IDB_DSVIEWER_BITMAP" "放大镜(&M)"、 "拡大鏡" "IDB_MAGNIFYINGCLASS_BITMAP" "セパレータ" 「视区背景色(&C)」 "_ViewColor" "IDB_VIEWCOLOR_BITMAP" "线重(&S)" "_ShowLineWeight" "IDB_LINEWEIGHT_BITMAP" "绘图模式(&A)" "_DrawModle" "IDB_DRAWMODLE_BITMAP" "全屏显示(&F)" "MxFullScreen" "IDB_FULLSCREEN_BITMAP" "SEPARATOR" "用户坐标系(&U)" "Mx_Ucs" "IDB_UCS_BITMAP" "MxEdit.mrx" "POPMENUE」
次のように最初の行は、各列のファイルメニューファイルヘッダです。
ファイルの種類の文字列 | リソース・ファイル名(DLLからロードの後ろにデフォルトのメニューアイコン) | 透明色のアイコン | 場所 | メニュー名 |
"MxDrawMenuBarFile" | "MxDraw.dll" | (214 211 206) | "上" | 「ポップアップメニュー」 |
「//」ファイルにコメントしています
各行後のファイルは、メニュー項目を表し
「POPMENUS」「オブジェクト(&O)は、」ポップアップメニューの始まりを表し、
「POPMENUEは、」ポップアップメニューの終了を表し、
「セパレータは、」ポップアップメニューの分割ラインを表し、
次のように各列の内容の背後にあります。
コマンド名 | コマンドの実行]をクリックします | アイコンインデックス文字列 | リソース・ファイル名 | コマンドプロンプト文字列 | 「コマンドID」 | タイプID(内部コントロールが現在使用され、一般的に空です) |
"新(&N)" | Mx_New | "IDB_NEW_BITMAP" | 「」 | 「」 | 「」 | 「」 |
コマンド名:
新(&N)。
コマンドをクリックします。
C ++はacedRegCmds-> addCommand登録コマンドを使用しています。
他の言語はDMxDrawX :: RegistUserCustomCommand登録コマンドを使用します。
アイコンインデックスの文字列:
IDB_NEW_BITMAP。
リソースファイル名:
1.、のようなコントロールのバージョン番号除去する必要の名前の空のデフォルトのリソースファイル名を取る:MxDraw.dll書かMxDraw52.dllを、コントロールが状況に応じて、このバージョンに追加されます。
2.リソースファイルのローカルの場合:mytoolbar.bmp取るか、ツールボタンアイコン:当初、地元の表現は、BMPファイルは、次のような、あるローカル:mytoolbar.bmp
たとえば、次のメニューアイコン、ローカルBMPファイルから:
"自定义新建(&N)" "Mx_New" "IDB_NEW_BITMAP" "ローカル:mytoolbar.bmp"
3.リソースファイルの場合ウェブ:ツールボタンのアイコンをmytoolbar.bmp取るか::ウェブ:最初は、のような、ネットワーク・サーバ上のBMPファイルを表しmytoolbar.bmpを
たとえば、次のように同じディレクトリ・サーバーでは、サーバー、BMP、BMPファイルやメニューファイルからファイルをロードするためのメニューアイコン:
"自定义新建(&N)" "Mx_New" "IDB_NEW_BITMAP" "ウェブ:mytoolbar.bmp"
文字列コマンドプロンプト:
これは、空です。
コマンドID:
ImplementCommandEvent:、あなたはCADの実装でイベントに応じてメニューをクリックし、コントロールのイベントを指令することができます空でない場合は、コマンドイベントID指定された応答は、メニューをクリックしてください。
IDの種類:
CAD内部統制の現在の使用、通常は空。
2、マウスの右応答イベント、ポップアップメニュー
機能の主な用途:
_DMxDrawX :: TrackPopupMenu
指定された位置にポップアップメニュー。詳細は以下のとおりです。
パラメータ | 説明 |
---|---|
DOUBLEのdX |
位置X値ポップアップメニューには、ドキュメントの座標であります |
DOUBLE量dY |
位置Yの値がポップアップメニューには、ドキュメントの座標であります |
sMenuFile |
メニュー定義ファイル、サポートネットワークパスは、httpで始まります |
ボイドaxMxDrawX1_MouseEventプライベート(オブジェクト送信者、AxMxDrawXLib._DMxDrawXEvents_MouseEventEvent E) { (e.lType == 3)IF { //右ボタン 文字列SCMD = ""; IF(axMxDrawX1.IsRuningCommand(REF SCMD)) { //コマンド実行していない 文字列smenu = axMxDrawX1.GetOcxAppPath()+ "\\ mxpoptest.mnuを"; axMxDrawX1.TrackPopupMenu(e.dX、e.dY、smenu); // 1を設定し、マウスイベント、もはや受け継が。 axMxDrawX1 .SetEventRet(1); } そう { //非命令下运行 MxDrawXLib.MxDrawResbufフィルタ=新しいMxDrawXLib.MxDrawResbuf(); MxDrawXLib.MxDrawEntity ENT =(MxDrawXLib.MxDrawEntity)axMxDrawX1.FindEntAtPoint(e.dX、e.dY、フィルタ)。 文字列sPopMenu; (もし!ENT = NULL) { axMxDrawX1.ClearCurrentSelect(); axMxDrawX1.AddCurrentSelect(ent.ObjectID、真、真)。 sPopMenu = axMxDrawX1.GetOcxAppPath()+ "\\ MxPopMenuEnt.mnu"。 } 他 { sPopMenu = axMxDrawX1.GetOcxAppPath()+ "\\ MxPopMenu.mnu"。 } axMxDrawX1.TrackPopupMenu(e.dX、e.dY、sPopMenu)は、 1セット、マウスイベントは、もはやダウン渡されない//。 axMxDrawX1.SetEventRet(1); } } }
次のように3、インシデント応答コマンド、
無効axMxDrawX1_ImplementCommandEventプライベート(オブジェクト送信者、AxMxDrawXLib._DMxDrawXEvents_ImplementCommandEventEvent E) { IF(e.iCommandId == 99) { MessageBox.Show( "ユーザ定義コマンド..."); } }