Google

東海大学理学部物理学科素粒子理論・安江研究室  

ホーム 最新情報 サイトマップ

メッセージ送信機能

上へ 始まり 準備 登録 作成 初期設定 メッセージ処理 画面出現 画面描画 メッセージ送信機能 終了処理 登録抹消 詳細説明

【9】 メッセージ送信用機能付加

BOOL PeekMessage(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg);

(*)アイドル状態で何もしてないときには0を返す⇒バッググラウンド処理ができます

BOOL GetMessage(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax);

(*)終了時のWM_QUITその他のよく使うメッセージ)を受け取ると0を返します⇒終了します。

  • lpMsg:メッセージを受け取るためのMSG構造体のアドレス(Pointer)を指定
  • hWnd:CreateWindow関数から返された値
  • wMsgFilterMin: 処理するメッセージの最初の値(WM_で始まる)
  • wMsgFilterMax: 処理するメッセージの最後の値(WM_で始まる)
  • wRemoveMsg: 受け取ったメッセ−ジをどうするの?
    • PM_NOREMOVE メッセージが着たことを確認するのみ.
    • PM_REMOVE 着いたメッセージ゙を消してしまいます

wMsgFilterMin=wMsgFilterMax=0の時はすべてのメッセージを処理する

メッセージをウィンドウズへ送信するために、自分でそのメッセージ処理機能をつけないといけません。

通常の定型処理

while(GetMessage(&msg, NULL, 0, 0)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}

ModelessDialog(CreateDialogで作成します)のある場合

while(GetMessage(&msg, NULL, 0, 0)){
if(!IsDialogMessage(本体に行ったりダイアログに行ったりできるダイアログModeless Dialogウィンドウズハンドル, &msg )
TranslateMessage(&msg);
DispatchMessage(&msg);
}

バックグランド処理がある場合の例

while(1){
if(バックグランド処理){
if(!PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)){
if(msg.message == WM_QUIT){
break;
}
}
else{
バックグランド処理をします
}
}
else{
if(GetMessage(&msg, _ZERO, _ZERO, _ZERO)){
if(!IsDialogMessage(本体に行ったりダイアログに行ったりできるダイアログModeless DialogWindowHandle , &msg ) //Modeless Dialogの無い場合はこの部分はいらない
TranslateMessage(&msg);
DispatchMessage(&msg);
} //Modeless Dialogの無い場合はこの部分はいらない
}
else{
break;
}
}
}
目次へ戻る

前へ ホーム 上へ 次へ

このWeb サイトではインターネットエクスプローラVer.3.0あるいはそれ以上が推奨です Internet Explorer
この Web サイト(since 1997年12月1日)に関する質問やコメントについては、Mail.gif (4196 バイト)安江 まで電子メールをお送りください。
Copyright © 1997-2022/10 東海大学理学部物理学科安江研究室 All rights reserved
最終更新日: 2022年10月14日
マイクロソフト Front Page98