2017. 3. 10. 16:56ㆍIT-개발/winapi 및 MFC
(펌) 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..."
'IT-개발 > winapi 및 MFC' 카테고리의 다른 글
(펌) Visual Studio 2010 ATL DLL 빌드 오류 - error MSB8011 (0) | 2018.02.13 |
---|---|
(펌) DLL의 리소스 사용하기 (0) | 2018.02.13 |
파일이동 - sample - SHFileOperation (0) | 2017.03.03 |
OS - x64 - GetSystemDirectory (펌) (0) | 2017.02.22 |
Window Version 구하기 (0) | 2017.02.16 |