0

カスタム描画された WPF ウィンドウに対して手動で Windows メッセージを送信する必要があります。具体的には、ユーザーがタイトル バーでマウスを離したときに、手動でWM_NCLBUTTONDOWNメッセージを送信する必要があります。

これまでのところ、私は持っています:

[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);

楽しい部分は、lParam に入れる値を取得することです。マウスの X 座標と Y 座標を表す Int32 (DWORD) である必要があります。

必要な構造を作成するためのマクロが定義されていますが、役に立ちません。だから、質問はこれです:

WPF ウィンドウで、lParam 引数として渡された正しい値を使用してこのメ​​ッセージを正しく起動するにはどうすればよいですか?

4

2 に答える 2

3
lParam = x | (y << 16);

x と y は座標です。

メッセージから値を抽出するには:

int x = lParam & 0xFFFF;
int y = (lParam >> 16) & 0xFFFF;
于 2013-02-27T12:20:22.867 に答える
2

もう1つの答えは、複数のモニターがある場合に表示される可能性のある負のマウス座標では失敗します。私はこれがうまくいくと思います:

int lParam = (ushort)x | (y << 16);

x = (short)lParam;
y = (short)(lParam >> 16);
于 2013-02-27T17:05:30.937 に答える