私は C++ は初めてではありませんが、Win32 プログラミングの概念は私にとってかなり新しいものです。とにかく、WM_NCHITTEST メッセージが WndProc を介して渡されるときに、X 座標と Y 座標を取得するのに問題がありました。今すぐ取得しようとするために、次のコードを使用しています。
int x = LOWORD(lParam);
int y = HIWORD(lParam);
効果があるかどうかはよくわかりませんが、効果があると信じています。私はどこかで、これが実際にアプリケーションに関連するのではなく、モニター自体のポインターの x 座標と y 座標を返すことを読みました。
それをアプリケーションに関連する座標に変換する方法を見つけようとして、広範囲にわたるグーグル検索を行ったとき、私はこのメソッド(または関数。私はもうJavaにいません:P)に出くわしました:
Point relativePos = theControl.PointToClient(pos);
ここで、pos は x 座標と y 座標です。このコードをぜひ試してみたいのですが、複数の問題が発生しています。
まず、ドットは C++ では機能しません。私はそれらを試しましたが、うまくいきません。第二に、Win32 では Point が定義されているとは思えません。POINT を見つけることはできますが、それが同じことかどうかはわかりません。最後に、正直なところ、ポイントを定義する方法がよくわかりません。
なぜこれが必要なのかを説明するために、ウィンドウの上部 50 ピクセルだけでウィンドウをドラッグできるようにしようとしています。
case WM_NCHITTEST:
hit = DefWindowProc(hWnd, message, wParam, lParam);
if(y < 50)
return HTCAPTION;
break;
とにかく、あなたの助けは大歓迎です。