修改窗体类名

1. 单文档窗体

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
   
    if( !CFrameWndEx::PreCreateWindow(cs) )
        return FALSE;

    WNDCLASS wndclass;
    ::GetClassInfo(AfxGetInstanceHandle(),cs.lpszClass,&wndclass);
    wndclass.lpszClassName=_T("CMainFrame");
    VERIFY(AfxRegisterClass(&wndclass));
    cs.lpszClass=wndclass.lpszClassName;
 
    return TRUE;
}

2. 对话框窗体

 2.1 注册新窗体类,在InitInstance()进行注册,如 RegisterDialogClass(_T("CMainFrame"));

void RegisterDialogClass(LPCTSTR szNewClassName)
{
    WNDCLASSEX wc;
    wc.cbSize = sizeof(wc);

    GetClassInfoEx(0, _T("#32770"), &wc);

    wc.style &= ~CS_GLOBALCLASS;

    wc.lpszClassName = szNewClassName;

    RegisterClassEx(&wc);
}

 2.2 修改窗体类名为新注册的类名

   .在资源视图里xxx.rc上右键选择属性,修改属性Mfc Mode为False

   .选择对话框,将属性Class Name改为CMainFrame

3.Win32项目

修改MyRegisterClass函数中的lpszClassName值,同时调用CreateWindow创建窗体时对应的lpClassName传入值为CMainFrame

ATOM MyRegisterClass(HINSTANCE hInstance)
{
	WNDCLASSEX wcex;

	wcex.cbSize = sizeof(WNDCLASSEX);

	wcex.style			= CS_HREDRAW | CS_VREDRAW;
	wcex.lpfnWndProc	= WndProc;
	wcex.cbClsExtra		= 0;
	wcex.cbWndExtra		= 0;
	wcex.hInstance		= hInstance;
	wcex.hIcon			= LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WIN32));
	wcex.hCursor		= LoadCursor(NULL, IDC_ARROW);
	wcex.hbrBackground	= (HBRUSH)(COLOR_WINDOW+1);
	wcex.lpszMenuName	= MAKEINTRESOURCE(IDC_WIN32);
	wcex.lpszClassName	= _T("CMainFrame");
	wcex.hIconSm		= LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

	return RegisterClassEx(&wcex);
}

 

  

 

  

 

     

 

你可能感兴趣的:(修改)