2011-02-10 1 views
1

WndProc을 사용하지 않고 창을 만들 수있는 것은 궁금합니다.wndproc이없는 창

그래서 NULL로 설정된 lpfnWndProc 필드가있는 창 클래스를 등록하고 싶습니다. 그리고 내 자신의 방식으로 TranslateMessage (& 메시지)에 의해 주어진 msg를 사용하십시오.

이 단점이 있습니까?

미리 감사드립니다. 내 문법에 대해 유감스럽게 생각합니다.

편집 # 1 : 좋아요, 창문이 있지만 어딘가 잘못되었습니다.

MSG msg; 
    while(PeekMessage(&msg,NULL,NULL,NULL,PM_REMOVE)) { 
     if (msg.message == WM_QUIT) return false; 
     else { 
       TranslateMessage(&msg); 
       switch (msg.message) { 
       case WM_CREATE: 
        createContext(); 
        break; 
       default: 
        DispatchMessage(&msg); 
        break; 
       } 
     } 
    } 
    return true; 

createContext가 호출되지 않습니다. 왜? 내가 틀린 곳? 예, WM_CREATE 메시지가 WndProc (DefWindowProc now)로 보내지지만 WndProc에서 외부로 가져올 수있는 방법이 있습니까?

+2

이것은 매우 특별한 종류의 창과 관련이 있습니다. 왜 그걸하고 싶니? 아마도 더 적합한 다른 접근법이있을 것입니다. – Mac

+0

대부분 호기심. –

답변

6

AFAIK로 설정하면 NULL으로 설정할 수 없습니다. 그러나 DefWindowProc의 서명이 WindowProc 콜백의 서명과 일치 함을 알 수 있습니다. 적당한 기본값을 원하면 DefWindowProc으로 지정하십시오.

+0

고마워, 나는이 해결책을 갈 것이다. –

2

죄송합니다. wndproc이 없으면 어떻게 메시지를 얻을 수 있습니까?

창이없는 창 proc은 창이 아닙니다!

2

아니요, SendMessage()를 위반하게됩니다. PostMessage() 만 작동 할 수 있습니다. SendMessage를 지원해야합니다.