코딩을 하다가 WM_SIZE이벤트를 받아서 Resize를 하는 방법을 찾아 봤다.
막상 책에도 없는 내용이다 보니 어떻게 해야 할가 막막했지만.. 아래 처럼 하니 이상없이 동작하고 있다.
WM_SIZE이벤트를 처리 했기 때문에 WM_SIZING즉 크기 변환 중에는 동작 하지 않는다. 이점은 참고하기 바란다.
물론, Debug 모드에서만 돌려봐서 Release를 했을경우 어떤 문제가 발생하는지는 확인해보지 않았다.
방법을 보면,
1. WM_SIZE 이벤드를 ::OnSize 메서드로 링크한다.
setDisplayResize를 호출한다. 물론, 호출 하지 않고 그 부분을 붙여 넣기 해도 된다.
void CMyView::OnSize(UINT nType, int cx, int cy) { CView::OnSize(nType, cx, cy); // TODO: Add your message handler code here // Display Mode 변경 setDisplayResize( cx, cy ); }
여기에서 d3dpp(D3DPRESENT_PARAMETERS)의 속성을 바꾸어 준다.
BackBuffer의 크기를 화면 크기로 바꿔 주는 것이다.
void CMyView::setDisplayResize( int cx, int cy ) { if( m_pd3dDevice ) { m_d3dpp.BackBufferWidth = cx; m_d3dpp.BackBufferHeight = cy; } }한번씩 해본 분이라면 알 내용들이다.
'MISCELLANEOUSNESS' 카테고리의 다른 글
ERROR] C2065 잠깐의 방심은 곧 Error 대! 방! 출! (0) | 2009.12.19 |
---|---|
MFC] View를 획득하는 방법 (0) | 2009.12.12 |
2차] 컴퍼넌트 설치 완성 (0) | 2009.12.10 |