현재 하고 있는 프로젝트에서 새로운 다이얼로그를 리소스 추가해서 두개의 창으로 진행중에 있다.
하지만 여기서 종료시 치명적인 문제점이 발생하는데..
delete 했을때 OnDestroy() 로 들어가지 않는것이었다.
그로 인해 메모리 누수가 주루루......
이를 해결하는 방법이 꼼딱마 님의 블로그에 고스란히 적혀있었다.
말을 좀 인용하면, 새로 생성된 다이얼로그를 바로 delete 하게 되면 내부 핸들은 삭제가 되지않고 남아있게 되어 밑에와 같은 로고가 뜬다고 한다.
Warning: calling DestroyWindow in CDialog::~CDialog --
OnDestroy or PostNcDestroy in derived class will not be called.
그래서 프로그램 종료시 먼저 DestroyWindow(); 를 호출 해주면 깔끔히 사라지고 메모리 누수도 깔끔히~
소스코드도 발췌하면..
if( m_pTempDialog != NULL )
{
m_pTempDialog ->DestroyWindow();
delete m_pTempDialog;
m_pTempDialog = NULL;
}
'[ Topics ] > Visual Studio' 카테고리의 다른 글
MFC Edit control 에서 실수형 값 가져오는방법 (0) | 2013.11.26 |
---|---|
error C2589 에 대한 고찰과 문제 해결방법 (2) | 2013.09.05 |
MFC Dialog창을 modaless할때 포커스 옮기는법 (0) | 2013.07.30 |
MFC 다이얼로그 기반 OnIdle()과 KickIdle() 그리고 modaless (0) | 2012.09.03 |
MFC에서 글자 출력 (0) | 2010.07.29 |