チュートリアル① ~「HmAutoCompleteEx.dll」利用方法 開発準備編~概要この章より、いくつかのステップに分けて、「HmAutoCompleteEx.dll」の利用方法を解説してゆきます。 チュートリアルが目指すものチュートリアルの最終目標は「プログラミング言語 Perl」用の入力補完拡張用の.dllを作成することになります。 Perl言語の設定秀丸の「ファイルタイプ別の設定」を利用して、「.pl」という拡張子に対して、
(大切なことは「入力補完のウィンドウ」を出しやすくして確認しやすくすること、 SDKのダウンロード更新日 2017/12/13
上記ファイルに含まれるプロジェクトを利用していくことで、「HmAutoCompleteEx.dll」上で動作するファイルを作成することが出来ます。 プロジェクトに含まれる最小のサンプル今回の最小サンプルは「入力補完まわりの機能を秀丸で使った時に、コールバック関数が呼ばれる」ので、 #include <windows.h> #include "OutputDebugStream.h" #define MACRO_DLL extern "C" __declspec(dllexport) MACRO_DLL int OnCreate(HWND hWnd, LPCTSTR pwszFileName) { OutputDebugStream(L"OnCreate:%s\n", pwszFileName); return TRUE; } MACRO_DLL int OnListBoxSelectedIndexChanged(HWND hWnd, int iListBoxSelectedIndex, LPCTSTR pwszListBoxSelectedItem, int iItemHeight) { OutputDebugStream(L"OnListBoxSelectedIndexChanged:%s\n", pwszListBoxSelectedItem); return TRUE; } MACRO_DLL int OnDestroy(HWND hWnd) { OutputDebugStream(L"OnDestroy\n"); return TRUE; } using AUTOCOMPLETELIST = void; MACRO_DLL AUTOCOMPLETELIST* OnQueryListBoxCustomAdded(HWND hWnd, AUTOCOMPLETELIST *pAutoCompleteOriginalList) { OutputDebugStream(L"OnQueryListBoxCustomAdded:\n"); return NULL; } MACRO_DLL int OnKeyDown(HWND hWnd, WPARAM wParam) { OutputDebugStream(L"OnKeyDown:%c\n", wParam); return TRUE; } コンパイルコンパイルする前に、「プロジェクト」の「プラットフォームツールセット」のバージョンが、 「HmAutoCompleteEx.dll」と「HmAutoCompleteExPlug.dll」を秀丸ディレクトリにコピーコンパイルすることで、「HmAutoCompleteExPlug.dll」が出来上がりました。 呼び出す設定HmAutoCompleteEx.dll自体はある程度自由に呼び出せますが、 マクロ内容#HMACE = loaddll( hidemarudir + @"\HmAutoCompleteEx.dll" ); if (#HMACE) { #_ = dllfuncw( #HMACE, "SetHidemaruHandle", hidemaruhandle(0), filename2 ); #_ = dllfuncw( #HMACE, "BindAutoCompleter", hidemarudir + "\\HmAutoCompleteExPlug.dll", "\\.pl$" ); } else { message("dllが無い"); } #hmaceをfreedll(FreeLibrary)しないよう注意してください。 デバッグモニターの用意普段デバッグモニターを利用していない人は、 入力補完をしてみる適当に「.pl」ファイルを秀丸で開いて、
どのような入力補完がらみの操作をすると、どの関数がコールバックされるのか、確認すると良いでしょう。
次節からウィンドウ描画へ今回のものはデバッグ領域に出すだけといった地味なものでしたが、 |