MFC Class 이름 변경
(펌) https://www.codeproject.com/Articles/196354/Provide-Your-Custom-Class-Name-to-your-MFC-Applica
위 예제는 SDI, Dialog base 2가지에 대해서 있다. 그중에 SDI 쪽은 정상적으로 Class Name이 변경 되고 build해서
실행되지만, Dialog Base 쪽은 정상적으로 동작 하지 않더라.
MFC 로 만든 프로그램의 Class를 변경할 일이 자주는 없는데, 간혹 있더라...
필요할때, 잘 적용하길~, 핵심 코드는 아래에 추가
(SDI)
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// Just clear the styles we don't want.
cs.dwExStyle &= ~WS_EX_CLIENTEDGE;
// 요기부터가 핵심
// Check if our class is already defined
LPCTSTR pszClassName = _T("OwnClassName");
WNDCLASS wndcls;
if (!::GetClassInfo(AfxGetInstanceHandle(), pszClassName, &wndcls))
{
// Get the current requested window class
VERIFY(GetClassInfo(AfxGetInstanceHandle(), cs.lpszClass, &wndcls));
// We want to register this infos with our name
wndcls.lpszClassName = pszClassName;
// Need to preset the icon otherwise the function GetIconWndClass
// calling us will overwrite our class.
LPCTSTR pszIcon = MAKEINTRESOURCE(IDR_MAINFRAME);
HINSTANCE hInst = AfxFindResourceHandle(pszIcon, ATL_RT_GROUP_ICON);
_ASSERTE(hInst!=NULL);
wndcls.hIcon = ::LoadIcon(hInst, pszIcon);
// Register our class now and check the outcome
if (!::RegisterClass(&wndcls))
{
_ASSERTE(!__FUNCTION__ "RegisterClass failed");
return FALSE;
}
}
// Now use our class
cs.lpszClass = pszClassName;
return TRUE;
}
MFC SDI 로 만든건 class name이 아래 처럼 나오던데~ 이렇게 하면 원하는 class name으로 변경가능하다.
"AFx00..."