一、修改主窗口类名(推荐)
修改资源文件
在资源视图的`.rc`文件中,右键选择目标窗口(如`CMainFrame`),将`Class Name`属性修改为自定义名称(如`MyClassName`)。
编译后需在代码中注册新类名:
```cpp
WNDCLASS wc;
GetClassInfo(AfxGetInstanceHandle(), _T("32770"), &wc);
wc.lpszClassName = _T("MyClassName");
AfxRegisterClass(&wc);
```
适用于需要全局修改所有此类窗口的情况。
重载`PreCreateWindow`函数
在`CMainFrame`类中重载`PreCreateWindow`,修改`CREATESTRUCT`的`cs.style`属性,去掉`FWS_ADDTOTITLE`标志,并设置自定义标题:
```cpp
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) {
if (!CFrameWnd::PreCreateWindow(cs)) return FALSE;
cs.style &= ~(FWS_ADDTOTITLE);
m_strTitle = _T("自定义标题");
return TRUE;
}
```
适用于仅修改主窗口标题的情况。
二、修改对话框窗口类名
修改资源模板
在资源视图的`.rc`文件中,为对话框定义一个资源模板,指定自定义类名(如`MyDialogClass`)。
编译时强制加载该资源模板(需在项目属性中设置)。
动态修改类名
使用`AfxRegisterClass`动态注册新类名(需在`main.cpp`或`CWinApp`中注册)。
三、修改窗口标题(非类名)
使用`SetWindowText`函数修改窗口标题:
```cpp
SetWindowText(_T("新窗口标题"));
```
适用于仅需修改标题栏文本的情况。
四、注意事项
多文档界面(MDI)程序
若主窗口为MDI子窗口,需在`OnNewDocument`中修改类名或标题。
可通过`AfxGetMainWnd()->SetWindowText`设置主窗口标题。
资源字符串修改
若想完全自定义窗口标题(如去除默认文本),需修改资源文件中的`IDR_MAINFRAME`,将标题部分替换为自定义字符串。
兼容性提示
动态修改类名需谨慎处理消息映射,避免与系统窗口冲突。
通过以上方法,可灵活实现窗口名称的修改,根据需求选择类名修改或标题调整即可。