痔になりやすい生活習慣とは?

マウスの動きをキャッチする

myProc(hWnd, WM_NCHITTEST, なし, 座標)に送られる

myProc内で処理されなく、最後のreturn DefWindowProc(hWnd, WM_NCHITTEST, なし, 座標)が返される

すると戻り値はLRESULT型で、その内容はHTCAPTIONやHTCLIENTである

ここで問題、このHTなんとかという戻り値って、次はどこにもってかれて、どういう処理をされてWM_LBUTTONDOWNとかのメッセージになるんですか?
HTなんとかの戻り値には、座標が含まれていないのに、どうやってWM_LBUTTONDOWNと座標とのメッセージに繋げられるんでしょう。

A 回答 (1件)

>myProc(hWnd, WM_NCHITTEST, なし, 座標)に送られる



送られるというかシステムがウィンドウに送ってるんですよね。
ということはシステムは既に座標を知っているということです。

で、WM_NCHITTESTを処理した結果でシステムが期待しているのはHT??の戻り値だけで十分ってことですね。
    • good
    • 0
この回答へのお礼

なるほど。
なんかちょっと細かい部分を知りたい気がしますけど、理解できないこともないです。(もう少しつっこむだけですごく難しくなりそうだし)

ありがとうございました。

お礼日時:2005/03/28 18:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QWM_SIZEとWM_SIZINGの違い (Win32API)

Windowsプログラミングで、画面のサイズを変更したときに送られてくるメッセージで、
WM_SIZEで処理するのとWM_SIZINGで処理するのとでは何が違うのでしょうか?
WM_SIZEとWM_SIZINGの違いは何なのでしょうか?

また、似たようなものでWM_MOVEとWM_MOVINGの違いも教えてもらいたいです。

Aベストアンサー

実際にプログラムを書いてみれば、両者の違いは明白になるでしょう。

WM_SIZE は「サイズの変更後に」メッセージがアプリケーションに飛んでくるので、
ウィンドウのコーナーからマウスを離した時に文字がビョンと移動します。

Windows98 くらいまではウィンドウのサイズの変更はまずは輪郭だけサイズが変って
マウスをコーナーから離した時にウィンドウの中身が再描画されていたので、
WM_SIZE のメッセージハンドラを実装することになったでしょう。

しかし最近のインターフェイスはサイズ変更中もズリズリとウィンドウの中身が
再描画され続けます。これには WM_SIZING のメッセージハンドラを実装して、
サイズ変更中常に文字列の再描画を繰り返す必要があるでしょう。

Qc言語win32apiで孫ウインドウからメッセージ処理ができません。

c言語win32apiで孫ウインドウからメッセージ処理ができません。
親ウインドウを作りその中に子ウインドウを作りさらに孫ウインドウを作りました。
以下のような感じです。
--
親ウインドウ(A)親はNULL

子ウインドウ(B)親はA

孫ウインドウ(C、プッシュボタン)親はB

で、孫ボタンをクリックしたらwindprocにWM_COMMANDメッセージが飛ぶと思っていたんですが
まったく反応しません。
試しに親をAに変更したらちゃんと動きました。
孫ウインドウからwindprocにメッセージを飛ばすにはどうしたらいいんでしょうか。
それとも何か特別な方法があるんでしょうか。
開発環境はVC++ExpressEdition2008を使っています。

Aベストアンサー

>1の方法ですがそんな事が出来るんですか!?
>具体的な手法かもしくは参考ページとかあったら教えていただけないでしょうかm(_)m

実際のやり方としては2とそんなに違いはないかと思います。
子ウィンドウが具体的には何かが記述されていないので一般的な回答になりますが・・・

1.元の子ウィンドウのwndprocをGetWindowLongで取得する。
2.新しいwndprocを子ウィンドウに対してSetWindowLongで設定する。
3.新しいwndprocでは孫ウィンドウのWM_COMMANDメッセージを処理する。それ以外はCallWindowProcで元のwndprocを呼び出して処理させる。

これでサブクラス化するはずです。
1.の処理は2.のSetWindowLongの戻り値を利用することもできます。

1の方法は、孫ウィンドウのWM_COMMANDメッセージを受け取ったら、親ウィンドウに対してSendMessageでメッセージを送信する・・・という意味です。こちらも結局サブクラス化してますね・・・

2の方法は、何らかの方法で親ウィンドウハンドルを孫ウィンドウでアクセスできるようにしておく必要があります。

>1の方法ですがそんな事が出来るんですか!?
>具体的な手法かもしくは参考ページとかあったら教えていただけないでしょうかm(_)m

実際のやり方としては2とそんなに違いはないかと思います。
子ウィンドウが具体的には何かが記述されていないので一般的な回答になりますが・・・

1.元の子ウィンドウのwndprocをGetWindowLongで取得する。
2.新しいwndprocを子ウィンドウに対してSetWindowLongで設定する。
3.新しいwndprocでは孫ウィンドウのWM_COMMANDメッセージを処理する。それ以外はCallWindo...続きを読む


人気Q&Aランキング