2014-03-12 4 views
0

WINAPI를 배우고 있습니다. 메시지를 받고 특정 작업을 수행하기 위해 프로그래밍하고 싶을 때. VC6.0에서 오류가 발생했습니다.WINAPI의 메시지 배포 기능에 어떤 종류의 매개 변수를 설정해야합니까?

예를 들어, wm_keydown 메시지를 받고 싶습니다. 이 같은

코드 :

// .h file 
int MainDlg_OnKeyDown(HWND hwnd,WPARAM wParam, LPARAM lParam); 

|

HANDLE_MSG(hWnd, WM_KEYDOWN, MainDlg_OnKeyDown); 

int MainDlg_OnKeyDown(HWND hwnd, int id, WPARAM wParam, LPARAM lParam) 
{ 
    return 1; 
} 

오류 :

error C2660: 'MainDlg_OnKeyDown' : function does not take 5 parameters 

있다는 HANDLE_MSG 매크로 만 4 매개 변수를 보인다. WM_COMMAND를 사용할 때 4 개의 매개 변수로 함수를 만들 수 있다는 것을 알고 있습니다.

void MainDlg_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify); 

하지만 WM_NOTIFY, WM_KEYDOWN 또는 기타 메시지는 어떻게됩니까? 메시지에 메시지 배포 기능을 만들 때 설정해야하는 매개 변수의 수와 매개 변수의 수를 어떻게 알 수 있습니까? 나는 MSDN과 google에 대한 답변을 찾지 못했습니다. 아무도이 사실을 알고 있습니까? MFC는 무엇을합니까?

+0

windowsx.h 헤더를 보시겠습니까? – Xearinox

+0

감사합니다. */ #define HANDLE_WM_KEYDOWN (hwnd, wParam, lParam, fn) \ ((hnnd), (hwnd, wParam, lParam, fn) (UINT) (wParam), TRUE, (int) (short) LOWORD (lParam), (UINT) HIWORD (lParam)), 0L) #define FORWARD_WM_KEYDOWN (hwnd, vk, cRepeat, 플래그, fn) \ void) (fn) (hwnd), WM_KEYDOWN, (WPARAM) (UINT) (vk), MAKELPARAM ((cRepeat), (flags)))'를 호출합니다. 그러나 나는 WM_NOTIFY에 대해 뭔가를 찾지 못했습니다. @Xearinox –

+0

올바르게 기억한다면 HANDLE_WM_NOTIFY는 commctrl.h에 있습니다. – Xearinox

답변

4

HANDLE_MSG 매크로는 Windowsx.h 헤더에 정의되어 있습니다.

참고 : WM_NOTIFY에 메시지 크래커를 사용하려면 commctrl.h 헤더에 정의 된 HANDLE_WM_NOTIFY 매크로를 사용해야합니다.