如何自定义窗口类名?

时间:2021-12-26 20:00:50
MFC中基于CDialog的ClassName均为#32770,如何更改窗口类名?
怎么调用AfxRegisterClass修改类名?

6 个解决方案

#1


http://computer.sz.net.cn/2004-07-19/nw2004071900061.shtml

#2


谢谢啦,我测试过。
在 VS.NET中创建一个基于CDialog的应用,按照第二种方法可以成功。
第一种方法出错,好象与第二种方法的修改rc 文件等效。

#3


若想解决SDI中同样的问题,该怎么办呢?
一个基于SDI的应用用Spy++查看,
窗口类名为Afx:00400000:b:00010011:00000006:06A60867,四段好象跟窗口资源相关,具体不是很清楚,在FindWindows中如何引用?"#Afx..."或者 "Afx..."都找不到CWnd。

在CTest::InitInstance()中
   ...
   GetClassInfo(AfxGetInstanceHandle(), "Afx:00400000:b:00010011:00000006:022407F7", &wc);//该句返回FALSE,"Afx..."转成"#Afx.."也一样
   ...

在int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)中
修改lpCreateStruct->lpszClass,,不出错,也没效果

#4


给窗口添加类的时候不是你自己定义类名吗

#5


我希望在其他程序中引用时方便些,指的是FindWindow中第一个参数lpszClassName,或者用Spy++显示出来的ClassName

SDI中MFC自己分配的感觉太乱,CDialog中分配的又千遍一律,想自定义这个值

#6


可能标题说的不清楚,抱歉

这里的窗口类名与SDK编程中的WNDCLASS结构中pszClassName一样,向系统注册的类名

#1


http://computer.sz.net.cn/2004-07-19/nw2004071900061.shtml

#2


谢谢啦,我测试过。
在 VS.NET中创建一个基于CDialog的应用,按照第二种方法可以成功。
第一种方法出错,好象与第二种方法的修改rc 文件等效。

#3


若想解决SDI中同样的问题,该怎么办呢?
一个基于SDI的应用用Spy++查看,
窗口类名为Afx:00400000:b:00010011:00000006:06A60867,四段好象跟窗口资源相关,具体不是很清楚,在FindWindows中如何引用?"#Afx..."或者 "Afx..."都找不到CWnd。

在CTest::InitInstance()中
   ...
   GetClassInfo(AfxGetInstanceHandle(), "Afx:00400000:b:00010011:00000006:022407F7", &wc);//该句返回FALSE,"Afx..."转成"#Afx.."也一样
   ...

在int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)中
修改lpCreateStruct->lpszClass,,不出错,也没效果

#4


给窗口添加类的时候不是你自己定义类名吗

#5


我希望在其他程序中引用时方便些,指的是FindWindow中第一个参数lpszClassName,或者用Spy++显示出来的ClassName

SDI中MFC自己分配的感觉太乱,CDialog中分配的又千遍一律,想自定义这个值

#6


可能标题说的不清楚,抱歉

这里的窗口类名与SDK编程中的WNDCLASS结构中pszClassName一样,向系统注册的类名