mqsdx  310.0.1
MQPluginSDK Extention Library / mqsdkをC++またはCLI(.Net)拡張するサポートライブラリ
 全て クラス 関数 変数 型定義 プロパティ グループ ページ
クラス MQCLI::Plugins::CommandPlugin

CommandPluginを作成する時に継承するマネージドベースクラス [詳細]

MQCLI::Plugins::CommandPluginに対する継承グラフ

Public メソッド

 CommandPlugin (const char *productName, const char *pluginFullName, const char *displayName)
 コンストラクタ(プラグインIDを自動生成して初期化) [詳細]
 
 CommandPlugin (const char *productName, const char *pluginFullName, const char *displayName, const DWORD idProduct, const DWORD idPlugin)
 コンストラクタ(任意のプラグインIDを指定して初期化) [詳細]
 
- Public メソッド inherited from MQCLI::Plugins::StationPluginTemplate< CommandPluginsInterfacedBase, CommandPluginsUnmanaged >
 StationPluginTemplate (const char *productName, const char *pluginFullName, const char *displayName)
 
 StationPluginTemplate (const char *productName, const char *pluginFullName, const char *displayName, const DWORD idProduct, const DWORD idPlugin)
 
- Public メソッド inherited from MQCLI::Plugins::CommandPluginsInterfacedBase
virtual BOOL OnKeyDown (MQDocument doc, MQScene scene, int key, MQCommandPlugin::MOUSE_BUTTON_STATE &state)
 
virtual BOOL OnKeyUp (MQDocument doc, MQScene scene, int key, MQCommandPlugin::MOUSE_BUTTON_STATE &state)
 
virtual BOOL OnLeftButtonDown (MQDocument doc, MQScene scene, MQCommandPlugin::MOUSE_BUTTON_STATE &state)
 
virtual BOOL OnLeftButtonMove (MQDocument doc, MQScene scene, MQCommandPlugin::MOUSE_BUTTON_STATE &state)
 
virtual BOOL OnLeftButtonUp (MQDocument doc, MQScene scene, MQCommandPlugin::MOUSE_BUTTON_STATE &state)
 
virtual BOOL OnMiddleButtonDown (MQDocument doc, MQScene scene, MQCommandPlugin::MOUSE_BUTTON_STATE &state)
 
virtual BOOL OnMiddleButtonMove (MQDocument doc, MQScene scene, MQCommandPlugin::MOUSE_BUTTON_STATE &state)
 
virtual BOOL OnMiddleButtonUp (MQDocument doc, MQScene scene, MQCommandPlugin::MOUSE_BUTTON_STATE &state)
 
virtual BOOL OnMouseMove (MQDocument doc, MQScene scene, MQCommandPlugin::MOUSE_BUTTON_STATE &state)
 
virtual BOOL OnMouseWheel (MQDocument doc, MQScene scene, MQCommandPlugin::MOUSE_BUTTON_STATE &state)
 
virtual BOOL OnRightButtonDown (MQDocument doc, MQScene scene, MQCommandPlugin::MOUSE_BUTTON_STATE &state)
 
virtual BOOL OnRightButtonMove (MQDocument doc, MQScene scene, MQCommandPlugin::MOUSE_BUTTON_STATE &state)
 
virtual BOOL OnRightButtonUp (MQDocument doc, MQScene scene, MQCommandPlugin::MOUSE_BUTTON_STATE &state)
 
- Public メソッド inherited from MQCLI::Plugins::StationPluginsInterfacedBase
virtual BOOL Activate (MQDocument doc, BOOL flag)
 
void BeginCallback (void *option)
 
const char * EnumString ()
 
virtual bool ExecuteCallback (MQDocument doc, void *option)
 
virtual void Exit ()
 
void GetPlugInID (DWORD *Product, DWORD *ID)
 
const char * GetPlugInName ()
 
int GetPlugInType ()
 
virtual BOOL Initialize ()
 
virtual BOOL IsActivated (MQDocument doc)
 
virtual void OnDraw (MQDocument doc, MQScene scene, int Width, int Height)
 
virtual void OnEndDocument (MQDocument doc)
 
virtual void OnMaterialModified (MQDocument doc)
 
virtual void OnMinimize (MQDocument doc, BOOL flag)
 
virtual void OnNewDocument (MQDocument doc, const char *filename, MQStationPlugin::NEW_DOCUMENT_PARAM &param)
 
virtual void OnObjectModified (MQDocument doc)
 
virtual void OnObjectSelected (MQDocument doc)
 
virtual int OnReceiveUserMessage (MQDocument doc, DWORD src_product, DWORD src_id, const char *description, void *message)
 
virtual BOOL OnRedo (MQDocument doc, int redo_state)
 
virtual void OnSaveDocument (MQDocument doc, const char *filename, MQStationPlugin::SAVE_DOCUMENT_PARAM &param)
 
virtual BOOL OnUndo (MQDocument doc, int undo_state)
 
virtual void OnUpdateMaterialList (MQDocument doc)
 
virtual void OnUpdateObjectList (MQDocument doc)
 
virtual void OnUpdateScene (MQDocument doc, MQScene scene)
 
virtual void OnUpdateUndo (MQDocument doc, int undo_state, int undo_size)
 
int SendUserMessage (MQDocument doc, DWORD target_product, DWORD target_id, const char *description, void *param)
 
void WindowClose ()
 

Protected メソッド

void GetEditOption (MQCommandPlugin::EDIT_OPTION &option)
 
HCURSOR GetResourceCursor (MQCommandPlugin::MQCURSOR_TYPE cursor_type)
 
MQPoint GetSnappedPos (MQScene scene, const MQPoint &p, MQCommandPlugin::SNAP_GRID_TYPE type)
 
BOOL HitTest (MQScene scene, POINT p, MQCommandPlugin::HIT_TEST_PARAM &param)
 
void RedrawAllScene ()
 
void RedrawScene (MQScene scene)
 
void SetMouseCursor (HCURSOR cursor)
 
void SetStatusString (const char *str)
 
void UpdateUndo ()
 
- Protected メソッド inherited from MQCLI::Plugins::StationPluginTemplate< CommandPluginsInterfacedBase, CommandPluginsUnmanaged >
MQMaterial CreateDrawingMaterial (MQDocument doc, int &index, BOOL instant)
 
MQMaterial CreateDrawingMaterial (MQDocument doc, int &index)
 
MQObject CreateDrawingObject (MQDocument doc, DRAW_OBJECT_VIISIBILITY visibility, BOOL instant)
 
MQObject CreateDrawingObject (MQDocument doc, DRAW_OBJECT_VIISIBILITY visibility)
 
void DeleteDrawingMaterial (MQDocument doc, MQMaterial mat)
 
void DeleteDrawingObject (MQDocument doc, MQObject obj)
 
int GetCurrentUndoState (MQDocument doc)
 
void GetSceneOption (MQScene scene, SCENE_OPTION &option)
 

Additional Inherited Members

- Protected 型 inherited from MQCLI::Plugins::StationPluginTemplate< CommandPluginsInterfacedBase, CommandPluginsUnmanaged >
typedef
PluginDefault::DRAW_OBJECT_VIISIBILITY 
DRAW_OBJECT_VIISIBILITY
 
typedef PluginDefault
< typename
CommandPluginsUnmanaged::PluginType > 
PluginDefault
 
typedef PluginDefault::SCENE_OPTION SCENE_OPTION
 
- プロパティ inherited from MQCLI::Plugins::StationPluginTemplate< CommandPluginsInterfacedBase, CommandPluginsUnmanaged >
MQBasePlugin * basePlugin [get]
 
CommandPluginsUnmanaged * pluginBody [get]
 
MQ0x::SettingProxy::Handle Setting [get]
 Settingハンドルの取得 [詳細]
 
MQStationPlugin * stationPlugin [get]
 

説明

CommandPluginを作成する時に継承するマネージドベースクラス

MQCLI::CommandPluginはMQCommandPluginのラッパークラスです。MQCommandPlugin同様に、1.継承する/2.カスタム処理をオーバーライドする、という手順でプラグインを作る基底クラスです。 ただしもうひとつ「3.最初に一度だけ MQCLI::Initialize()にインスタンスを生成して渡す」という処理を記述するようにしてください。

#include "mqsdx/MQCLI.hpp"
public ref class CustomPlugin : MQCLI::CommandPlugin {
public:
CustomPlugin() : CommandPlugin( "tiritomato", "Sample Copyright(C) 2013, tiritomato.", "SampleButton" ) {}
virtual BOOL Activate(MQDocument doc, BOOL flag) override {
if ( flag == TRUE ) ::MessageBox( MQ_GetWindowHandle(), "Activate!", NULL, 0 );
return flag;
}
};
static bool initialResult = MQCLI::Initialize( gcnew CustomPlugin() ); // Initialize!

MQCLIライブラリではこの手順だけでプラグインを作る事が可能です(というよりこれ以外の手順では作れません)。

MQStationPluginとの相違点
1.MQSettingに代わりSettingProxyを使用します
MQCLI::StationPlugin::Settingプロパティでハンドルを取得してMQ0x::SettingProxyクラスを生成します。

MQ0x::SettingProxyはMQSettingクラスの代行です。コンストラクト時にOpen、デストラクト時にCloseを自動的に実行します。さきほどのActivateメソッド内でSave/Loadするとこんな感じです。

public ref class CustomPlugin : MQCLI::CommandPlugin {
public:
CustomPlugin() : CommandPlugin( "tiritomato", "Sample Copyright(C) 2013, tiritomato.", "SampleButton" ) {}
virtual BOOL Activate(MQDocument doc, BOOL flag) override {
if ( flag == TRUE ) {
SettingProxy setting( MQCLI::StationPlugin::Setting );
setting.Load(...);
setting.Save(...);
setting.Close(); // このClose()はSettingProxyのデストラクタに任せる事も出来ます。
::MessageBox( MQ_GetWindowHandle(), "Activate!", NULL, 0 );
}
return TRUE;
}
};
2.いくつかの抽象メソッドの実装が既に代行されています。
MQCommandPluginで実装しなければいけなかったいくつかの仮想メソッドの仮実装は既に記述してあります。必要な時だけオーバーライドしてください。

なお下記にリストされる基本的な仮想関数はオーバーライドでカスタムすることはできません。これらの返すべき値は、CommandPluginコンストラクタに初期値として設定します。

  • GetPlugInID()
  • GetPlugInName()
  • EnumString()
覚え書き
継承構造
CommandPluginsInterfacedBase/ベースクラス。外部から参照されるvirtualメソッド全般の標準実装。
StationPluginTemplate/protectedメソッドの実装(またStationPluginTemplateをベースにCommandPlugin固有のprotectedメソッドをCommandPluginとしてさらに追加)

コンストラクタとデストラクタ

MQCLI::Plugins::CommandPlugin::CommandPlugin ( const char *  productName,
const char *  pluginFullName,
const char *  displayName 
)
inline

コンストラクタ(プラグインIDを自動生成して初期化)

引数
productName作者名を指定します。設定した値はGetProductName()で取得されます。この文字列のハッシュをProductIDに設定します。
pluginFullNameプラグイン名を設定します。設定した値はGetPlugInName()で取得されます。この文字列のハッシュをPluginIDに設定します。
displayName表示名を設定します。設定した値はEnumString()で取得されます。
覚え書き
ハッシュはMQ0x::CollectionHashCode<DWORD>(const char*)によって計算されます。
MQCLI::Plugins::CommandPlugin::CommandPlugin ( const char *  productName,
const char *  pluginFullName,
const char *  displayName,
const DWORD  idProduct,
const DWORD  idPlugin 
)
inline

コンストラクタ(任意のプラグインIDを指定して初期化)

引数
productName作者名を指定します。設定した値はGetProductName()で取得されます。
pluginFullNameプラグイン名を設定します。設定した値はGetPlugInName()で取得されます。
displayName表示名を設定します。設定した値はEnumString()で取得されます。
idProduct任意のプロダクトIDを指定します。
idPlugin任意のプラグインIDを指定します。