WMメッセージ関数の引数を変更したい – プログラミング – Home

WMメッセージ関数の引数を変更したい
 
通知
すべてクリア

WMメッセージ関数の引数を変更したい


馬元
 馬元
(@馬元)
ゲスト
結合: 20年前
投稿: 1
Topic starter  

ハジメマシテこんにちわ。

WM_XXXのメッセージを受け取る関数の WPARAM やLPARAMを
毎回キャストせずに、代入を行いたいのです。
マクロみたいなので、 WPARAMやLPARAMをintやcharに変更することが
可能ですか?


引用解決済
トピックタグ
とおりすがり
 とおりすがり
(@とおりすがり)
ゲスト
結合: 23年前
投稿: 180
 

回答ではありません。
何らかのマクロがあったとしても、そのマクロを記述するのと、(int)というように
キャストを記述するので、手間が変わるかというと疑問です。

# ちゃんとした意味のあるマクロ名で、ソースコードの可読性があがるという代物
# なら、使う価値がありますが。


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

winuser.h (windows.h からも呼ばれる)に例えばこんなものがあります。

#define MAKEWPARAM(l, h) ((WPARAM)(DWORD)MAKELONG(l, h))
#define MAKELPARAM(l, h) ((LPARAM)(DWORD)MAKELONG(l, h))

#define GET_APPCOMMAND_LPARAM(lParam) ((short)(HIWORD(lParam) &
~FAPPCOMMAND_MASK))
#define GET_DEVICE_LPARAM(lParam) ((WORD)(HIWORD(lParam) & FAPPCOMMAND_MASK)
)
#define GET_MOUSEORKEY_LPARAM GET_DEVICE_LPARAM
#define GET_FLAGS_LPARAM(lParam) (LOWORD(lParam))
#define GET_KEYSTATE_LPARAM(lParam) GET_FLAGS_LPARAM(lParam)

使われてみては(ないものについては参考にされてみては)いかがでしょう。


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

全てのメッセージ用のものがあるわけではありません。
具体的にどんなものがあるかは、ご自身でヘッダを探してみてください。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

WindowsX.h に、メッセージクラッカーってのがあります。


返信引用
RAPT
 RAPT
(@RAPT)
ゲスト
結合: 22年前
投稿: 310
 

VC++6のメッセージクラッカー。

MFCなら、AFXNSG.Hにあって、
BEGIN_MSG_MAP(CTESTDlg)
ON_WM_SIZE()
END_MSG_MAP()
void OnSize(UINT, int, int);

WTL7.0なら、atlcrack.hにあって、
BEGIN_MSG_MAP_EX(CTESTDlg)
MSG_WM_SIZE(OnSize)
END_MSG_MAP()
void OnSize(UINT, CSize);

などと書けます。


返信引用
RAPT
 RAPT
(@RAPT)
ゲスト
結合: 22年前
投稿: 310
 

typo.
> AFXNSG.H
AFXMSG.H

にありました。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

> VC++6のメッセージクラッカー。

それわメッセージ・マップって言うんでは…?
まぁ、役割は同じですが。
仕組みや使い方は多分に違う気が…


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

> WindowsX.h に、メッセージクラッカーってのがあります。

メッセージクラッカー、知らなかったです。多謝。

>> MFCならVC++6のメッセージクラッカー。
> それわメッセージ・マップって言うんでは…?
> まぁ、役割は同じですが。
> 仕組みや使い方は多分に違う気が…

御意。

(明示はありませんが)質問内容から元質問者は
MFC/WTL 等は使っていないものと認識してました。


返信引用
RAPT
 RAPT
(@RAPT)
ゲスト
結合: 22年前
投稿: 310
 

失礼。なるほど。勉強になりました。
HANDLE_MSG なんかがメッセージクラッカーと呼ばれるんですね。

WTLの場合、MSG_WM_xxx なんかがAtlCrack.hにあるから、
ON_WM_SIZE() あたりが該当するものかと思っていました。
# それとも、AtlWin.hのMESSAGE_HANDLERがメッセージクラッカーなのかな。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました