プロダクト: | 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 |