2010-04-26 4 views
0

사이트 및 MSDN 설명서를 살펴 보았지만 PostMessage()의 마지막 매개 변수를 이해하지 못했습니다.[C#] [Win32 API] PostMessage 도움말?

사람들이 PostMessage를 사용하는 방법을 문의하는 게시판

, 사람들은 두 가지 구현 중 하나 회신 :

  1. 를 PostMessage (WindowHandle, WM_KEYDOWN, 키 코드 MapVirtualKey (키 코드 0) < < 16);
  2. PostMessage (WindowHandle, WM_KEYDOWN, KeyCode, 0);

무엇이 다른가요? 어떤 경우에는 마지막 매개 변수를 0으로 둘 수 있지만 다른 경우에는 '옮겨야'합니다.

간단한 질문입니다. 에세이 답장은 필요 없지만 (대단히 감사하겠습니다). 모든 통찰력이 인정됩니다. 미리 감사드립니다.

답변

0

PostMessage에 대한 자세한 내용은 here을 참조하십시오. 모든 메시지가 다르며 필요한 매개 변수에 대한 자체 사양이 있습니다. 여러 측면에서 다른 함수 (메시지 이름)에 위임하고 해당 매개 변수를 전달하는 하나의 이름 (게시 메시지)으로 일반 함수로 볼 수 있습니다.

나머지 매개 변수는 메시지와 관련이 있으며 다를 수 있습니다. 단지 높은 16 비트의 lParam에 MapVirtualKey 결과 필요 WM_KEYDOWN 첫 번째 메시지에

BOOL PostMessage(
    __in HWND hWnd, 
    __in UINT Msg, 
    __in WPARAM wParam, 
    __in LPARAM lParam 
); 

. 나는이 메시지가 더 이상 familliar 아니지만, 무슨 일이 벌어지고 있는지는 0이 두 번째 매개 변수로 전달되기 때문에 코드를 스캔 할 가상 키가 없으며 (또는 그 반대로도) 번역이 필요하다는 것을 의심 할 수 있습니다. 그러나 키 코드는 다음과 같습니다. lParam의 상위 16 비트에 여전히 필요합니다.

+0

Perfect. 시간 내 줘서 고마워. – Rudi