キー入力のイベントを処理する


 プロダクト:MicroStation
 バージョン:CE update13
 環境:N/A
 エリア:Programming
 サブエリア:MDL

【質問】

キー入力のイベントにて、MDLプログラムを処理したい。

【回答】

Win32 API function ::GetAsyncKeyState()を使用し、MDLプログラムを処理します。

/*-------------------------------------------------------------+
| HelloWorld.cpp |
+-------------------------------------------------------------*/
#include <Windows.h>
#include <Mstn\MdlApi\MdlApi.h>

#define KEY_DOWN(vKey) ((::GetAsyncKeyState(vKey) & 0x8000) ? 1:0)

InputFilterReturnValue KeyPressMonitor(Inputq_element* queueElementP) {
short vkShift = KEY_DOWN(VK_SHIFT);
short xKey = KEY_DOWN('x') || KEY_DOWN('X');
short cKey = KEY_DOWN('C') || KEY_DOWN('c');
if (vkShift && xKey)
mdlDialog_dmsgsPrint(L"Shift + X pressed");
if (vkShift && cKey)
mdlDialog_dmsgsPrint(L"Shift + C pressed");

return INPUT_ACCEPT;
}

extern "C" DLLEXPORT void MdlMain(int argc, WCharCP argv[])
{
InputCallback::SetMonitorFunction(KeyPressMonitor, InputMonitorFilter::MONITOR_ALL);

フォーマットのコード表示:

 Original Author:Mikihiko Tabata