
いつもお世話になっております。
WinXP,SDKです。
WM_LBUTTONDOWN時に、別なウィンドウへ移動メッセージを出しています。
SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0);
ただ、受け取り側のウィンドウでは
WM_EXITSIZEMOVE時にのみ処理を行っています。
マウスを左クリックし、押したままの状態で移動した時はWM_EXITSIZEMOVEが有効ですが、マウスを左クリックしてすぐに離した時はWM_EXITSIZEMOVEメッセージは来ない為に結果がおかしくなります。
左クリック後にすぐに離した時は
SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0);
このメッセージは送らないようにしたいのですが、どのようなタイミングでどうチェックすれば良いでしょうか?
ウィンドウの移動をさせたいので、どうしても左クリックと同時に移動メッセージは出したいのです。
でも、まったく移動されずにマウスを離された時に困ります。
WM_MOSEMOVE時にMK_LBUTTONをチェックして処理をしてみましたが結果は一緒でした。
移動開始の左クリックなのか、シングルクリックなのかが分かればいいような気がするのですが、それもどのように知ることが出来るか分かりません。
アドバイスをお願い致します。
No.1ベストアンサー
- 回答日時:
こんばんは。
どうやら、色々バグがある様です。
SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0);
はそのままで、WM_EXITSIZEMOVEと同時にWM_SETCURSORも追加して見て下さい。
//移動ウィンドウのプロシージャ
LRESULT CALLBACK WndProcMove(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
POINT pt = {0};
RECT rc = {0};
switch(uMsg)
{
case WM_SETCURSOR://クリックだけで離されると此れが送られる(ココを追加)
case WM_EXITSIZEMOVE://移動されて話されると此れが送られる
//アプリウィンドウの外側に居るので浮揚する
if(!::IsMouseIn(s_data.hWndApp))
{
::TransformWindow(s_data.ftb.hWndFloat, s_data.ftb.hWndMove, WS_OVERLAPPEDWINDOW, WS_EX_TOOLWINDOW);
}
else//アプリウィンドウの内側に居るので着地する
{
//着地点を決める
pt = GetLandWindowPointHelper(&s_data);
::TransformWindow(s_data.ftb.hWndLand, s_data.ftb.hWndMove, WS_BORDER, 0, &pt);
}
break;
}
return ::DefWindowProc(hWnd, uMsg, wParam, lParam);
}
前回のアドバイスも本当にありがとうございました。
使わせて頂いています。
WM_SETCURSOR を追加したところ、ツールバーが後に行ってしまう事がなくなりました!
助かりました。
いつもありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
他のウィンドウのボタンを自動...
-
vbaから他のアプリを終了
-
WM_NCLBUTTONUPについて
-
VBでRegisterWindowMessage関数...
-
グラフの交点の求め方(Excel)
-
コンボボックス内の文字サイズ変更
-
ダイアログのスクロールバー
-
勝手にウィンドウが開いて止ま...
-
win32api 画面のちらつき
-
エクセルで作った新しいウイン...
-
画面がチカチカする
-
Exelを開く時に困っています
-
マインクラフト(pc版)で座標...
-
図形が重なりあっているかどうか
-
画面リサイズ時のちらつきをな...
-
ちらつきについて
-
3次元空間における平行回転移動...
-
エクセル - リストボックスのマ...
-
「アイテムは収集されました」...
-
タスクトレイからのバルーン表示
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vbaから他のアプリを終了
-
SetWindowText関数について
-
他のウィンドウのボタンを自動...
-
メッセージボックスの選択ボタ...
-
msgboxの表示位置
-
VBAでコントロールのハンドルを...
-
メッセージハンドラ
-
点滅で知らせる方法
-
ウインドウが閉じたことを知る方法
-
SendMessage で ESC など
-
キーボード・フックのアプリを...
-
VB.netでFindWindowExやると・...
-
WM_NCLBUTTONUPについて
-
WINAPI 他のウインドウを重ね...
-
システム例外のメッセージを変...
-
VBでRegisterWindowMessage関数...
-
デスクトップ上のアイコンの位...
-
チェックボックスのキーダウン...
-
VBでRegisterWindowMessage関数...
-
C# の MDI
おすすめ情報