修改基于对话框的MFC程序的主窗口类名

来源:互联网 发布:蜂蜜在淘宝上好卖吗 编辑:程序博客网 时间:2024/05/16 18:43

在单文档对象模型中修改主窗口的类名只需 重载 PreCreateWindow 函数,并在其中填写如下代码即可

//BOOL CReporterDlg::PreCreateWindow(CREATESTRUCT& cs)//{//// TODO: 在此添加专用代码和/或调用基类//cs.lpszClass = "MyClassName";//return CDialog::PreCreateWindow(cs);//}

但对于基于对话框模式的MFC程序而言,打断点调试查看,重载的这个函数根本不被调用,所以如此修改就没有任何作用了

可以这样修改基于对话框的MFC的程序的类名

1、取消 Enable MFC Features

vc6.0 如下修改

VS2005 修改如下图

2、填写新的类名

vc++6.0

VS2005

 

 

3、注册MyClass窗口

BOOL CReporterApp::InitInstance(){if ( CheckAppIsOpen() ){return FALSE;}// 如果一个运行在 Windows XP 上的应用程序清单指定要// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,//则需要 InitCommonControlsEx()。否则,将无法创建窗口。INITCOMMONCONTROLSEX InitCtrls;InitCtrls.dwSize = sizeof(InitCtrls);// 将它设置为包括所有要在应用程序中使用的// 公共控件类。InitCtrls.dwICC = ICC_WIN95_CLASSES;InitCommonControlsEx(&InitCtrls);CWinApp::InitInstance();AfxEnableControlContainer();// 标准初始化// 如果未使用这些功能并希望减小// 最终可执行文件的大小,则应移除下列// 不需要的特定初始化例程// 更改用于存储设置的注册表项// TODO: 应适当修改该字符串,// 例如修改为公司或组织名//SetRegistryKey(_T("Tescomm Reporter"));WNDCLASS wndMyClass;::GetClassInfo(AfxGetInstanceHandle(), "#32770", &wndMyClass);
//这是为了获取模板中的设定好的窗口的大小,风格信息wndMyClass.lpszClassName = "MyClass";
//填写一个我们自己的类名,和上面资源中填写的名字要一致AfxRegisterClass(&wndMyClass);
//注册新的类名,这些要在新的对话框使用前实现CReporterDlg dlg;m_pMainWnd = &dlg;INT_PTR nResponse = dlg.DoModal();if (nResponse == IDOK){// TODO: 在此处放置处理何时用“确定”来关闭//  对话框的代码}else if (nResponse == IDCANCEL){// TODO: 在此放置处理何时用“取消”来关闭//  对话框的代码}// 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,//  而不是启动应用程序的消息泵。return FALSE;}


 

原创粉丝点击