본문 바로가기

MFC/기타

[MFC] GetModuleFileName 이용하여 현재 실행 경로 얻기 ※ 요약 API함수 GetModuleFileName를 이용하여 현재 실행중인 실행 파일의 경로를 얻는 방법이다. 자주는 아니지만 실행 중인 파일의 경로가 필요할때가 있는데 그럴때 사용하면 되며, 필자는 보통 프로그램 시작시 실행 경로를 얻고, 필요할 때마다 사용하는 편이다. ※ 소스CString CAdoTestDlg::GetExecutedPath( ) { CString strResult; CString strPath; if( GetModuleFileName( nullptr, strPath.GetBuffer(_MAX_PATH + 1), MAX_PATH ) != FALSE ) { strPath.ReleaseBuffer( ); strResult = strPath.Left( strPath.ReverseFind(.. 더보기
MFC 모달리스 창 띄워져 있나 확인하는 방법 모달리스 창이 떠 있나 조사하려는 곳에 아래의 소스를 입력하면 확인할 수 있습니다. "m_ProgramStatDlg"만 자신에게 맞는 객체명으로 바꿔주면 됩니다. ※소스 if( m_ProgramStatDlg != NULL && m_ProgramStatDlg->IsWindowVisible() == TRUE ) { printf("모달리스 창이 떠 있습니다.\n"); } else { printf("모달리스 창이 안 떠 있습니다.\n"); } 저는 임시로 "오류 알림" 버튼에 위의 소스를 넣었습니다. 더보기
[MFC] Enter/ESC 키 방지 CDialog 클래스를 상속받아 만들어진 윈도우는 Enter와 ESC 키에 윈도우가 닫히는 특징이 있습니다. 이런 현상을 방지하려면 가상 함수인 PreTranslateMessage 함수에 WM_KEYDOWN 메시지를 검사해서 누른 키가 Enter나 ESC면 처리하지 않고 반환하게 하면 됩니다. BOOL TestDlg::PreTranslateMessage( MSG* pMsg ) { if( pMsg->message == WM_KEYDOWN && (pMsg -> wParam == VK_RETURN || pMsg -> wParam == VK_ESCAPE) ) { pMsg->wParam = NULL; } return CDialog::PreTranslateMessage( pMsg ); } 더보기