如何自定义窗口类名

    Windows的标准应用程序都有约定的类名,如对话框的类名是#32770,文本框/编辑框类名是Edit,按钮类名为Button等。这也有于我们查找窗口,使用FindWindows/FindWindowEx/GetWindow等函数。但,如何把这些类名设为我们自定义的类名呢?

    第一种方法:在需要更改类名的对话框资源上右击,选择“属性”,打开属性对话框,可以看到有一个名为“Class Name”的属性,我们在其中输入一个自己定义的名称(如”MyPrivateClassName”)即可。但是,MFC默认设置这个属性选项是灰色不可用的,我们先要开启它。切换到资源视图,右击根节点(如”XxxXxx.rc”),选属性,去掉勾选“Enable MFC Features”项(如果是VS.Net,把”MFC Mode property”项改为False)。这样就可以修改对话框的Class Name属性了,假如为"MyClassName"。
然后在BOOL CXXXXApp::InitInstance()方法的”WNDCLASS wc;”下方加上如下代码:

//注册新类名///
// 获取窗口类信息。MFC默认的所有对话框的窗口类名为 #32770
::GetClassInfo(AfxGetInstanceHandle(), _T("#32770"), &wc);
// 改变窗口类名
wc.lpszClassName = _T("MyClassName");
// 注册新窗口类,使程序能使用它
AfxRegisterClass(&wc);
///
    这段代码必须加上并且需要注册,要不然程序启动不了。
    第二种方法是:直接用文本编辑器打开资源文件,修改对话框定义代码,插入CLASS项,如:

IDD_LIMITDLGINSTANCE_DIALOG DIALOGEX 0, 0, 195, 44
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION "LimitDlgInstance"
CLASS "MyPrivateClassName" //Add your class name here!
FONT 8, "MS Sans Serif"
BEGIN
DEFPUSHBUTTON "OK",IDOK,138,7,50,14
PUSHBUTTON "Cancel",IDCANCEL,138,23,50,14
PUSHBUTTON "&Test!",IDC_BUTTON1,48,14,49,15
END
    最后还要定制并注册新窗口类。在应用程序类的InitInstance()函数中添加以下代码,以注册资源文件中用到的新窗口类:如前述。

注意:
在调用函数::GetClassInfo()时,请确保传入的第一个参数HINSTANCE是包含你对话框资源所在的dll或exe的进程实例。
请确保资源中指定的Class Name与InitInstance()中指定的窗口类名完全相同,否则程序不能运行。
更改完成,请重建工程,运行程序,使用Spy++查看最终效果吧!


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
程序简介: 一键隐藏精灵是一个快速隐藏系统窗口的工具,使用它可以瞬间隐藏系统中的所有窗口,如QQ、网页、游戏窗口、桌面图标、任务栏等;可以选择不隐藏哪些窗口;可以隐藏的同时使系统静音。 程序提供两种隐藏方法:一种是键盘隐藏,默认热键为Ctrl+F12,可以根据自己的习惯进行设置;另一种是鼠标隐藏,有中键隐藏和左右键隐藏两种方式可选。 操作说明: 一.3种隐藏方式 隐藏前台窗口:只隐藏当前活动窗口,而不管其它任何窗口。 隐藏一切可视窗口:隐藏系统所有窗口,包括软件自身窗口在内。 隐藏自定义窗口:可以自己选择要隐藏哪些类型的窗口。 二.自定义规则 1.可以选择隐藏哪些窗口和不隐藏哪些窗口,单击自定义规则按钮,新建一个规则,选择标题或者类名,然后选择“排除”或“包含”,输入窗口标题或类名即可。排除指当选择“隐藏一切可视窗口”类型时,被排除在外不必隐藏的窗口;包含是指当选择“隐藏自定义窗口”类别时,将要隐藏的窗口,凡包含的都会被隐藏。 2.选择隐藏自定义窗口后,下面会有两个选项:浏览器和网页窗口与Windows资源管理器窗口,选中的话将同时隐藏它们。浏览器窗口只支持IE和360浏览器,要添加更多的话可以编辑自定义规则。 3.新建规则窗口有一个选项为“捕获前台窗口”,选择后会自动获取当前活动窗口的信息,也就是类名或标题。 4.可以使用记事本编辑HideRules.ini文件,Y表示包含,N表示排除,C代表类名,T代表标题,P代表程序,中间用减号分隔,最后一项是具体的窗口标题名或类名。比如“Y-C-Notepad”表示隐藏类名为Notepad的窗口,“N-T-你好”表示不隐藏标题为你好的窗口类名和程序名不分大小写,标题必须区分。 5.规则支持通配符,*代表任意个字符,?代表1个字符。有些窗口类名是会变的,比如暴风影音窗口,它类名后面几个字符是不固定的,但是前面的相同,所以后面几位可以用一个*或几个?代替。 三.其它功能 有四个选项:隐藏桌面图标、隐藏任务栏、隐藏任务栏程序按钮和隐藏右下角托盘图标。选择后隐藏的同时也会连同这些特殊窗口一并隐藏。 四.设置 1.单击设置按钮会打开程序设置,开启键盘隐藏功能后,可以选择主控制热键;开启鼠标隐藏功能后,可以选择用鼠标键来隐藏。 2.其它 任务栏显示图标:指右下角的图标,默认是显示的。 随系统启动:可以在系统运行时跟着运行 隐藏时静音:隐藏同时暂停一切声音 使用声音效果:隐藏和显示窗口时的音效。 隐藏进程托盘图标:在隐藏窗口的同时隐藏同一进程的任务栏托盘按钮。 3.显示/隐藏软件主窗口的热键为:Ctrl+Shift+Alt+Esc;另外,主窗口在最小化后也会自动隐藏。 4.程序带有一个/m的参数,若以/m参数启动时将不显示主窗口,而是以后台方式运行。 五.需要注意: 1.隐藏前台窗口对本软件无效 2.在操作或设置本软件时最好不要使用热键 3.按两次热键为一个完整动作,有时可能没有符合条件的窗口,但是程序依然会执行,所以必须按两次返回以后才能继续隐藏其它窗口,这不属于软件bug。 4.程序退出后被隐藏的窗口将无法恢复,只能另找第三方窗口工具。 六.举例 1.隐藏全部系统窗口,但是不隐藏Word窗口:新建一个规则,选择“类名”和“排除”,在文本框中输入Word的类名OpusApp,确定即可,如果不知道类名,可以选中“类名”框和选中“捕获前台窗口”,再单击Word窗口使其处于前台,这样软件便会自动收到Word的类名。软件中默认已经添加了排除Office窗口一项,其它的请自行添加。除此之外,也可以根据窗口进程来排除Word窗口,在新建规则窗口选择“程序”选项,然后输入Word的程序名winword.exe并选排除即可。 2.只隐藏所有的记事本窗口:同样的新建一规则,选择类名和包含,类名中输入Notepad,确定即可。这里选择类名是因为记事本窗口类名是不变的,而标题文字则有可能不相同。由于窗口类名一般不变,所以隐藏或排除某类窗口尽量根据类名或者程序名来设置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值