0
グローバルなマウスクリックを処理するロジックを実装しています。私はLowLevelMouseProcからデータを取得する必要がある瞬間に立ち往生しました。現在、MyClassのインスタンスを作成し、LowLevelMouseProcからアクセスすることができる時点でグローバル変数を設定していますが、それは正しいアプローチではないと思います。クラスインスタンスをLowLevelMouseProcに渡すにはどうすればいいですか?
設定フック:
g_myClass = this;
SetWindowsHookEx(WH_MOUSE_LL, MyClass::MouseHookProc, LoadLibraryA("user32.dll"), 0);
LowLevelMouseProc:
LRESULT CALLBACK MyClass::MouseHookProc(int nCode, WPARAM wParam, LPARAM lParam) {
MOUSEHOOKSTRUCT * pMouseStruct = (MOUSEHOOKSTRUCT *)lParam;
g_myClass.onClick(wParam, pMouseStruct->pt.x, pMouseStruct->pt.y); //isn't good
}
私はグローバル変数を使うことができると思っています。ありがとうございました。 – Vladimirs
低レベルのマウスフックの代わりに[RAW Input API](https://msdn.microsoft.com/en-us/library/windows/desktop/ms645536.aspx)を使用することを検討してください。 'SetWindowsLongPtr()'、 'SetProp()'、 'SetWindowSubclass()'を使ってクラスオブジェクトポインタを 'WM_INPUT'メッセージを受け取るHWNDに関連付けることができます。 –