メッセージの送り方が、わからなく質問させていただきます。
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
case WM_COMMAND:
switch(LOWORD(wp)){
case ID_LIST: //リストボックスのID
if(HIWORD(wp) == LBN_SELCHANGE){
}
break;
break;
このとき、LBN_SELCHANGEにメッセージを送りたいのです。
どのようにすれば、よいのでしょうか?
分かる方がいましたら、ご指導お願いします。
> このとき、LBN_SELCHANGEにメッセージを送りたいのです。
このときとは?
書かれているのはメッセージを受け取るほうなのでは?
LBN_SELCHANGEのメッセージを受け取る側から
再度LBN_SELCHANGEを送るのですか?
Blueさん、返信ありがとうございます。
このときというのは、ここに書いたプログラムのときということで、別な場所からここに書いた、LBN_SELCHANGEへメッセージを送りたいのです。
わかりにくく書いてしまってすいませんでした。
> ここに書いたプログラムのときということで、別な場所からここに書いた、LBN_SELCHANGEへメッセージを送りたいのです。
ならばウィンドウプロシージャのソースを載せる必要はなかったかと。
WM_COMMANDをSendMessageすればいいのでは?
WPARAM,LPARAMは
> switch(LOWORD(wp)){
> case ID_LIST: //リストボックスのID
> if(HIWORD(wp) == LBN_SELCHANGE){
> }
> break;
の処理をしているくらいだからわかりますよね?
Blueさん、返信ありがとうございます。
自分も、WM_COMMANDをSendMessageすれば、いいというのは思いついたのですが、
SendMessage(hWnd,WM_COMMAND,ID_LIST,LBN_SELCHANGE);
そして、LPARAMも処理するようにしました。
これで、いいのでしょうか?
いちおは、動いていますが自信が、ないのです。
#Blueさんは、添削請負人ではありません
↓ではダメ?
case WM_COMMAND:
switch(LOWORD(wp)){
case ID_LIST: //リストボックスのID
if(HIWORD(wp) == LBN_SELCHANGE){
// ここにダミーコード入れて、ブレークポインタを設定
}
break;
break;
HIWORD( wp ) = LBN_SELCHANGE
で
LOWORD( wp ) = ID_LIST
ということなので
wp の値がどんなものかわかると思いますが。
lp は リストボックスのウィンドウハンドルです。
よって
SendMessage( hWnd,
WM_COMMAND,
MAKEWPARAM( ID_LIST, LBN_SELCHANGE ),
reinterpret_cast< LPARAM >( hListBoxWnd ) );
です。
やっと、解決することができました。
みなさん、本当にありがとうございました。
ツイート | ![]() |