Hello world!

これまでに BeckyPlugin ライブラリを使ってプラグインを実際に作成するための準備について説明しました。

新しくプラグインを作るときには、これまでの内容を必ず実行してから開発に取り掛かるようにしてください。

メッセージボックスを表示させる

では、Becky! の「ツール」-「プラグインの設定」メニューで「Hello, Sample Plugin!」をメッセージ表示させる実装をやってみます。

「空のプラグイン作成」で作られたプロジェクトの SampleLogic クラスにSPluginLogicクラスの仮想関数 OnPlugInSetup をオーバーライドして実装します。

SampleLogic.h の変更点は1行。仮想関数のオーバーライドだけです。

    
#pragma once
#include <PluginLogic.h>

class SampleLogic :
	public SPluginLogic
{
	virtual int OnPlugInInfo(LPBKPLUGININFO plugininfo);
	virtual int OnPlugInSetup(HWND handle);

public:
	SampleLogic(HMODULE module, CBeckyAPI *beckyApi);
	~SampleLogic();
};
    
    

SampleLogic.cpp では、オーバーライドした OnPluginSetup でメッセージボックスを表示させます。

    
#include "SampleLogic.h"

SampleLogic::SampleLogic(HMODULE module, CBeckyAPI *beckyApi)
	:SPluginLogic(module, beckyApi)
{
}


SampleLogic::~SampleLogic()
{
}

int SampleLogic::OnPlugInInfo(LPBKPLUGININFO plugininfo)
{
	strcpy_s(plugininfo->szPlugInName, sizeof(plugininfo->szPlugInName),	"プラグイン名");
	strcpy_s(plugininfo->szVendor, sizeof(plugininfo->szVendor),			"ベンダー名");
	strcpy_s(plugininfo->szVersion, sizeof(plugininfo->szVersion),			"バージョン番号");
	strcpy_s(plugininfo->szDescription, sizeof(plugininfo->szDescription),	"説明文");
	return 0;
}

int SampleLogic::OnPlugInSetup(HWND handle)
{
	MessageBox(handle, "Hello, Sample plugin!", "SamplePlugin", MB_OK);
	return 1;
}
    
    

ではビルドして先ほどと同じように Plugins フォルダにコピーして Becky! を再起動してみましょう。
おや、動きません (笑 )
さきほど、SamplePlugin の許可で「いいえ」を選択したため、プラグインが無効になってしまっています。
Becky!メニューの「ツール」-「全般的な設定」-「高度」-「プラグイン」でSamplePluginを有効にしてから Becky! を再起動します。

再度起動すると「SamplePlugin」の確認ダイアログが表示されました。「OK」を選んでから Becky! の「ツール」-「プラグインの設定」メニューを開くと・・・

「プラグイン名」のメニューが表示されました。
(この「プラグイン名」というのは、SamplePlugin.cpp の OnPlugInInfo で設定された szPlugInName メンバーの値ですね。
ではメニューを選択してみましょう。

めでたく表示されました。

このように、Becky!プラグインを開発していくわけですが、そのトリガー(処理開始のきっかけ)となる Becky API のコールバック関数を SPluginLogic クラスからオーバーライドすることで、プラグインの開発を進めていくことになります。

コールバックの仮想関数

BeckyPlugin のドキュメントで SPluginLogic クラスを見ると、コールバック関数の一覧を見ることができます。
これらは、Becky Plugin SDK の BKC_OnXxxx関数のラッパー関数になっています。