MFC에서 AfxMessageBox를 이용해서 팝업 메시지를 띄우면 exe파일의 이름을 타이틀로 사용합니다.
MFCTest.exe에서 AfxMessageBox를 사용하면 다음과 같이 타이틀이 표시됩니다.
AfxMessageBox(_T("Popup Test"));
화면에 다음과 같이 표시가 됩니다.
MFCTest라는 타이틀로 표시가 됩니다.
기본적인 타이틀 대신 새로운 타이틀로 사용하는 방법은 다음과 같습니다.
1. exe 파일명 변경
가장 간단한 방법은 exe 파일명을 변경하는 방법입니다.
이 방법은 간단하지만 exe 파일명과 다른 타이틀을 사용하고 싶을 때는 사용할 수 없습니다.
2. Resource의 String Table에 AFX_IDS_APP_TITLE을 추가
String Table에 AFX_IDS_APP_TITLE이라는 ID를 추가합니다.
그리고 문자열을 입력하면 해당 문자열로 표시가 됩니다.
3. CWinApp의 생성자에 NULL 종료 문자열을 전달
프로젝트를 생성하면 프로젝트명과 동일한 cpp와 h 파일이 생깁니다.
MFCTest 프로젝트를 생성하면 MFCTest.h 파일이 존재합니다.
파일을 확인하면 다음과 같이 CWinApp을 상속받는 클래스를 확인할 수 있습니다.
class CMFCTestApp : public CWinApp
F12를 눌러서 CWinApp 클래스의 모양을 확인하면 다음과 같은 생성자를 확인할 수 있습니다.
// Constructor explicit CWinApp(LPCTSTR lpszAppName = NULL); // app name defaults to EXE name
기본적으로 NULL값이 전달됩니다.
MFCTest.cpp 파일에서 CMFCTestApp을 생성하는 부분을 다음과 같이 변경하면 됩니다.
CMFCTestApp::CMFCTestApp() : CWinApp(_T("New Title"))
명시적으로 CWinApp에 문자열을 전달하면 해당 문자열로 표시가 됩니다.
4. CWinApp의 m_pszAppName 직접 수정
m_pszAppName은 AppName 정보를 가진 CWinApp의 멤버 변수입니다.
이 값을 직접 수정하면 되는데 다음과 같이 수정하면 종료시에 문제가 발생합니다.
m_pszAppName = _T("My Title");
m_pszAppName이 malloc으로 할당된 메모리를 참조하고 있기 때문입니다.
그래서 종료가 될 때 free를 호출해서 메모리를 해제합니다.
바꾸기 위해서는 다음과 같이 해야 합니다.
free((void*)m_pszAppName); m_pszAppName = _tcsdup(_T("New Title"));
먼저 기존의 메모리를 해제하고 malloc을 사용하는 _tcsdup을 사용해서 새로운 문자열을 입력합니다.
위와 같은 방법은 통해서 AfxMessageBox의 타이틀을 변경할 수 있습니다.
추가로 다음과 같이 Dialog에서 임시로 변경해서 사용이 가능합니다.
LPCTSTR pAppNameTemp = AfxGetApp()->m_pszAppName; AfxGetApp()->m_pszAppName = _T("My Temporary Title"); AfxMessageBox(_T("Test!!!")); AfxGetApp()->m_pszAppName = pAppNameTemp;
주소를 백업한 이후에 임시로 변경한 이후에 다시 복원시키는 방법입니다.
'Programming > Win32&MFC&COM' 카테고리의 다른 글
IDesktopWallpaper를 활용한 윈도우 배경화면 변경하기 (0) | 2015.08.25 |
---|---|
Visual Studio 2012 Update 1 다운로드(XP 호환성 문제 해결) (0) | 2015.08.16 |
IAutoComplete를 이용한 자동 완성(Auto Complete) 기능 구현 (0) | 2015.08.14 |
라디오 버튼의 Warning: skipping non-radio button in group. 경고 제거 (0) | 2015.08.13 |
DLL을 dumpbin으로 볼 때 함수명 = _함수명 형태로 나올 때 (0) | 2015.08.12 |