私はそれを次のように使用して理解する方法を学ぼうとしてSetWindowLongPtr()
います:
次の関数を使用して、現在のメッセージを取得し、カスタム プロトコルに送信できます。
LONG_PTR Some_Ptr = SetWindowLongPtr(Some_Hwnd, GWLP_WNDPROC, (LONG_PTR)Custom_Proc);
次の例のように、カスタム プロトコルを作成します。
static LRESULT CALLBACK Custom_Proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_COMMAND: MessageBox(hwnd,"This is a window","OKAY",NULL); break; default: return CallWindowProc((WNDPROC)Some_Ptr, hwnd, msg, wParam, lParam); break; } return CallWindowProc((WNDPROC)Some_Ptr, hwnd, msg, wParam, lParam); }
私の質問は次のとおりです。
- ここで何か不足していますか?これは正しいです?
- どこに電話します
SetWindowLongPtr()
か? 特定の状況が必要な場合は、ボタン ハンドルSome_Hwnd
が WM_CREATE で作成されていると想像してください。しかし、私はそれが他の状況に開かれたままにしておくことを望みます.