| 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 
    DialogのWindowHandle , &msg ) //Modeless Dialogの無い場合はこの部分はいらない |  
    |  |  |  |  | TranslateMessage(&msg); |  
    |  |  |  |  | DispatchMessage(&msg); |  
    |  |  |  | } //Modeless Dialogの無い場合はこの部分はいらない |  
    |  |  | } |  
    |  |  | else{ |  
    |  |  |  | break; |  
    |  |  | } |  
    |  | } |  
    | } |  |