ダイアログボックス上ではなくウィンドウズ上で
ボタンを配置して
マウスクリックにより、ボタンがメッセージを受け取るには
CASE WM_COMMAND:
if(LOWORD(wParam) == ID_BUTTON)
{
ボタン処理
}
return 0;
ですがこのマウスクリック処理をしないで
マウスがボタン領域内に入った時に
マウスクリックするようなプログラムを教えてください
CASE WM_MOUSEMOVE:
mPos.x = LOWORD(lParam);
mPos.y = HIWORD(lParam);
if (PtInRect(&ボタン領域,mPos) == TRUE)
{
ボタンクリック
}
return 0;
上記のボタンクリックの仕方を知りたいです
よろしくお願いします
mouse_eventでgoogleあたりを検索すればいいかな。
できるかどうかは試してませんが(^^;
ボタンクリックの処理だけでよければ、SendMessage()でいけるかと。
> ですがこのマウスクリック処理をしないで
> マウスがボタン領域内に入った時に
> マウスクリックするようなプログラムを教えてください
本当にマウスクリックを再現しないといけないのですか?
例えば,
void mouseClickFunc (HWND hWnd)
{
// マウスクリック処理
}
という関数を切り出しておいて,
case WM_COMMAND:
if (LOWORD(wParam) == ID_BUTTON) {
mouseClickFunc(hWnd);
}
return 0;
case WM_MOUSEMOVE:
mPos.x = LOWORD(lParam);
mPos.y = HIWORD(lParam);
if (PtInRect(&ボタン領域, mPos)) {
mouseClickFunc(hWnd);
}
return 0;
というコードではだめですか?
> if (PtInRect(&ボタン領域,mPos) == TRUE)
PtInRectの戻り値はTRUEかFALSEかではなく,非0か0かです。
http://msdn.microsoft.com/library/en-us/gdi/rectangl_1644.asp
Cの伝統として,TRUEとの比較は行わないのが普通です。
今回の場合だと,mPosがボタン領域の内部を指す場合でも1でない値,
例えば2を返す可能性を否定できないからです。
qpさん、RAPTさん、YuOさんありがとうございます。
>YuOさん
はい、マウスクリックを再現したいのです
ボタン領域に入りましたら、ボタンをクリックするようにしたいのです
(押し込みボタングラヒィックを再現するてもありますが・・)
PtInRectの戻り値は0か否かですね;
すみませんでした;
1以外の値が帰ってきた場合は失敗してしまいますね;
ツイート | ![]() |