2009-09-09 3 views
1

프로그램을 C에서 C++로 변환하고 있습니다. 컴파일러에서 기본적으로 __fastcall 호출 규칙을 사용하도록 설정했습니다. 나는 불만 모든 종류의 형성 얻을 ++C에서 C++로 변환하는 WNDPROC 선언 문제가 발생했습니다.

wndclass.lpfnWndProc = graph_window_handler; 

이 모든 컴파일 C.에서 그러나 C에서 근무 :

INT32 PASCAL graph_window_handler(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) 

를 나중에 내가 가진 다음과 같이

나는 선언 라인을 가지고하는 데 사용 두 번째 코드 줄에 대한 컴파일러. 원래 선언문을 WNDPROC가 포함 된 것으로 변경해야 할 것 같아요. 아마도 _cdecl을 던져 넣었을 것입니다. INT32가 있든 없든? 그러나 내가 시도하는 모든 변이가 아직도 불평하게하는 것처럼 보인다. 두 번째 라인이 불평하지 않도록 선언문을 어떻게해야합니까? - 건배.

LRESULT CALLBACK graph_window_handler(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); 

을 그리고 당신은 WinUser.h를 확인할 수 있습니다 경우 다음과 같이 WNDPROC이 형식 정의 것을 볼 수 있습니다 :

답변

5

MSDN documentation에 따르면, 그것은 다음과 같이한다 그것에 대해

typedef LRESULT (CALLBACK* WNDPROC)(HWND, UINT, WPARAM, LPARAM); 
+0

감사합니다 . "LRESULT CALLBACK"이 "WNDPROC"와 동등한/캐스트 가능한 이유는 모르겠지만 그 일을 그렇게 잘 할 수는 있습니다. – Mick

+0

추가 정보를 편집 해 주셔서 감사합니다. :-) – Mick

관련 문제