首页 > 编程语言 > 详细

自定义MFC对话窗口的类名

时间:2020-08-14 23:26:07      阅读:78      评论:0      收藏:0      [点我收藏+]

默认情况下,MFC对话框的窗口类名为“#32770”,如果想自定义窗口类名呢,需要两步:

1.修改rc文件

这一步需要直接编辑rc文件,使用任意记事本工具即可,找到窗口的相关定义,原来是这样子的:

IDD_TESTMYWNDCLASS_DIALOG DIALOGEX 0, 0, 320, 200
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION "我的自定义类窗口"
FONT 9, "宋体"
BEGIN
    DEFPUSHBUTTON   "确定",IDOK,260,7,50,14
    PUSHBUTTON      "取消",IDCANCEL,260,23,50,14
    LTEXT           "TODO: 在这里设置对话控制。",IDC_STATIC,50,90,200,8
END

然后增加一行,写上自己想要定义的类名,如下:

IDD_TESTMYWNDCLASS_DIALOG DIALOGEX 0, 0, 320, 200
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION "我的自定义类窗口"
CLASS "MyClassName"
FONT 9, "宋体"
BEGIN
    DEFPUSHBUTTON   "确定",IDOK,260,7,50,14
    PUSHBUTTON      "取消",IDCANCEL,260,23,50,14
    LTEXT           "TODO: 在这里设置对话控制。",IDC_STATIC,50,90,200,8
END

 

2.注册类名

在窗口创建之前,执行以下代码,比如可以放在CXXXApp::InitInstance()函数中,在对话框创建之前。

	WNDCLASS wc;
	// #32770 is the default class name for dialogs boxes.
	::GetClassInfo(AfxGetInstanceHandle(), _T("#32770"), &wc);
	
	// Change the name of the class.
	wc.lpszClassName = _T("MyClassName"); //这里请再次注意,一定要保证和rc资源文件里保存的类名相同!
	
	// Register this class so that MFC can use it.
	BOOL bRet = AfxRegisterClass(&wc);

 然后就可以了。编译执行程序,用spy++或spy4win看一下,效果如下:

技术分享图片

自定义MFC对话窗口的类名

原文:https://www.cnblogs.com/achillis/p/13504597.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!