※ 요약
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( '\\' )+1 );
	}
	else
	{
	}

	return strResult;
}

※ 값 확인

아래와 같이 멤버 함수를 작성하였고, 값을 확인하기 위해 임시로 OnInitDialog 함수에서 호출하도록 했다.


아래와 같이 실행중인 파일의 경로를 확인할 수 있다.



'MFC > 기타' 카테고리의 다른 글

MFC 모달리스 창 띄워져 있나 확인하는 방법  (0) 2013.12.01
[MFC] Enter/ESC 키 방지  (0) 2013.10.14



모달리스 창이 떠 있나 조사하려는 곳에 아래의 소스를 입력하면 확인할 수 있습니다.

"m_ProgramStatDlg"만 자신에게 맞는 객체명으로 바꿔주면 됩니다.


※소스

if( m_ProgramStatDlg != NULL && m_ProgramStatDlg->IsWindowVisible() == TRUE )
{
	printf("모달리스 창이 떠 있습니다.\n");
}
else
{
	printf("모달리스 창이 안 떠 있습니다.\n");
}


저는 임시로 "오류 알림" 버튼에 위의 소스를 넣었습니다.


'MFC > 기타' 카테고리의 다른 글

[MFC] GetModuleFileName 이용하여 현재 실행 경로 얻기  (0) 2016.03.16
[MFC] Enter/ESC 키 방지  (0) 2013.10.14

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 );
}

+ Recent posts