2011-03-27 9 views
0

편집과 richedit 모두에 대해 정확한 작업을 수행하지만 후자의 경우 액세스 위반이 있습니다. 이유는 무엇입니까? tabctrl에 대해서도 같은 일이 발생합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 어떻게 작동시킬 수 있습니까?GWL_WNDPROC를 사용하여 richedit을 서브 클래 싱하는 데 문제가 있습니다.

WNDPROC OriginalProc; 

LRESULT CALLBACK MyProc(HWND h, UINT m, WPARAM w, LPARAM p) 
{ 
return OriginalProc (h, m, w, p);// access violation for common controls 
} 

// elsewhere 
HWND h = CreateWindow(....) 
OriginalProc = (WNDPROC)SetWindowLong(h, GWL_WNDPROC, (LONG)MyProc); 

나는 사전에 VC++ 6

감사를 사용하고 있습니다.

+0

['InitCommonControlsEx()'] (http://msdn.microsoft.com/en-us/library/bb775697%28VS.85%29.aspx)를 호출하는 것을 잊어 버린 적이 있습니까? –

답변

5

OriginalProc을 직접 호출하면 안됩니다. 대신 CallWindowProc을 사용하십시오.

또한 샘플에서 알기는 어렵지만 여러 창에서 OriginalProc을 사용하고 있지 않은지 확인하십시오. 여기서는 하나의 전역 변수이지만, 여러 개의 윈도우를 하위 클래스로 분류하는 것 같습니다.