그런데 윈도우 핸들을 얻어오려고 this->Handle을 부르자 마자 에러가 발생한다.
어떨떨하다. 왜냐하면 이 Get멤버의 설명을 보면 생성되지 않은 경우에는 즉시 생성해서 반환한다고 나와있지 생성되지 않은 경우에 에러가 발생한다고 나와있지 않기 때문이다.
여기 저기 프로그램을 뜯어본 결과 (해당 함수와 관련되지 않은 부분들을 뜯어본게 도움이 되었다. 사실 관련되지 않은 부분들을 살펴본다는게 제정신으로 하기는 힘든일이지만, 경험적으로 보았을때 프로그램에서 에러가 나는 이유는 뜻밖의 위치에 있기도 하였다. 그게 프로그래밍이라는 일을 힘들게 하는 한가지 이유이기도 하다) 내가 WndProc를 불러서 이것 저것 하다가,
부모 클래스의 WndProc를 불러주지 않고 있다는걸 알았다. 원래는 오버라이드 하면 부모 클래스의 것을 불러주는게 당연하지만, 그렇지 않더라도 오류가 나지 않는 여러 함수와 달리, 이 놈의 경우에는 부모 클래스를 불러주지 않으면 윈도우 콜이 뒤죽박죽이 되어버리는 듯하다.
원래 생성자에서 잘 불리던 함수가 WndProc를 잘못 쓴 경우에는 작동하지 않는다. 결국 어떤 경우에는 WndProc가 생성자보다 더 빨리 불리는 경우도 있다는 뜻인것 같다.위의 생각은 잘못된 것이었다. 확인해 보니 생성자에서 부른 어떤 함수가 WndProc를 호출한다. 그러니 내가 다루지 않은 콜을 부모에 넘기지 않으면 오류가 나는게 당연하다.
너무 당연한 걸 쓰고보니 결론을 못 내리겠다. 어쨋든 저쨋든 그렇다는 사실.