zoukankan      html  css  js  c++  java
  • 自定义MFC对话窗口的类名

    默认情况下,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看一下,效果如下:

  • 相关阅读:
    Web 安全 —— XSS攻击的原理
    HTTP缓存
    JavaScript 事件循环机制(Event Loop)
    搭建前端监控系统
    电脑 直接下载cyida deb
    基于样例的传统图像修补算法实现
    Android WorkManager 定时任务
    Android WorkManager工作约束,延迟与查询工作
    微信小程序地图如何显示附近厕所WC步行路线
    物流解决方案再添利器 腾讯位置服务推出货运“三件套”
  • 原文地址:https://www.cnblogs.com/achillis/p/13504597.html
Copyright © 2011-2022 走看看