Biz/Designer エクステンション開発ガイド

エクステンション開発ガイド

Version4.1.4

Copyright© 2025 Accenture. All rights reserved.


エクステンションについて

1 エクステンションについて

Biz/Designer XE ver4.1.3以降,、またBiz/Designer Mobileにはエクステンションと呼ばれるDLLプログラムを追加することによって機能拡張が行えるようになりました。

このガイドではエクステンションDLLの開発方法を解説します。またBiz/Designer PC版とBiz/Designer Mobileは特に区別せずBiz/Designerという呼称で統一しています。

1-1 エクステンションの種類

現在サポートされているエクステンションはエディタエクステンションとドキュメント作成エクステンションの2種類となっています。

エディタエクステンション

プロジェクト内の「その他ファイル」カテゴリに所属するファイルを編集する場合、標準ではファイルのタイプに応じてテキストエディタまたはバイナリエディタが起動します。

エディタエクステンションを追加することによって、そのエクステンションに関連付けられた拡張子に応じてエクステンションでの編集が行えます。

またエクステンション毎に追加ツールバーや追加メニューを持つことができ、エクステンションがロードされると自動的にメニューやツールバーが拡張されます。

ドキュメント作成エクステンション

[ツール]メニューの[ドキュメント作成]コマンドから呼び出されるエクステンションです。

CRSファイルからのドキュメント作成を行います。

1-2 エクステンションのインストール

エクステンションはBiz/Designerのインストールフォルダ内のextensionフォルダにインストールします。

Biz/Designerはこのフォルダに格納された拡張子dllを持つファイル全てをエクステンションと見なし起動時にローディングします。エクステンションをローディングするための特別な設定はありません。

何らかの理由でエクステンションのローディングに失敗した場合Biz/Designerはエラーを表示しますが、その場合該当のエクステンションのローディングは無視されますが正常なエクステンションのローディングは継続され起動を行います。

1-3 エクステンション開発の要件

エクステンションはWindowsのDLL(ダイナミックリンクライブラリ)の形式である必要があります。

現在提供している構造体定義やメッセージ定義はC言語のヘッダとして提供されています。そのため開発にあたって以下のスキルが必要になります。

1. C言語またはC++言語によるプログラミング

2. Windows DLLプログラミング

3. DLLのリソースの作成

4. Win32APIによるウィンドウプログラミング(エディタエクステンション開発時)

DLL関数のエクスポート方式をC言語と合わせれば他の言語での開発も可能ですが現在他の言語の定義ファイルは提供しておりません。


エクステンションの開発

2 エクステンションの開発

この章では実際のエクステンション開発について解説します。

2-1 エクステンション開発の準備

extension_sdk.zipには開発用の構造体定数や定数を定義したヘッダ、サポート関数、オンラインマニュアル、およびサンプルプログラムが格納されています。

api.h | エクステンション定義ヘッダ
DropTarget.h | エディタエクステンションのドラッグ＆ドロップサポートクラス(ヘッダ)
DropTarget.cpp | エディタエクステンションのドラッグ＆ドロップサポートクラス(ヘッダ)
CursorViewer | カーソルビューワエクステンションサンプル(Visual C++プロジェクト)
HTMLDoc | HTMLドキュメント作成エクステンションサンプル(Visual C++プロジェクト)
doc - extension.chm | 本ガイド
dll | コンパイル済みサンプルプログラム

この中で開発に必須なファイルはapi.hのみです。api.hを適宜インクルードしてご利用ください。

2-2 エクステンション共通エントリ

エクステンションに共通に必要な関数としてGetExtensionInfo関数をエクスポートする必要があります。

この関数としてBDEX_INFO構造体が渡されますので適切な値を設定してください。

extern "C" __declspec(dllexport) void GetExtensionInfo(BDEX_INFO* info)
{
    info->type = BDEXT_FILEEDITOR;
    strcpy(info->productID, "SimpleEditor Extension v1.0");
    info->needLicense = false;
    strcpy(info->requiredBDVersion, "04.01.03.00");
}

2-3 エクステンションのライセンス管理

エクステンションはBiz/Designerのライセンス管理機構を利用したライセンス管理が可能になっており、ライセンスの有無における利用制限などを設けることが可能です。

ライセンス管理を有効にする場合GetExtensionInfo関数にてBDEX_INFO構造体のneedLicenseメンバにtrueを設定します。

extern "C" __declspec(dllexport) void GetExtensionInfo(BDEX_INFO* info)
{
    info->type = BDEXT_DOCGENERATOR;
    strcpy(info->productID, "HTMLDoc Extension v1.1");
    info->needLicense = true;    /* ライセンス処理有効 */
    strcpy(info->requiredBDVersion, "04.01.04.00");
}

needLicenseがtrueの場合Biz/Designerはエクステンションを読み込み時にproductIDに基づき該当するライセンスを探します。有効なライセンスが見つかった場合通常通りエクステンションが読み込まれます。

有効なライセンスが見つからない場合、OnNotLicensed関数がエクスポートされている場合この関数を呼び出しエクステンションに読み込みを行うかどうかの判断を仰ぎます。

extern "C" __declspec(dllexport) bool OnNotLicensed(bool evaluation)
{
    // Biz/Designerが評価期間中は使用可
    if (evaluation) return true;

    // 評価期間以降使用不可
    return false;
}

なお、ライセンスファイルを生成するためのツールはエクステンションSDKには付属しておりません。

ライセンスファイルの生成をご希望の場合アクシスソフト株式会社までお問い合わせください。


エディタエクステンションの開発

2-4 エディタエクステンションの開発

ウィンドウ構成

エディタエクステンションではMDI子ウィンドウであるフレームウィンドウの子として管理ウィンドウが作られ、さらにその子ウィンドウとしてエクステンションで定義したウィンドウが生成されます。

エクステンションではこのエクステンションウィンドウ部分のウィンドウクラス定義およびウィンドウプロシージャを作成します。

エクステンションウィンドウは通常のWindowsウィンドウプログラミングと同様の手法で作成します。

ウィンドウクラスの登録

エディタエクステンションがBiz/DesignerにロードされるとまずGetExtensionInfo関数が呼び出され、その後GetEditorInfo関数が呼び出されます。

その時にエクステンションウィンドウのウィンドウクラスを返す必要がありますのでそれまでにウィンドウクラスを登録しておく必要があります。

通常DLLがロードされDLLMain関数が呼び出されたタイミングに行います。

extern "C"
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
    if (fdwReason == DLL_PROCESS_ATTACH) {
        WNDCLASSEX wndcls;
        memset(&wndcls, 0, sizeof(WNDCLASSEX));

        wndcls.cbSize = sizeof(WNDCLASSEX);
        wndcls.style = CS_DBLCLKS | CS_GLOBALCLASS;
        wndcls.lpfnWndProc = WndProc;
        wndcls.cbClsExtra = 0;
        wndcls.cbWndExtra = 0;
        wndcls.hInstance = hinstDLL;
        wndcls.hIcon = NULL;
        wndcls.hCursor = LoadCursor(NULL, IDC_ARROW);
        wndcls.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
        wndcls.lpszMenuName = NULL;
        wndcls.lpszClassName = "SimpleEditor";
        wndcls.hIconSm = NULL;

        if (RegisterClassEx(&wndcls) == 0) {
            return FALSE;
        }
    }
    return TRUE;
}

ウィンドウクラスの登録タイミングは実際はGetEditorInfo関数から戻るまでならいつでも可能ですが、GetEditorInfo関数が呼び出される時点で問題が発生してもエクステンションをアンロードする手段がないためDLLMainで登録を行う方が無難です。

また、WNDCLASS(EX)構造体のstyleメンバには必ずCS_GLOBALCLASSスタイルを指定する必要があります。このスタイルを指定しないとBiz/Designerは異なるスレッドであるDLL内で定義されたウィンドウクラスを参照できず問題が発生します。

GetEditorInfo関数

エディタエクステンションはGetEditorInfo関数をエクスポートしなければなりません。

この関数の引数としてBDEX_EDITOR_INFO構造体が渡されますので適切な値を設定してください。

extern "C" __declspec(dllexport) void GetEditorInfo(BDEX_EDITOR_INFO* info)
{
    info->hResource = NULL;                 // 代替リソースハンドル
    strcpy(info->extList, "txt,ini,log");   // 対応する拡張子
    strcpy(info->wndClass, "SimpleEditor"); // ウィンドウクラス名
    info->titleID = IDR_SIMPLEEDITOR;       // タイトル用文字列リソースID
    info->menuID = IDR_SIMPLEEDITOR;        // メニューリソースID
    info->toolBarID = IDR_SIMPLEEDITOR;     // ツールバーリソースID
    info->iconID = IDR_SIMPLEEDITOR;        // アイコン用ビットマップリソースID
    info->explanationID = IDS_EXPLANATION;  // 説明用文字列リソースID
    info->viewer = false;                   // 編集・保存の可否
}

この中で最低限extList、wndClassメンバは設定しないとエクステンションは動作しません。

拡張子マッピング

Biz/Designerはプロジェクトビューからファイルの編集を行う場合、拡張子を確認します。拡張子からマッピングされたエディタエクステンションの情報を取得しウィンドウを作成します。

拡張子の判定はエクステンションの方が内蔵エディタより優先されます。また複数のエクステンションで同じ拡張子がマッピングされている場合、先に読み込まれたエクステンションが優先されます。

メニュー

エディタエクステンションはBiz/Designerのメインメニューバーの独自の項目を追加させることができます。

GetEditorInfo関数でBDEX_EDITOR_INFOのmenuIDメンバに追加したいメニューリソースIDをセットします。

なお、メニューはメニューリソース中の一番最初のものが採用されます。

メニューの項目の選択可、不可などのハンドリングは「コマンドメッセージの処理」をご参照ください。

ツールバー

エディタエクステンションはBiz/Designerにエクステンション独自のツールバーを追加させることができます。

GetEditorInfo関数でBDEX_EDITOR_INFOのtoolBarIDメンバに追加したいツールバーリソースIDをセットします。

ツールバーの項目の選択可、不可などのハンドリングは「コマンドメッセージの処理」をご参照ください。

Biz/Designerからの通知

Biz/Designerからエクステンションウィンドウへの要求はすべてウィンドウメッセージとして送信されます。

エクステンションウィンドウはウィンドウプロシージャでBiz/Designerからのメッセージを適切に処理する必要があります。

Biz/Designerへの通知

上記とは逆にBiz/Designerに動作を要求するためのメッセージも用意されています。

このメッセージを管理ウィンドウ(通常はエクステンションウィンドウの親ウィンドウ)に送ることによりBiz/Designerに処理を行わせることができます。

ファイルのオープン、保存

プロジェクトビューからファイルの編集を開始するとエクステンションウィンドウに対してオープンしたファイルデータをBDEM_SETDATAメッセージで引き渡します。

渡されたデータはBiz/Designer側で解放されるためエクステンションウィンドウは受け取ったデータを自信で確保したメモリにコピーする必要があります。

ファイルの保存が必要な場合にはBDEM_GETDATAメッセージが送られます。Biz/Designerは受け取りバッファの大きさを知るために一度、実際にデータを取得するためにもう一度メッセージを送ります。

WPARAM、LPARAM両方のパラメータが0の場合は保存するデータの長さを返します。そうでない場合受け取りバッファにデータをコピーしデータを引き渡します。

編集状態の管理

ファイルが保存されたり初期化された場合、アンドゥの開始ポイントをリセットしたり、アンドゥバッファをクリアする必要があります。

このタイミングを通知するためBiz/DesignerはBDEM_SETSAVEPOINTやBDEM_EMPTYUNDOBUFFERを送信します。

エクステンションがアンドゥやリドゥを実装している場合はこのメッセージに応じて処理を行ってください。

またBiz/Designerはテスト実行中などはファイルの変更を禁止しています。

編集対象のファイルがBiz/Browserの実行に関わるファイルの場合、変更があるたびにBDEN_ACCEPTMODIFYを送信し変更可否を確認してください。

テスト実行中であればBiz/Designerはテスト実行を中止するかどうかを問い合わせた後、変更可能かどうかを返します。

またファイルを変更した場合BDEN_FILEMODIFIEDメッセージを送信しBiz/Designerへファイルが変更状態になったことを通知してください。

変更状態を通知するとBiz/Designerはタイトルバーへの状態表示やウィンドウを閉じようとしたときの保存確認などを行います。

コマンドメッセージの処理

Biz/Designerではメニューやツールバーの状態の設定をBDEM_UPDATECMDUI、そしてメニューからコマンドが実行されたことをBDEM_COMMANDでエクステンションに通知します。

このメッセージは他のメッセージと違いBiz/Designer内を巡回していきます。エクステンション側で処理を行わない場合次の候補へルーティングされます。

BDEM_UPDATECMDUIはメニューやツールバーの表示更新が必要が場合メニューに割り当てられたコマンドID毎に送信されます。

エクステンションはコマンドIDに対して選択可能、不可、チェックなどの状態を設定することができます。

BDEM_COMMANDはコマンドIDを引数に送信されます。エクステンションはコマンドIDを見て処理を行います。

印刷

印刷機能を利用するためにはまずコマンドメッセージで「印刷」コマンドID_FILE_PRINT(0xE107)、および「印刷プレビュー」コマンドID_FILE_PRINT_PREVIEW(0xE109)を使用許可にする必要があります。

「印刷」コマンドまたは「印刷プレビュー」コマンドが実行された場合ページ毎にBDEM_PRINT、BDEM_GETLENGTHが送られます。

BDEM_PRINTの引数として渡されるBDEX_PRINT_INFO構造体に描画情報が納められています。

ページの描画をBDEX_PRINT_INFOの描画デバイスコンテキストhDC、および属性デバイスコンテキストhDCTargetに対して行います。

印刷時はhDCとhDCTargetは同じハンドルを指しますのでどちらに対して出力しても結果は同一になります。

しかしプレビュー時はプリンタデバイスへの出力をディスプレイにエミュレーションするためを出力デバイスhDCと属性デバイスhDCTargetが異なります。

hDCに対しては実描画を、hDCTargetに対しては描画属性(色など)を設定するようにプログラミングすることで印刷と印刷プレビューで同等の結果を得ることができます。

描画可能な領域はrectに納められていますのでこの範囲に描画を行ってください。

startIndexはページの開始点となるドキュメントに対する論理的なインデックス値を示します。エクステンション内でインデックス値の整合が取れていればバイト値でも行数でも問題ありません。

ページ出力後BDEM_PRINTの戻り値としてページに出力した分のドキュメントのインデックス値を返します。この値を受けBiz/Designerは次ページのstartIndex値を決定します。

BDEM_GETLENGTHはドキュメントの最終インデックス値を返します。Biz/Designerはこの値とBDEM_PRINTの戻り値を比較しすべてのページを出力したことを検出します。

カスタマイズ印刷

プリンタの設定はアプリケーション全体で一つ管理されています。

場合によりエクステンションの持つファイル形式では別の用紙設定で印刷したい場合があります。この様な場合、印刷時に標準のプリンタ設定を上書して変更させることができます。

印刷開始前にBiz/DesignerからBDEM_LOADPAGESETUPが送信されます。

BDEM_LOADPAGESETUPの引数としてWin32APIのPRINTDLG構造体が渡されます。この構造体にはページ設定などの情報が納められています。

PRINTDLG構造体のhDevModeとhDevNamesに独自に作成したDEVMODE構造体とDEVNAMES構造体を代入します。

Biz/DesignerはBDEM_LOADPAGESETUPに0以外の値を返すとプリンタ設定を行わず印刷を開始します。

PRINTDLG構造体、DEVMODE構造体、およびDEVNAMES構造体とその設定に関してはMicrosoft社のWin32APIの解説をご参照ください。

またページ設定完了後、BDEM_SAVEPAGESETUPを送信します。

これにはページのデバイスコンテキストなどの設定が完了したPRINTDLG構造体が渡されます。この値を利用してエクステンションはメトリック計算などを行うことができます。

ドラッグ＆ドロップ

プロジェクトビューからエクステンションへドラッグ＆ドロップされた場合、WindowsのOLEドラッグ＆ドロップの機構を利用して値が渡されます。

エクステンションはOLEドラッグ＆ドロップの実装を行うことでデータを受け取ることが可能になります。

クリップボードには以下のクリップボードタイプが渡されます

クリップボードタイプ | 内容
CF_TEXT | ファイル名
CF_URL | プロジェクトにマッピングされたURLに基づくURL
CF_FILETYPE | ファイルタイプ(下表)

CF_FILETYPE時のデータは以下の通りです

#defineシンボル | 内容
FILETYPE_PROJECT | プロジェクト
FILETYPE_DIALOG | ダイアログ
FILETYPE_FORM | フォーム
FILETYPE_DOCUMENT | ドキュメント
FILETYPE_CRSFILE | CRSファイル
FILETYPE_ETCFILE | その他ファイル
FILETYPE_PACKAGE | パッケージ
FILETYPE_IMAGE | イメージファイル
FILETYPE_CARFILE | CARファイル
FILETYPE_RESFILE | リソースファイル

OLEドラッグ＆ドロップサポートクラス

SDKに付属しているOLEドラッグ＆ドロップサポートクラスを利用すると簡単にOLEドラッグ＆ドロップを実装できます。

#include "../dropTarget.h"

DropTarget dropTarget;

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg) {
    case WM_CREATE:
    dropTarget.Register(hWnd);    /* D&D対象ウィンドウを登録 */
        return 0;

    case DDM_DRAGOVER:
        {
        UINT cf = RegisterClipboardFormat(CF_URL);
        DDData* data = (DDData*)lParam;
            if (data->IsDataAvailable(cf)) {
                return DROPEFFECT_COPY;
            } else {
                return DROPEFFECT_NONE;
            }
        }

    case DDM_DROP:
        {
            UINT cf = RegisterClipboardFormat(CF_URL);
            DDData* data = (DDData*)lParam;
            if (data->IsDataAvailable(cf)) {
                HGLOBAL hMem = data->GetGlobalData(cf);
                const char* text = (const char*)GlobalLock(hMem);
                string dropURL = text;
                GlobalUnlock(hMem);
                GlobalFree(hMem);
                return DROPEFFECT_COPY;
            } else {
                return DROPEFFECT_NONE;
            }
        }
    }

    return DefWindowProc(hWnd, uMsg, wParam, lParam);
}

1. dropTarget.hをインクルードし、DropTargetのインスタンスを生成します

2. DropTarget.Register()で対象のウィンドウを登録します

3. ウィンドウプロシージャにDDM_DRAGOVERとDDM_DROPのハンドラを作成します

4. ハンドラ内でlParamをDDData*へキャストしてIsDataAvailable関数でデータ型をチェックします

5. 必要ならDDDataからデータを取り出します

6. ハンドラの戻り値としてドラッグ＆ドロップの動作を指定します

詳しくはDropTargetクラス、およびDDDataクラスの解説をご参照ください。

多言語化

Biz/Designerはエクステンションの多言語化を直接はサポートしていません。

エクステンションのリソースを言語毎にDLLモジュールに分離し、エクステンション自身が使用言語を判別し、必要に応じてリソースDLLをローディングすることで擬似的に多言語化を実現することが可能です。

GetEditorInfo関数呼び出し時に渡されるBDEX_EDITOR_INFO構造体のhResourceメンバに言語リソースを持ったDLLのインスタンスをセットすることでBiz/Designerは優先してhResourceのモジュールからリソースを取得します。

hResourceのモジュールに該当のリソースがなかった場合、Biz/DesignerはエクステンションDLL自身のリソースを検索します。

この機構により多言語化が必要なリソースのみ外部モジュールに分けることが可能です。

なお、エクステンションは言語リソースDLLの読み込みと解放の責任を負わなければならないことに注意してください。

Biz/Designerからエクステンションへのその他のメッセージ

今まで解説した以外のメッセージです。

BDEM_GETSELECTINGWORD

Biz/Designerが現在選択中の単語を取得するために呼び出されます。

BDEM_PRETRANSLATEMSG

WindowsメッセージループからTranslateMessage関数によりメッセージが変換されるより前の生のメッセージを送ります。

ユーティリティメッセージ

エクステンションからBiz/Designerへ要求できるその他のメッセージです。

BDEN_FILEOPEN

他のファイルを開き編集状態にします。

BDEN_GETFILEPATH

編集中のファイルの絶対パスを取得します

BDEN_GETPROJECTINFO

編集中のファイルが属しているプロジェクトの情報を取得します

BDEN_POPUPMENU

BDEN_POPUPMENU_RETID

ポップアップメニューを表示させます

BDEN_MAKEIMAGE

指定したCRSファイルに対して画面イメージを作成するよう指示します


ドキュメント作成エクステンションの開発

2-5 ドキュメント作成エクステンションの開発

バージョン4.1.4以降における拡張機能の使用

Biz/Designer4.1.4にてドキュメント作成エクステンションの仕様が拡張されています。

拡張仕様を利用する場合はエクステンション定義ヘッダapi.hをインクルードする前に

#define BDEX_DOCGENVER 0x0200

の定義を追加し、拡張インタフェースを使用することを宣言してください。

またBDEX_INFO構造体のrequiredBDVersionにはV4.1.4以上のBiz/Designerを要求するよう"04.01.04.00"を設定してください。

extern "C" __declspec(dllexport) void GetExtensionInfo(BDEX_INFO* info)
{
    info->type = BDEXT_FILEEDITOR;
    strcpy(info->productID, "SimpleEditor Extension v1.0");
    strcpy(info->requiredBDVersion, "04.01.04.00");
}

スクリプトビューへのコメント入力サポート機能

Biz/Designer4.1.4以降の拡張機能としてドキュメント作成エクステンションと連携してスクリプトビューへのコメント入力をサポートする機能が搭載されました。

スクリプトビューより「ドキュメントコメントの挿入」コマンドを実行するとDocGenCommentHandlerが定義されている場合ハンドラが呼び出されエクステンションに適したコメント行を作成し挿入させることが可能です。

作成するファイルタイプの選択

Biz/Designer4.1.4以降の拡張機能としてBDEX_DOCGEN_INFO構造体のextメンバに複数の拡張子をカンマ区切りで指定できるようになりました。

この拡張子はBiz/Designerからドキュメント生成を実行する場合の選択肢となり選択された拡張子は各ドキュメント作成ハンドラへ渡されます。

GetDocGenInfo関数

ドキュメント作成エクステンションはGetDocGenInfo関数をエクスポートしなければなりません。

この関数の引数としてBDEX_DOCGEN_INFO構造体が渡されますので適切な値を設定してください。

extern "C" __declspec(dllexport) void GetDocGenInfo(BDEX_DOCGEN_INFO* info)
{
    info->hResource = NULL;
    info->nameID = IDR_EXTENSION;
    strcpy(info->ext, "html,doc,xls");
    info->sHandler = DocGenStartHandler;
    info->fHandler = DocGenFileHandler;
    info->eHandler = DocGenEndHandler;
    info->cHandler = DocGenCommentHandler;
}

sHandler、fHandler、eHandler、cHandlerにはそれぞれコールバック関数のポインタを設定します。

詳しくはDocGenStartHandler、DocGenFileHandler、DocGenEndHandler、DocGenCommentHandlerの解説をご参照ください。

この中で最低限nameID、extおよびfHandlerメンバは設定しないとエクステンションは動作しません。

DocGenStartHandler、DocGenEndHandler

ドキュメント作成を実行した場合最初と最後に一度だけ呼び出されます。

先頭ページの出力や最終ページの出力を行います。

Biz/Desinger4.1.4からファイルに対してドキュメント作成を実行した場合もこのハンドラが呼び出されるよう変更されました。

DocGenFileHandler

DocGenFileHandlerはドキュメント作成のメインルーチンです。

ドキュメントファイルを作成し、outPathへ出力します。

fileTypeでCRSファイルのタイプを判別して処理を分けることも可能です。

imagePathにあるイメージデータを利用しドキュメントに画面イメージを含ませることも可能です。

DocGenCommentHandler

スクリプトビューより「ドキュメントコメントの挿入」コマンドを実行するとこのハンドラが呼び出されます。

CRS解析XMLデータ

DocGenFileHandlerの引数dataとして対象となるCRSファイルの構造を示すXMLデータが渡されます。

このXMLを読むことでCRSのオブジェクト情報を得ることができます。

XMLのフォーマットについて解説します。

<?xml version="1.0" encoding="Shift_JIS" ?>

<crs>
 <import name="global.crs">import “global.crs”</import>;
 <object name="Form1" class="FormEx" dataclass="" bassclass=”Form”>
 Form Form1 {
  <property name="Width" expr="false" type="integer" value="400+10" calctype="integer" calcvalue="410">Width = 400+10;</property>
  <property name="Height" expr="false" type="integer" value="300" calctype="integer" calcvalue="300">Height = 300;</property>
  <property name="BgColor" expr="false" type="integer" value="$DGREEN" calctype="integer" calcvalue="9">BgColor = $DGREEN;</property>
  <object name="Button1" class="Button" dataclass="">
  Button Button1 {
   <property name="Width" expr="false" value="323">Width = 323;</property>
   <property name="Height" expr="false" value="52">Height = 52;</property>
   <property name="Title" expr="false" value=""OK"">Title = "OK";</property>
   <function name="OnTouch" param="e">Function OnTouch( e ) { }</function>
  }
  </object>
  <object name="TextBox1" class="TextBox" dataclass="" baseclass="TextBox">
  TextBox TextBox1 {
   <property name="Width" expr="false" type="integer" value="204" calctype="integer" calcvalue="204">Width = 204;</property>
   <property name="Height" expr="false" type="integer" value="29" calctype="integer" calcvalue="29">Height = 29;</property>
   <property name="IMEMode" expr="false" type="integer" value="$DKANA" calctype="integer" calcvalue="128">IMEMode = $DKANA;</property>
   <property name="InputMode" expr="false" type="integer" value="$DKANJI" calctype="integer" calcvalue="512">InputMode = $DKANJI;</property>
  }
  </object>
 }
 </object>
</crs>

トップレベルを<crs>～</crs>タグでくくられたXMLとなります。

実際のCRSのオブジェクト階層がそのまま<object>タグの階層として表現されます。

タグの間には実際に記述されたスクリプトがテキストとして存在します。すべてのタグを取り除けば純粋なCRSファイルになります。

以下タグについて示します

タグ | 属性 | 説明
<crs> |  | トップレベルタグ
<import> より追加されました |  | import文
 | name | importするオブジェクト名、またはURL
<object> |  | オブジェクト定義
 | name | オブジェクト名
 | class | クラス名
 | dataclass | データ型のクラス
 | array | 配列の要素数
 | expr | 初期化代入演算子の種類、”0”：=、”1”：&=、”2”：<<
 | initexpr | 初期化代入される値
 | baseclass | 派生元の内蔵クラス。派生クラスの場合派生元にさかのぼり最初に見つかった内蔵クラスを表します。 Formの派生クラスの場合Formから何回派生しようともbaseclassはFormになります。 より追加されました
<property> |  | オブジェクトで定義されたプロパティ
 | name | プロパティ名
 | expr | 代入演算子の種類、”true”：=、”false”：&=
 | value | プロパティ値。スクリプトに記載されたままの計算前の値
 | type | プロパティの型。void,bool,integer,number,date,string,fixed,referenceのいずれか。 型が判別出来ない場合”?”
 | calcvalue | プロパティの実際の値。value値が計算式や定数の場合その計算後の実際の値を表します。参照式など実際に実行させないと値が確定できない場合は出力されません より追加されました
 | calctype | プロパティ代入前の計算結果の型。属性値はtypeと同じ。calcvalueが出力されないケースでは出力されません より追加されました
<function> |  | ファンクション定義
 | name | ファンクション名
 | param | 引数
<package> |  | パッケージ定義
 | name | パッケージ名
<class> |  | クラス定義
 | name | クラス名
 | extends | 派生元クラス

多言語化

Biz/Designerはエクステンションの多言語化を直接はサポートしていません。

エクステンションのリソースを言語毎にDLLモジュールに分離し、エクステンション自身が使用言語を判別し、必要に応じてリソースDLLをローディングすることで擬似的に多言語化を実現することが可能です。

GetDocGenInfo関数呼び出し時に渡されるBDEX_DOCGEN_INFO構造体のhResourceメンバに言語リソースを持ったDLLのインスタンスをセットすることでBiz/Designerは優先してhResourceのモジュールからリソースを取得します。

hResourceのモジュールに該当のリソースがなかった場合、Biz/DesignerはエクステンションDLL自身のリソースを検索します。

この機構により多言語化が必要なリソースのみ外部モジュールに分けることが可能です。

なお、エクステンションは言語リソースDLLの読み込みと解放の責任を負わなければならないことに注意してください。


リファレンス

3 リファレンス

3-1 エクスポート関数

GetExtensionInfo | エクステンションの基本情報を得るためBiz/Designerから呼び出されます
GetEditorInfo | エディタエクステンションの情報を得るためBiz/Designerから呼び出されます
GetDocGenInfo | ドキュメント作成エクステンションの情報を得るためBiz/Designerから呼び出されます
OnNotLicensed | ライセンス認証を有効にした場合、有効なライセンスが確認できなかった場合に呼び出されます。 より追加されました

3-2 ドキュメント作成エクステンションコールバック関数

DocGenStartHandler | ドキュメント作成開始時に呼び出されます より機能拡張されています
DocGenFileHandler | CRSファイル毎に呼び出されます より機能拡張されています
DocGenEndHandler | ドキュメント作成終了時に呼び出されます より機能拡張されています
DocGenCommentHandler | スクリプトビューから「ドキュメントコメントの挿入」コマンド発行時に呼び出されます より追加されました

3-3 Biz/Designerからエディタエクステンションへの通知メッセージ

BDEM_SETDATA | エクステンションへデータをセットするために呼び出されます
BDEM_GETDATA | エクステンションからデータを得るために呼び出されます
BDEM_GETSELECTINGWORD | 現在選択中の単語を得るために呼び出されます
BDEM_SETSAVEPOINT | 保存ポイントを設定するタイミングで呼び出されます
BDEM_EMPTYUNDOBUFFER | アンドゥポイントをリセットするタイミングで呼び出されます
BDEM_LOADPAGESETUP | 印刷設定前に印刷設定をカスタマイズするために呼び出されます
BDEM_SAVEPAGESETUP | 印刷直前の印刷設定をエクステンションに通知します
BDEM_PRINT | 印刷処理でページ毎に呼び出されます
BDEM_GETLENGTH | 印刷処理でドキュメント長を得るために呼び出されます
BDEM_PRETRANSLATEMSG | WindowsメッセージをWindowsが処理する前に通知します
BDEM_UPDATECMDUI | メニューやツールバーの状態を得るため呼び出されます
BDEM_COMMAND | メニューやツールバーのコマンドが実行された時呼び出されます

3-4 エディタエクステンションからBiz/Designerへの要求メッセージ

BDEN_FILEMODIFIED | 編集中のファイルが変更されたことをBiz/Designer通知します
BDEN_PRINTSTATUS | ステータスバーへ情報を表示させます
BDEN_ACCEPTMODIFY | 変更可能状態かどうかをBiz/Designerに問い合わせます
BDEN_FILEOPEN | Biz/Designerに他のファイルをオープンさせます
BDEN_GETFILEPATH | 編集中のファイルのパスを要求します
BDEN_GETPROJECTINFO | 編集中のファイルが属しているプロジェクトの情報を要求します
BDEN_POPUPMENU | Biz/Designerにポップアップメニューを表示を要求します
BDEN_POPUPMENU_RETID | Biz/Designerにポップアップメニューを表示を要求します。選ばれたコマンドは戻り値として返ります
BDEN_MAKEIMAGE | Biz/Designerに指定ファイルの画面イメージを作成を要求します

3-5 構造体

BDEX_INFO | エクステンションの基本情報を格納する構造体です
BDEX_EDITOR_INFO | エディタエクステンションの情報を格納する構造体です
BDEX_DOCGEN_INFO | ドキュメント作成エクステンションの情報を格納する構造体です
BDEX_PROJECT_INFO | プロジェクト情報を格納する構造体です
BDEX_PRINT_INFO | Biz/Designerから印刷を行う場合BDEM_PRINTメッセージのパラメータとして渡されます
BDEX_PRINT_STATUS | ステータスバーに表示する文字列を格納する構造体です。BDEN_PRINTSTATUSメッセージのパラメータとして使用します。


GetExtensionInfo

Biz/Designerからエクステンションのローディング時に呼び出されます。

エクステンションではこの構造体に必要な情報を設定しBiz/Designerに情報を提供します。

void GetExtensionInfo(
    BDEX_INFO* info
);

パラメータ

info

BDEX_INFO構造体へのポインタです。この構造体へ値を設定します。

戻り値

なし

関連項目

BDEX_INFO


GetEditorInfo

Biz/Designerからエディタエクステンションに対してローディング時に呼び出されます。

エクステンションではこの構造体に必要な情報を設定しBiz/Designerに情報を提供します。

void GetEditorInfo(
    BDEX_EDITOR_INFO* info
);

パラメータ

info

BDEX_EDITOR_INFO構造体へのポインタです。この構造体へ値を設定します。

戻り値

なし

関連項目

BDEX_EDITOR_INFO


GetDocGenInfo

Biz/Designerからドキュメント作成エクステンションに対してローディング時に呼び出されます。

エクステンションではこの構造体に必要な情報を設定しBiz/Designerに情報を提供します。

void GetDocGenInfo(
    BDEX_DOCGEN_INFO* info
);

パラメータ

info

BDEX_DOCGEN_INFO構造体へのポインタです。この構造体へ値を設定します。

戻り値

なし

関連項目

BDEX_DOCGEN_INFO


OnNotLicensed

より追加されました

ライセンス認証を有効にしており、有効なライセンスが見つからない場合呼び出されます。

bool OnNotLicensed(
    bool evaluation
);

パラメータ

evaluation

trueの場合Biz/Designerが現在評価版であることを示します。

falseの場合Biz/Designerはライセンス登録済みです。

戻り値

エクステンションの読み込みを継続する場合trueを、読み込みをキャンセルする場合falseを返します

関連項目

BDEX_INFO構造体


DocGenStartHandler

プロジェクトに対してドキュメント作成を実行した場合一番初めに一度だけ呼び出されるハンドラです。

タイトルページなどの出力に利用します。

bool DocGenStartHandler(
    BDEX_PROJECT_INFO* info,
    LPCTSTR outFolder,
    LPCTSTR ext
);

パラメータ

info

BDEX_PROJECT_INFO構造体へのポインタです

outFolder

ドキュメント出力先フォルダ

ext

Biz/Designerのドキュメント生成ダイアログで選択された拡張子

より追加されました

戻り値

処理を継続する場合trueを、中断する場合falseを返します

関連項目

BDEX_DOCGEN_INFO、BDEX_PROJECT_INFO


DocGenFileHandler

ドキュメント作成を実行した場合、各CRSファイル毎に呼び出されるドキュメント作成のメインとなるハンドラです。

bool DocGenStartHandler(
    BDEX_PROJECT_INFO* info,
    LPCTSTR fileType,
    LPCTSTR fileRelPath,
    LPCTSTR imagePath,
    LPCTSTR outPath,
    LPCTSTR data,
    LPCTSTR ext
);

パラメータ

info

BDEX_PROJECT_INFO構造体へのポインタです

fileType

CRSファイルの詳細タイプを表す文字列。以下のいずれかになります。

FILETYPE_DIALOG | ダイアログ
FILETYPE_FORM | フォーム
FILETYPE_DOCUMENT | ドキュメント
FILETYPE_PACKAGE | パッケージ
FILETYPE_CRSFILE | 上記以外のCRSファイル
fileRelPath

対象CRSファイルのプロジェクトフォルダからの相対パスを示します

imagePath

対象CRSファイルの画像イメージがあれば格納されているパス

outPath

出力すべきファイルパス

data

CRS解析結果XMLデータ。データの内容については開発ガイドをご参照ください。

ext

Biz/Designerのドキュメント生成ダイアログで選択された拡張子

より追加されました

戻り値

処理を継続する場合trueを、中断する場合falseを返します

解説

ドキュメント作成のメインルーチンです。

CRSの構造を解析したXMLデータを元にドキュメントを作成し、outPathへ出力します。

fileTypeでCRSファイルのタイプを判別して処理を分けることも可能です。

imagePathにあるイメージデータを利用しドキュメントに画面イメージを含ませることも可能です。

関連項目

BDEX_PROJECT_INFO


DocGenEndHandler

プロジェクトに対してドキュメント作成を実行した場合一番最後に一度だけ呼び出されるハンドラです。

閉じページなどの出力に利用します。

bool DocGenEndHandler(
    LPCTSTR outFolder,
    LPCTSTR ext
);

パラメータ

outFolder

ドキュメント出力先フォルダ

ext

Biz/Designerのドキュメント生成ダイアログで選択された拡張子

より追加されました

戻り値

処理を継続する場合trueを、中断する場合falseを返します

関連項目

なし


DocGenCommentHandler

スクリプトビューから「ドキュメントコメントの挿入」コマンドが実行された時呼び出されるハンドラです。

より追加されました

bool DocGenCommentHandler(
    BDEX_PROJECT_INFO* info,
    LPCTSTR fileType,
    LPCTSTR fileRelPath,
    LPCTSTR data,
    LPTSTR comment
);

パラメータ

info

BDEX_PROJECT_INFO構造体へのポインタです

fileType

CRSファイルの詳細タイプを表す文字列。以下のいずれかになります。

FILETYPE_DIALOG | ダイアログ
FILETYPE_FORM | フォーム
FILETYPE_DOCUMENT | ドキュメント
FILETYPE_PACKAGE | パッケージ
FILETYPE_CRSFILE | 上記以外のCRSファイル
fileRelPath

対象CRSファイルのプロジェクトフォルダからの相対パスを示します

data

CRS解析結果XMLデータ。

データの形式はDocGenFileHandlerと同様ですが、現在スクリプトビュー上のカーソル位置に一番近いオブジェクトをトップレベルとし、そのオブジェクトから下位のオブジェクト情報のみが渡されます。

comment

生成したコメントを格納します(4096バイト以内)。

戻り値

正常にコメントを作成できた場合trueを、コメントが作成できなかった場合falseを返します

解説

スクリプトビューから「ドキュメントコメントの挿入」コマンドが実行された時呼び出されるハンドラです。

エクステンションに適したコメント行を作成するサポートを行わせることができます。

CRSの構造を解析したXMLデータを元にコメントを作成し、commentバッファへコピーします。

fileTypeでCRSファイルのタイプを判別して処理を分けることも可能です。

関連項目

BDEX_PROJECT_INFO


BDEM_SETDATA

Biz/Designerがエクステンションに関連付けられたファイルオープンした時、ファイルのデータをセットするために呼び出されます。

エディタエクステンションに対して一番初めに送信されるメッセージです。

ウィンドウプロシージャへのメッセージとして受け取ります。

LRESULT CALLBACK WindowProc(
    HWND hWnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam
);

パラメータ

wParam

データの長さ(バイト)

lParam

データへのポインタ(BYTE*)

戻り値

任意の値(無視されます)

備考

データはメッセージ完了後Biz/Designer側で解放されます。よってこのポインタをそのまま編集データとして使用することはできません。

必ずエクステンション側でデータをコピーしてください。


BDEM_GETDATA

Biz/Designerが編集中のファイルデータを取得するために呼び出されます。ビューワモードの場合呼び出されることはありません。

ウィンドウプロシージャへのメッセージとして受け取ります。

LRESULT CALLBACK WindowProc(
    HWND hWnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam
);

パラメータ

wParam

受け取りバッファの長さ(バイト)

lParam

受け取りバッファへのポインタ(BYTE*)

戻り値

データの長さ(バイト)

解説

Biz/Designerから2通りの形で呼び出されます。

wParamとlParamがともに0に場合はデータのコピーは行わずデータの長さのみ返します。

これによりBiz/Designerはその値でバッファを確保し受け取りバッファのポインタをlParamに指定して再呼び出しします。

この場合はlParamの指すポインタにデータをコピーします。


BDEM_GETSELECTINGWORD

Biz/Designerが現在選択中の単語を取得するために呼び出されます。

「ファイルから検索」ダイアログやヘルプなど現在選択されている単語が初期値になる場合に利用されます。

ウィンドウプロシージャへのメッセージとして受け取ります。

LRESULT CALLBACK WindowProc(
    HWND hWnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam
);

パラメータ

wParam

受け取りバッファの長さ(バイト)

lParam

受け取りバッファへのポインタ(char*)

戻り値

処理を無視する場合0、単語を取得した場合0以外を返します


BDEM_SETSAVEPOINT

Biz/Designerがファイルの保存を実行した際呼び出されます。

変更フラグなどのリセットに利用します。

ウィンドウプロシージャへのメッセージとして受け取ります。

LRESULT CALLBACK WindowProc(
    HWND hWnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam
);

パラメータ

wParam

使用しません

lParam

使用しません

戻り値

任意


BDEM_EMPTYUNDOBUFFER

Biz/Designerがアンドゥポイントのリセットが必要なタイミングで呼び出されます。

内部的にアンドゥの処理を行っている場合アンドゥポイントをリセットします。

ウィンドウプロシージャへのメッセージとして受け取ります。

LRESULT CALLBACK WindowProc(
    HWND hWnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam
);

パラメータ

wParam

使用しません

lParam

使用しません

戻り値

任意


BDEM_LOADPAGESETUP

印刷を行う場合、標準のプリンタの設定をエクステンション独自のフォーマットに変更する場合に使用します。

高度なメッセージです。

ウィンドウプロシージャへのメッセージとして受け取ります。

LRESULT CALLBACK WindowProc(
    HWND hWnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam
);

パラメータ

wParam

使用しません

lParam

PRINTDLG構造体へのポインタ

戻り値

独自の印刷設定を使用する場合は0以外を戻します

解説

PRINTDLG構造体にはページ設定などの印刷情報が含まれます。

PRINTDLG構造体のhDevModeとhDevNamesに独自に作成したDEVMODE構造体とDEVNAMES構造体を代入します。

PRINTDLG構造体、DEVMODE構造体、およびDEVNAMES構造体とその設定に関してはMicrosoft社のWin32APIの解説をご参照ください。


BDEM_SAVEPAGESETUP

Biz/Designerがページ設定を完了した後に呼び出します。エクステンションで独自の印刷設定を保存したい場合に利用します。

高度なメッセージです。

ウィンドウプロシージャへのメッセージとして受け取ります。

LRESULT CALLBACK WindowProc(
    HWND hWnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam
);

パラメータ

wParam

使用しません

lParam

PRINTDLG構造体へのポインタ

戻り値

任意

備考

PRINTDLG構造体とその値に関してはMicrosoft社のWin32APIの解説をご参照ください。


BDEM_PRINT

印刷を実行した場合ページ毎に呼び出されます。

ウィンドウプロシージャへのメッセージとして受け取ります。

LRESULT CALLBACK WindowProc(
    HWND hWnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam
);

パラメータ

wParam

使用しません

lParam

BDEX_PRINT_INFO構造体へのポインタ

戻り値

印刷した部分までのインデックス値

解説

印刷を実行した場合ページ毎に呼び出されます。

BDEX_PRINT_INFOのhDC、hDCTargetに対し、rectの範囲に描画を行います。

現在ページに対するファイル内容の印刷開始点はstartIndexで指定されます。戻り値として印刷した部分までのインデックスを戻します。

Biz/Designerはこの値を見て、印刷を終了すべきかどうかを決定します。

インデックスの単位はエクステンションで独自に管理します。文字数でも行数でもエクステンション内で整合性が取れてさえいれば問題ありません。

全ページの印刷を指示した場合はBDEM_GETLENGTHで得られた値をインデックスが上回るまで繰り返されます。

関連項目

BDEX_PRINT_INFO、BDEM_GETLENGTH


BDEM_GETLENGTH

印刷を実行した場合ページ毎に呼び出されます。ファイルの長さ(インデックス単位)を返します。

ウィンドウプロシージャへのメッセージとして受け取ります。

LRESULT CALLBACK WindowProc(
    HWND hWnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam
);

パラメータ

wParam

使用しません

lParam

使用しません

戻り値

ファイルの総インデックス値

解説

印刷を実行した場合ページ毎に呼び出されます。

Biz/Designerはこの値を見て、印刷を終了すべきかどうかを決定します。

参照

BDEM_PRINT


BDEM_PRETRANSLATEMSG

WindowsメッセージループからTranslateMessage関数によりメッセージが変換されるより前の生のメッセージを送ります。

高度なメッセージです。

ウィンドウプロシージャへのメッセージとして受け取ります。

LRESULT CALLBACK WindowProc(
    HWND hWnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam
);

パラメータ

wParam

使用しません

lParam

MSG構造体へのポインタ

戻り値

メッセージに対して処理を行った場合0以外を戻します。

0を返した場合通常通りメッセージはTranslateMessageされた後ディスパッチされます。

解説

Windowsではキー入力などのメッセージはTranslateMessage関数で変換された後ディスパッチされますが、この場合生のキー入力を取得できない場合があります。これはアクセラレータ(ショートカット)キーなどに見ることができます。

TranslateMessageを通る前の生のメッセージを先行して取得することで通常エクステンションウィンドウには送られないメッセージを取得することができます。

このメッセージは使い方を誤ると意図しない障害が発生する場合があります。

MSG構造体に関してはMicrosoft社のWin32APIガイドをご参照ください。


BDEM_UPDATECMDUI

Biz/Designerがメニューやツールバーの表示状態を取得するために送信するメッセージです。

このメッセージに答えることでメニューの表示状態をコントロールすることができます。

ウィンドウプロシージャへのメッセージとして受け取ります。

LRESULT CALLBACK WindowProc(
    HWND hWnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam
);

パラメータ

wParam

メニューコマンドID

lParam

使用しません

戻り値

メニューの状態を以下のコードの組み合わせで指定します。

BDUI_THROUGH | Biz/Designer本体に処理を任せます
BDUI_DISABLE | メニュー項目を選択不可状態にします
BDUI_ENABLE | メニュー項目を選択可能状態にします
BDUI_UNCHECK | チェックスタイルが指定されている場合、メニュー項目のチェックを外します
BDUI_CHECK | チェックスタイルが指定されている場合、メニュー項目のチェックを表示します
BDUI_INDEFINITE | チェックスタイルが指定されている場合、メニュー項目のチェックを不定状態にします

解説

Biz/Designerがメニューやツールバーの表示状態を取得するために送信するメッセージです。

表示の更新が必要なすべてのメニュー項目毎に呼び出されます。エクステンションは自身の動作に関わるメニューコマンドIDに対して適切な状態コードを返信する必要があります。

エクステンションで定義したメニューやツールバーのコマンドIDの他、Biz/Designer本体のメニューの表示のコントロールも可能です。

例えばメニューバーの[編集]メニューの[コピー]や[貼り付け]コマンドなどをエクステンションで実行する場合、該当のコマンドIDを処理してあげることで本体のエディタと同等なオペレーションが可能になります。

Biz/Designerで使用されている主な編集コマンドは以下の通りです。

コマンドID | 値(16進) | メニュー名
ID_EDIT_CLEAR | 0xE120 | 削除
ID_EDIT_CLEAR_ALL | 0xE121 | すべてを削除
ID_EDIT_COPY | 0xE122 | コピー
ID_EDIT_CUT | 0xE123 | 切り取り
ID_EDIT_FIND | 0xE124 | 検索
ID_EDIT_PASTE | 0xE125 | 貼り付け
ID_EDIT_REPLACE | 0xE129 | 置換
ID_EDIT_SELECT_ALL | 0xE12A | すべてを選択
ID_EDIT_UNDO | 0xE12B | アンドゥ
ID_EDIT_REDO | 0xE12C | やり直し
ID_FILE_PRINT | 0xE107 | 印刷
ID_FILE_PRINT_PREVIEW | 0xE109 | 印刷プレビュー

この値はMFCの標準的なコマンドIDと同じものです。

またエクステンションで印刷機能を使用する場合、コマンドID ID_FILE_PRINT、ID_FILE_PRINT_PREVIEWに対してBDUI_ENABLEを返さないとメニューからコマンドが実行できないため印刷することができません。

関連項目

BDEM_COMMAND


BDEM_COMMAND

メニューやツールバーからコマンドが選択された場合送信されるメッセージです。

ウィンドウプロシージャへのメッセージとして受け取ります。

LRESULT CALLBACK WindowProc(
    HWND hWnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam
);

パラメータ

wParam

メニューコマンドID

lParam

使用しません

戻り値

コマンドをエクステンションで処理した場合は0以外を返します。

0を返した場合、Biz/Designer本体に処理を任せます。

解説

メニューやツールバーからコマンドが選択された場合送信されるメッセージです。

エクステンションで必要な処理を実行します。

エクステンションで定義したメニューやツールバーのコマンドIDの他、Biz/Designer本体のメニューコマンドも送られます。

例えばメニューバーの[編集]メニューの[コピー]や[貼り付け]コマンドなどをエクステンションで実行する場合、該当のコマンドIDを処理してあげることで本体のエディタと同等なオペレーションが可能になります。

Biz/Designerで使用されている主な編集コマンドは以下の通りです。

コマンドID | 値(16進) | メニュー名
ID_EDIT_CLEAR | 0xE120 | 削除
ID_EDIT_CLEAR_ALL | 0xE121 | すべてを削除
ID_EDIT_COPY | 0xE122 | コピー
ID_EDIT_CUT | 0xE123 | 切り取り
ID_EDIT_FIND | 0xE124 | 検索
ID_EDIT_PASTE | 0xE125 | 貼り付け
ID_EDIT_REPLACE | 0xE129 | 置換
ID_EDIT_SELECT_ALL | 0xE12A | すべてを選択
ID_EDIT_UNDO | 0xE12B | アンドゥ
ID_EDIT_REDO | 0xE12C | やり直し
ID_FILE_PRINT | 0xE107 | 印刷
ID_FILE_PRINT_PREVIEW | 0xE109 | 印刷プレビュー

この値はMFCの標準的なコマンドIDと同じものです。

関連項目

BDEM_UPDATECMDUI


BDEN_FILEMODIFIED

Biz/Designerへファイルの変更状態を通知します。

親ウィンドウに対し以下のパラメータを送信します。

SendMessage(
    (HWND)hWnd,
    BDEN_FILEMODIFIED,
    (WPARAM)wParam,
    (LPARAM)lParam
);

パラメータ

wParam

TRUE=変更状態、FALSE=未変更状態

lParam

使用しません

戻り値

なし

解説

Biz/Designerへファイルの変更状態を通知します。

ファイルの変更状態を設定するとBiz/Designerはタイトルバーへの変更状態の表示や、ウィンドウを閉じる前の保存確認ダイアログの表示などを行います。


BDEN_PRINTSTATUS

ステータスバーに文字列を表示させます。

親ウィンドウに対し以下のパラメータを送信します。

SendMessage(
    (HWND)hWnd,
    BDEN_PRINTSTATUS,
    (WPARAM)wParam,
    (LPARAM)lParam
);

パラメータ

wParam

使用しません

lParam

BDEX_PRINT_STATUS構造体へのポインタ

戻り値

なし

備考

BDEX_PRINT_STATUS構造体は呼び出し側で初期化しておく必要があります。

関連項目

BDEX_PRINT_STATUS


BDEN_ACCEPTMODIFY

Biz/Designerにファイルが変更可能かどうかを問い合わせます

親ウィンドウに対し以下のパラメータを送信します。

SendMessage(
    (HWND)hWnd,
    BDEN_ACCEPTMODIFY,
    (WPARAM)wParam,
    (LPARAM)lParam
);

パラメータ

wParam

使用しません

lParam

使用しません

戻り値

0以外なら変更可能です

解説

テスト実行中などでファイルを変更することができない状態にあるかどうかをBiz/Designerに問い合わせます。

テスト実行中の場合、「テスト実行中はファイルを変更できません」ダイアログを表示し、テスト実行を中断するかどうか選択させます。

変更前に問い合わせるのがベターですが、変更後に問い合わせた結果変更不可だった場合はエクステンション側でアンドゥを行い状態を同期させる必要があります。

関連項目

BDEX_PRINT_STATUS


BDEN_FILEOPEN

他のファイルを開き編集状態にします

親ウィンドウに対し以下のパラメータを送信します。

SendMessage(
    (HWND)hWnd,
    BDEN_FILEOPEN,
    (WPARAM)wParam,
    (LPARAM)lParam
);

パラメータ

wParam

使用しません

lParam

開きたいファイルの絶対パス、またはURLの文字列へのポインタ

戻り値

なし

解説

他のファイルを開き編集状態にします。

指定できるパラメータはローカルファイルへの絶対パス、またはプロジェクトに組み込まれているファイルへのURLです。

URLは各プロジェクトに指定されているマッピングURLに基づきます。

相対パスは指定できません。

関連項目

BDEN_GETFILEPATH、BDEN_GETPROJECTINFO


BDEN_GETFILEPATH

編集中のファイルの絶対パスを取得します

親ウィンドウに対し以下のパラメータを送信します。

SendMessage(
    (HWND)hWnd,
    BDEN_GETFILEPATH,
    (WPARAM)wParam,
    (LPARAM)lParam
);

パラメータ

wParam

受け取りバッファの長さ(バイト)

lParam

受け取りバッファへのポインタ

戻り値

取得成功した場合0以外

備考

受け取りバッファは256バイト以上確保してください

関連項目

BDEN_GETPROJECTINFO


BDEN_GETPROJECTINFO

編集中のファイルが属しているプロジェクトの情報を取得します

親ウィンドウに対し以下のパラメータを送信します。

SendMessage(
    (HWND)hWnd,
    BDEN_GETPROJECTINFO,
    (WPARAM)wParam,
    (LPARAM)lParam
);

パラメータ

wParam

使用しません

lParam

BDEX_PROJECT_INFO構造体へのポインタ

戻り値

取得成功した場合0以外の値

解説

編集中のファイルが属しているプロジェクトの情報を取得します。

取得できるデータに関してはBDEX_PROJECT_INFO構造体の解説をご参照ください。

関連項目

BDEX_PROJECT_INFO


BDEN_POPUPMENU

ポップアップメニューを表示させます。

メニューの選択結果はBDEM_COMMANDメッセージとして送信されます。

親ウィンドウに対し以下のパラメータを送信します。

SendMessage(
    (HWND)hWnd,
    BDEN_POPUPMENU,
    (WPARAM)wParam,
    (LPARAM)lParam
);

パラメータ

wParam

ポップアップメニューハンドル(HMENU)

lParam

表示スクリーン座標(POINT構造体へのポインタ)

戻り値

選択された場合0以外、キャンセル時0

解説

エクステンションで独自にポップアップメニューを表示させることもできますが、その場合Windows標準のメニュースタイル表示になりBiz/Designerのメニュースタイル表示にはなりません。

メニュースタイルをBiz/Designerと合わせたい場合このメッセージを使用します。

メニューの選択結果はBDEM_COMMANDメッセージとして送信されます。

また、このメッセージを使用する前にあらがじめポップアップメニューを作成しておく必要があります。

関連項目

BDEM_COMMAND、BDEN_POPUPMENU_RETID


BDEN_POPUPMENU_RETID

ポップアップメニューを表示させます。

メニューの選択結果を戻り値として取得することができます。

親ウィンドウに対し以下のパラメータを送信します。

SendMessage(
    (HWND)hWnd,
    BDEN_POPUPMENU_RETID,
    (WPARAM)wParam,
    (LPARAM)lParam
);

パラメータ

wParam

ポップアップメニューハンドル(HMENU)

lParam

表示スクリーン座標(POINT構造体へのポインタ)

戻り値

選択された場合メニューのコマンドID、キャンセル時0

解説

エクステンションで独自にポップアップメニューを表示させることもできますが、その場合Windows標準のメニュースタイル表示になりBiz/Designerのメニュースタイル表示にはなりません。

メニュースタイルをBiz/Designerと合わせたい場合このメッセージを使用します。

メニューの選択結果を戻り値として取得することができます。

また、このメッセージを使用する前にあらがじめポップアップメニューを作成しておく必要があります。

関連項目

BDEN_POPUPMENU


BDEN_MAKEIMAGE

指定したCRSファイルに対して画面イメージを作成するよう指示します。

高度なメッセージです。

親ウィンドウに対し以下のパラメータを送信します。

SendMessage(
    (HWND)hWnd,
    BDEN_MAKEIMAGE,
    (WPARAM)wParam,
    (LPARAM)lParam
);

パラメータ

wParam

使用しません

lParam

対象ファイルのURL文字列へのポインタ

戻り値

なし

解説

エクステンションでCRSファイルの画面イメージを使用する場合、このメッセージを送信して作成させることができます。

画面を持つCRSファイル以外に対しては無効です。


BDEX_INFO

エクステンションの基本情報を格納する構造体です。

Biz/Designerからエクステンションのローディング時に呼び出されるGetExtensionInfo関数の引数として渡されます。

エクステンションではこの構造体に必要な情報を設定しBiz/Designerに情報を提供します。

struct BDEX_INFO {
    HINSTANCE hInstance;
    int type;
    char productID[41];
    bool needLicense;
    char requiredBDVersion[12];
};

メンバ

hInstance

エクステンションDLL自身のインスタンスハンドルが格納されます。

このメンバはBiz/Designerによって自動的にセットされるためエクステンションで操作する必要はありません。

type

エクステンションのタイプを指定します。

エディタエクステンションの場合BDEXT_FILEEDITORをドキュメント作成エクステンションの場合はBDEXT_DOCGENERATORを代入します。

productID

エクステンションの識別子として40バイト以内の任意の文字列を代入します。

needLicense

より機能拡張されています

ライセンス管理を有効にする場合trueに設定します。

trueの場合Biz/Designerはエクステンションを読み込み時にproductIDに基づき該当するライセンスをチェックします。

requiredBDVersion

エクステンションの動作を保証するBiz/Designerの最低バージョンを文字列で指定します。

Biz/Designer4.1.3.0以降のバージョンを必要とする場合”04.01.03.00”の形式で指定します。

関連項目

GetExtensionInfo、OnNotLicensed


BDEX_EDITOR_INFO

エディタエクステンションの情報を格納する構造体です。

Biz/Designerからエクステンションのローディング時に呼び出されるGetEditorInfo関数の引数として渡されます。

エクステンションではこの構造体に必要な情報を設定しBiz/Designerに情報を提供します。

struct BDEX_EDITOR_INFO {
    HINSTANCE hInstance;
    HINSTANCE hResource;
    char extList[256];
    char wndClass[33];
    UINT titleID;
    UINT menuID;
    UINT toolBarID;
    UINT iconID;
    UINT explanationID;
    bool viewer;
};

メンバ

hInstance

エクステンションDLL自身のインスタンスハンドルが格納されます。

このメンバはBiz/Designerによって自動的にセットされるためエクステンションで操作する必要はありません。

hResource

外部リソースを指定する場合にそのリソースを持つモジュールのハンドルを指定します。エクステンションDLL内のリソースを利用する場合はNULLを指定します。

このハンドルを指定した場合Biz/Designerはまずこのモジュールに対しリソースの取得を試みます。このモジュール内からリソースが見つからなかった場合エクステンションDLLからリソースの取得します。

主に多言語化を行う場合利用します。

extList

エディタエクステンションをマッピングする拡張子をカンマ区切りで指定します。

例)“xls,csv,prn”

wndClass

Biz/Designerで作成されるエディタウィンドウのウィンドウクラスを指定します。

エクステンションはあらかじめRegisterClassによりウィンドウクラスを登録しておく必要があります。

titleID

エクステンションのタイトルが格納された文字列リソースIDを指定します。このタイトルは新規作成のメニューなどに使用されます。

menuID

エクステンション専用メニューのリソースIDを指定します。

メニューが不要な場合0を指定します。

toolBarID

エクステンション専用ツールバーのリソースIDを指定します。

ツールバーが不要な場合0を指定します。

iconID

新規作成ダイアログに表示されるアイコンイメージのビットマップリソースIDを指定します。指定するビットマップはサイズ32x32のフルカラーになります。

ビューワモードの場合無視されます。

explanationID

新規作成ダイアログに表示される説明文の文字列リソースIDを指定します。ビューワモードに場合無視されます。

viewer

ビューワ(編集不可)モードを指定する場合true、それ以外はfalseを指定します。

ビューワモードの場合、ファイルの新規作成や保存はできません。

関連項目

GetEditorInfo


BDEX_DOCGEN_INFO

ドキュメント作成エクステンションの情報を格納する構造体です。

Biz/Designerからエクステンションのローディング時に呼び出されるGetDocGenInfo関数の引数として渡されます。

エクステンションではこの構造体に必要な情報を設定しBiz/Designerに情報を提供します。

struct BDEX_DOCGEN_INFO {
    HINSTANCE hInstance;
    HINSTANCE hResource;
    UINT nameID;
    UINT iconID;
    UINT explanationID;
    char ext[256];
    DOCGENSTARTHANDLER sHandler;
    DOCGENFILEHANDLER fHandler;
    DOCGENENDHANDLER eHandler;
#if BDEX_DOCGENVER >= 0x0200
    DOCGENCOMMENTHANDLER cHandler;
#endif
};

メンバ

hInstance

エクステンションDLL自身のインスタンスハンドルが格納されます。

このメンバはBiz/Designerによって自動的にセットされるためエクステンションで操作する必要はありません。

hResource

外部リソースを指定する場合にそのリソースを持つモジュールのハンドルを指定します。エクステンションDLL内のリソースを利用する場合はNULLを指定します。

このハンドルを指定した場合Biz/Designerはまずこのモジュールに対しリソースの取得を試みます。このモジュール内からリソースが見つからなかった場合エクステンションDLLからリソースの取得します。

主に多言語化を行う場合利用します。

nameID

エクステンションの名前が格納された文字列リソースIDを指定します。このタイトルはドキュメント作成ダイアログの選択項目に使用されます。

iconID

現在未使用です

explanationID

現在未使用です

ext

出力ファイルの拡張子を指定します。

Biz/Designer4.1.4以降はカンマ区切りにより複数の拡張子を定義することができます。

この拡張子はBiz/Designerからドキュメント生成を実行する場合の選択肢となり選択された拡張子は各ドキュメント作成ハンドラへ渡されます。

より機能拡張されています

sHandler

プロジェクトに対してドキュメント作成を実行した場合一番初めに一度だけ呼び出されるハンドラです。

必要ない場合はNULLを指定します。

詳細はDocGenStartHandler関数の説明を参照してください。

fHandler

各CRSファイル毎に呼び出されるドキュメント作成のメインとなるハンドラです。

詳細はDocGenFileHandler関数の説明を参照してください。

eHandler

プロジェクトに対してドキュメント作成を実行した場合最後に一度だけ呼び出されるハンドラです。

必要ない場合はNULLを指定します。

詳細はDocGenEndHandler関数の説明を参照してください。

cHandler

スクリプトビューから「ドキュメントコメントの挿入」コマンドが実行された時呼び出されるハンドラです。

必要ない場合はNULLを指定します。

このメンバがNULLの場合Biz/Designerから「ドキュメントコメントの挿入」コマンドは使用できなくなります。

詳細はDocGenCommentHandlerの説明を参照してください。

より追加されました

関連項目

GetDocGenInfo、DocGenStartHandler、DocGenFileHandler、DocGenEndHandler、DocGenCommentHandler


BDEX_PROJECT_INFO

プロジェクト情報を格納する構造体です。Biz/Designerの「プロジェクトの設定」ダイアログで設定された情報が格納されます。

エディタエクステンションではBDEN_ GETPROJECTINFOメッセージのパラメータとしてBiz/Designerに渡します。

ドキュメント作成エクステンションではDocGenStartHandler、DocGenFileHandlerのパラメータとして渡されます。

struct BDEX_PROJECT_INFO {
    char name[1024];
    char folder[256];
    char projectFile[256];
    char targetURL[1024];
    char internalTargetURL[1024];
    bool needReload;
    bool startup;
    char startupCRS[256];
    char company[256];
    char copyright[256];
    char version[32];
    char crsVersion[32];
    char description[1024];
    char comment[1024];
};

メンバ

name

プロジェクト名

folder

プロジェクトフォルダの絶対パス

projectFile

プロジェクトファイルの絶対パス

targetURL

プロジェクトにマッピングされるURL

internalTargetURL

Biz/Designer内部で利用する補完されたマッピングURLです。

「プロジェクトの設定」で「プロジェクトにマッピングされるURL」が指定されている場合はtargetURLと同一になります。

ターゲットURLが指定されていない場合はBiz/Designerが内部的に「http://bizdesigner/プロジェクト名」の様なマッピングURLを作成します。

needReload

プロジェクトの再読込を必要としている状態かどうかを示します。

startup

スタートアッププロジェクトに指定されているかどうかを示します。

startupCRS

スタートアップCRSファイル

company

「プロジェクト情報」に入力された会社名

copyright

「プロジェクト情報」に入力された著作権情報

version

「プロジェクト情報」に入力されたバージョン番号

crsVersion

「プロジェクト情報」に入力された対応Biz/Browserバージョン

description

「プロジェクト情報」に入力された説明

comment

「プロジェクト情報」に入力されたコメント

関連項目

BDEN_ GETPROJECTINFO、DocGenStartHandler、DocGenFileHandler


BDEX_PRINT_INFO

Biz/Designerから印刷を行う場合BDEM_PRINTメッセージのパラメータとして渡されます。

struct BDEX_PRINT_INFO {
    HDC hDC;
    HDC hDCTarget;
    RECT* rect;
    int startIndex;
};

メンバ

hDC

プレビューウィンドウまたはプリンタのデバイスコンテキストです。

hDCTarget

プレビューウィンドウまたはプリンタの属性デバイスコンテキストです。

rect

印刷領域の論理範囲

startIndex

印刷すべきドキュメントの開始位置

備考

印刷時はhDCとhDCTargetは同じハンドルを指しますのでどちらに対して出力しても結果は同一になります。

しかしプレビュー時はプリンタデバイスへの出力をディスプレイにエミュレーションするためを出力デバイスhDCと属性デバイスhDCTargetが異なります。

hDCに対しては実描画を、hDCTargetに対しては描画属性(色など)を設定するようにプログラミングすることで印刷と印刷プレビューで同等の結果を得ることができます。

関連項目

BDEM_PRINT


BDEX_PRINT_STATUS

ステータスバーに表示する文字列を格納する構造体です。

BDEN_PRINTSTATUSメッセージのパラメータとして使用します。

struct BDEX_PRINT_STATUS {
    char pane1[256];
    char pane2[256];
    char pane3[256];
};

メンバ

pane1

ステータスバーペイン１に表示する文字列

pane2

ステータスバーペイン2に表示する文字列

pane3

ステータスバーペイン3に表示する文字列

関連項目

BDEN_PRINTSTATUS


サンプルプログラムについて

4 サンプルプログラムについて

[Biz/Designerインストールフォルダ]\extention_sdk\DLLにコンパイル済のサンプルプログラムが納められています。

4-1 カーソルビューワエクステンションサンプル

curファイル、aniファイルなどのマウスカーソルを表示するエディタエクステンションです。

プロジェクトビューからcurまたはaniファイルを編集すると自動的に起動します。

[Biz/Designerインストールフォルダ]\extention_sdk\CursorViewerに納められています。

4-2 HTMLドキュメント作成エクステンションサンプル

より機能拡張されています

CRSファイル内のコメントとHTMLで記述されたテンプレートを組み合わせCRSの簡易HTMLドキュメントを作成するドキュメント作成エクステンションです。

1CRSファイル＝1HTMLファイルになります。

テンプレートを編集することによって出力フォーマットを自由にカスタマイズすることが可能です。

[Biz/Designerインストールフォルダ]\extention_sdk\HTMLDocに納められています。

またサンプルとして[Biz/Designerインストールフォルダ]\extention_sdk\HTMLDoc\SampleProjectにサンプルのプロジェクトファイルが、

[Biz/Designerインストールフォルダ]\extention_sdk\HTMLDoc\HTMLDocTempにサンプルテンプレートが納められています。

※1)HTMLドキュメント作成エクステンションを動作させるためにはMicrosoft社のMSXML 4.0 Service Pack 2コンポーネントが必要になります。

インストールされていない場合、あらかじめ以下のURLよりダウンロードしインストールを行ってください。

http://www.microsoft.com/downloads/details.aspx?FamilyID=3144b72b-b4f2-46da-b4b6-c5d7485f2b42&DisplayLang=ja

※2)VisualStudio2005でコンパイルを行う場合、ライブラリcomsuppw.libをリンクしてください。

テンプレートファイル

テンプレートファイルはエクステンションDLLのあるフォルダ内のHTMLDocTempフォルダに配置する必要があります。また作成されるファイルタイプ別にテンプレートを用意する必要があります。

dialog.html | ダイアログ用のテンプレート
form.html | フォーム用のテンプレート
document.html | ドキュメント用のテンプレート
package.html | パッケージ用のテンプレート
crsfile.html | 上記以外のCRSファイル用のテンプレート

テンプレート書式

テンプレートはHTMLのコメント内にキーワードを埋め込んだ形になります。イメージとしてJSPやASPに近い形です。

HTMLドキュメント作成エクステンションはテンプレートを解釈し指定されたシンボルをCRS情報辞書(下記)から検索し値をHTMLに埋め込み出力します。

指定できるキーワード
@symbol; | 値シンボルsymbolをルート辞書から検索して置換
@dic.symbol; | 値シンボルsymbolを辞書シンボルdicから検索して置換
@begin(dic) | 辞書dicに対してdicの内容を1つずつ取り出す繰返し開始
@end(dic) | 辞書dicに対しての繰返し終了
@if(symbol) html @endif | 値シンボルsymbolが定義されているとき、htmlを展開

@begin～@end、@if～@endifキーワードはネスティングすることも可能です。

CRS情報辞書とシンボル

HTMLドキュメント作成エクステンションではCRSファイルの内容を解析して自動的にCRS情報辞書を作成します。

辞書は階層構造に似た構成で表現され、値の参照は辞書シンボルと値シンボルを．(ドット)で階層を区切った指定、または@beginキーワードによって参照辞書シンボルを指定し値シンボルで値を参照することができます。

ルート辞書

辞書指定なし状態での検索対象はルート辞書になります。

ルート辞書はプロジェクトや、現在注目しているCRSファイルに関する情報を持っています。また、CRSファイル内のオブジェクト辞書やパッケージ辞書を保有しています。

シンボル | 値
projectname | プロジェクト名
company | 会社名。「プロジェクト情報」タブで記述した内容
copyright | 著作権情報。「プロジェクト情報」タブで記述した内容
version | バージョン番号。「プロジェクト情報」タブで記述した内容
crsversion | 対応Biz/Browserバージョン。「プロジェクト情報」タブで記述した内容
description | プロジェクト説明。「プロジェクト情報」タブで記述した内容
comment | コメント。「プロジェクト情報」タブで記述した内容
filename | 対象CRSファイル名
date | 実行日付
image | 画面イメージファイル名
object | オブジェクト辞書を指定
package | パッケージ辞書を指定

import辞書

より追加されました

シンボル | 値
name | import対象のオブジェクト名、またはURL

オブジェクト辞書
シンボル | 値
name | オブジェクト名
class | オブジェクトのクラス名
dataclass | オブジェクトのデータ属性。Label:Number label1のNumberの部分
property | 対象オブジェクトの持つプロパティ辞書
function | 対象オブジェクトの持つファンクション辞書
handler | 対象オブジェクトの持つイベントハンドラ(On･･･で始まるファンクション)辞書

パッケージ辞書
シンボル | 値
name | パッケージ名
class | 対象パッケージが持つクラス辞書
object | 対象パッケージが持つオブジェクト辞書
function | 対象パッケージの持つファンクション辞書
handler | 対象パッケージの持つイベントハンドラ(On･･･で始まるファンクション)辞書

プロパティ辞書
シンボル | 値
name | プロパティ名
value | プロパティ値
expr | プロパティの代入演算子が参照演算子&=であるかどうか
function | 対象パッケージの持つファンクション辞書
handler | 対象パッケージの持つイベントハンドラ(On･･･で始まるファンクション)辞書
プロパティ名 | プロパティの値

プロパティ辞書は@beginによる繰り返しアクセスとプロパティ名によるシンボルアクセス両方に対応しています。

ファンクション辞書
シンボル | 値
name | ファンクション名
param | パラメータ
object | 所属オブジェクト名

イベントハンドラ辞書
シンボル | 値
name | ファンクション名
param | パラメータ
object | 所属オブジェクト名

クラス辞書
シンボル | 値
name | クラス名
extends | 派生元クラス名
object | 対象クラスの持つオブジェクト辞書
function | 対象クラスの持つファンクション辞書
handler | 対象クラスの持つイベントハンドラ(On･･･で始まるファンクション)辞書

CRSファイルでのコメント書式

CRSファイル内のコメントにJavaDocの様にキーワード「@symbol:value;」を埋め込むことでHTMLドキュメント作成エクステンションの辞書に値を登録することができます。

テンプレートからは辞書に対して登録されたsymbolでvalue値を取得することができます。

CRS内のオブジェクトとコメントとの位置関係によって登録される辞書が変わります。

コメントの位置 | 登録先辞書
スクリプトの先頭 | ルート辞書
オブジェクト定義の直前 | オブジェクト辞書
パッケージ定義の直前 | パッケージ辞書
クラス定義の直前 | クラス辞書
On･･･ファンクション定義の直前 | イベントハンドラ辞書
On･･･以外のファンクション定義の直前 | ファンクション辞書
上記以外の場所 | 登録されません

「ドキュメントコメントの挿入」コマンドとの連動

より追加されました

バージョン4.1.4以降で搭載された「ドキュメントコメントの挿入」機能に対応しています。

オブジェクトまたはパッケージ、クラス定義など意味がある場所上にカーソルを置き、「ドキュメントコメントの挿入」コマンドを実行すると自動的にオブジェクトを判定し適当なコメントのスケルトンを作成します。

HTMLテンプレートサンプル

オブジェクト一覧テーブル表示
<table>
    <!-- @begin(object) -->
        <tr><td>@class;</td><td>@name;</td></tr>
    <!-- @end(object) -->
</table>

ファンクション付きでオブジェクト一覧テーブル表示
<table border="1">
    <!-- @begin(object) -->
        <tr><td>@class;</td><td>@name;</td>
        <td>
        <!-- @if(function) -->
            <table>
            <!-- @begin(function) -->
                <tr><td>@name;</td><td>@param;</td></tr>
            <!-- @end(function) -->
            <!-- @begin(handler) -->
                <tr><td>@name;</td><td>@param;</td></tr>
            <!-- @end(handler) -->
            </table>
        <!-- @endif -->
        <br>
        </td>
        </tr>
    <!-- @end(object) -->
</table>

import一覧テーブル表示
<table>
    <!-- @begin(import) -->
        <tr><td>@name;</td></tr>
    <!-- @end(import) -->
</table>

パッケージとクラスの一覧
<!-- @begin(package) -->
    <table>
        <tr><td>@name; Package</td></tr>
        <!-- @begin(class) -->
            <tr><td>@name; class</td></tr>
        <!-- @end(class) -->
    </table><p>
<!-- @end(package) -->

画像イメージ埋め込み
<center><img src=”<!-- @image -->”></center>


DDDataクラス

クリップボードデータを管理するクラスです。

DropTargetクラスで設定したウィンドウへメッセージと共に渡されます。

メンバ関数

bool IsDataAvailable(CLIPFORMAT format)

パラメータ

format

OSで定義されているクリップボードフォーマット、またはRegisterClipboardFormat関数で登録されたユーザークリップボードフォーマット

戻り値

クリップボードに指定の型のデータが格納されていればtrue、でなければfalse

HGLOBAL GetGlobalData(CLIPFORMAT format)

パラメータ

format

OSで定義されているクリップボードフォーマット、またはRegisterClipboardFormat関数で登録されたユーザークリップボードフォーマット

戻り値

クリップボードに指定の型のデータが格納されていればデータのメモリハンドルを返します。

この関数で取得できるデータタイプは文字列やビットマップなどの生のバイナリデータです。

またこのメモリハンドルを使用するにはGlobalLockし、使用後はGlobalFreeする必要があります。

HGDIOBJ GetGDIData(CLIPFORMAT format)

パラメータ

format

OSで定義されているクリップボードフォーマット、またはRegisterClipboardFormat関数で登録されたユーザークリップボードフォーマット

戻り値

クリップボードに指定の型のデータが格納されていればデータのメモリハンドルを返します。

この関数で取得できるデータタイプはメタファイルなどのGDIオブジェクトデータです。

DWORD GetKeyState()

パラメータ

なし

戻り値

ドラッグ＆ドロップ時のマウスボタンや特殊キーの状態を取得します。

MK_CONTROL、 MK_SHIFT、 MK_ALT、 MK_BUTTON、 MK_LBUTTON、 MK_MBUTTON、MK_RBUTTONの組み合わせ値が返されます。

const POINT& GetPoint() const

パラメータ

なし

戻り値

現在のマウスカーソルの位置をスクリーン座標で返します。

定義ヘッダ

dropTarget.h

関連項目

DropTargetクラス


DropTargetクラス

OLEドラッグ＆ドロップを実装するクラスです。

Register関数でセットしたウィンドウに対しOLEドラッグ＆ドロップが発生すると以下のメッセージを送ります。

メッセージ | 内容
DDM_DRAGOVER | ドラッグ状態でウィンドウ内に入ったことを通知します
DDM_DROP | ウィンドウにドロップしたことを通知します

またメッセージのパラメータとしてlParamにDDDataクラスへのポインタを渡します。

DDDataクラスからドラッグ＆ドロップされているデータ種を判別し、必要なデータである場合は読み出しを行います。

このメッセージの戻り値によりWindowsはドラッグ＆ドロップの動作を決定します。

Windowsシンボル | 値 | 内容
DROPEFFECT_NONE | 0 | ドロップ不可
DROPEFFECT_COPY | 1 | コピー可能
DROPEFFECT_MOVE | 2 | 移動可能

メンバ関数

void Register(HWND hWnd);

パラメータ

hWnd

ドラッグ＆ドロップを監視するウィンドウを設定します。

戻り値

なし

定義ヘッダ

dropTarget.h

関連項目

DDDataクラス