現在、Windows 電卓アプリへのすべてのユーザー入力を取得しようとしています。これを行う方法は、Win32 を使用して、電卓ウィンドウ用のすべてのキーボードおよびマウス入力をインターセプトすることのようです。以下のリンクにあるウィンドウのサブクラス化に関する MSDN ページを読み、サブクラス化に関する調査を行いました。
ウィンドウをサブクラス化するための構文はありますが、サブクラス化するウィンドウをプログラムに伝える方法がわかりません。
私がこれまでに持っているコードを以下に示します。私の問題は、変数「hWndEdit」がどのように割り当てられているかがわからないことです。私はWin32プログラミングにかなり慣れていないので、助けていただければ幸いです。
(リンク) http://msdn.microsoft.com/en-us/library/windows/desktop/ms633570(v=vs.85).aspx
WNDPROC wpOrigEditProc;
wpOrigEditProc = (WNDPROC) SetWindowLong(hWndEdit,GWL_WNDPROC,(long) WndEditProc);
LRESULT CALLBACK WndEditProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_CHAR:
case WM_KEYUP:
case WM_KEYDOWN:
if (hWnd == hWndEdit)
return 0;
break;
case WM_DESTROY:
// Remove the subclass from the edit control.
SetWindowLong(hWndEdit, GWL_WNDPROC, (LONG) wpOrigEditProc);
break;
default:
return CallWindowProc((WNDPROC ) wpOrigEditProc, hWnd, message, wParam, lParam);
}
return CallWindowProc((WNDPROC ) wpOrigEditProc, hWnd, message, wParam, lParam);
}