c++获取子类窗口句柄位置_C++中各种获取窗口句柄的方法「建议收藏」

c++获取子类窗口句柄位置_C++中各种获取窗口句柄的方法「建议收藏」AfxGetMainWndAfxGetMainWnd获取自身窗口句柄HWNDhWnd=AfxGetMainWnd()->m_hWnd;GetTopWindow函数功能:该函数检查与特定父窗口相联的子窗口z序(Z序:垂直屏幕的方向,即叠放次序),并返回在z序顶部的子窗口的句柄。函数原型:HWNDGetTopWindow(HWNDhWnd);参数:hWnd:被查序的父窗口的句柄。如果该…

大家好,又见面了,我是你们的朋友全栈君。

AfxGetMainWnd

AfxGetMainWnd获取自身窗口句柄

HWND hWnd = AfxGetMainWnd()->m_hWnd;

GetTopWindow

函数功能:该函数检查与特定父窗口相联的子窗口z序(Z序:垂直屏幕的方向,即叠放次序),并返回在z序顶部的子窗口的句柄。

函数原型:HWND GetTopWindow(HWND hWnd);

参数:

hWnd:被查序的父窗口的句柄。如果该参数为NULL,函数返回Z序顶部的窗口句柄。

返回值:

如果函数成功,返回值为在Z序顶部的子窗口句柄。如果指定的窗口无子窗口,返回值为NULL。

GetForegroundWindow

函数功能:该函数返回当前系统的前台窗口的窗口句柄。

函数原型:HWND GetForegroundWindow(VOID)

返回值:函数返回前台窗回的句柄。

GetActiveWindow

函数功能:该函数可以获得与调用该方法的线程的消息队列相关的活动窗口的窗口句柄(就是取得当前进程的活动窗口的窗口句柄)。

函数原型:HWND GetActiveWindow(VOID)

返回值:返回值是与调用线程的消息队列相关的活动窗口的句柄。否则,返回值为NULL。

GetSafeHwnd

函数功能:获取某个窗口对象(CWnd的派生对象)指针的句柄(HWND)时,最安全的方法是使用GetSafeHwnd()函数。

通过下面的例子来看其理由:

CWnd *pwnd = FindWindow(“ExploreWClass”,NULL); //希望找到资源管理器

HWND hwnd = pwnd->m_hwnd; //得到它的HWND

这样的代码当开始得到的pwnd为空的时候就会出现一个“General protection error”,并关闭应用程序,因为一般不能对一个NULL指针访问其成员,如果用下面的代码:

CWnd *pwnd = FindWindow(“ExploreWClass”,NULL); //希望找到资源管理器

HWND hwnd = pwnd->GetSafeHwnd(); //得到它的HWND

就不会出现问题,因为尽管当pwnd是NULL时,GetSafeHwnd仍然可以用,只是返回NULL

IsWindowVisible

函数功能:该函数获得给定窗口的可视状态。

函数原型:BOOL IsWindowVisible(HWND hWnd);

参数;

hWnd:被测试窗口的句柄。

返回值:

如果指定的窗口及其父窗口具有WS_VISIBLE风格,返回值为非零;如果指定的窗口及其父窗口不具有WS_VISIBLE风格,返回值为零。由于返回值表明了窗口是否具有Ws_VISIBLE风格,因此,即使该窗口被其他窗口遮盖,函数返回值也为非零。

备注:

窗口的可视状态由WS_VISIBLE位指示。当设置了WS_VISIBLE位,窗口就可显示,而且只要窗口具有WS_VISIBLE风格,任何画在窗口的信息都将被显示。

IsWindow: 函数功能:该函数确定给定的窗口句柄是否标示一个已存在的窗口。

函数原型:BOOL IsWindow(HWND hWnd);

参数:

hWnd:被测试窗口的句柄。

返回值:

如果窗口句柄标识了一个已存在的窗口,返回值为TURE;如果窗口句柄未标识一个已存在窗口,返回值为FALSE。

FindWindow:

HWND FindWindow(LPCSTR lpClassName,LPCSTR lpWindowName );

参数:

lpClassName

指向一个以null结尾的、用来指定类名的字符串或一个可以确定类名字符串的原子。如果这个参数是一个原子,那么它必须是一个在调用此函数前已经通过GlobalAddAtom函数创建好的全局原子。这个原子(一个16bit的值),必须被放置在lpClassName的低位字节中,lpClassName的高位字节置零。

lpWindowName

指向一个以null结尾的、用来指定窗口名(即窗口标题)的字符串。如果此参数为NULL,则匹配所有窗口名。

返回值:

如果函数执行成功,则返回值是拥有指定窗口类名或窗口名的窗口的句柄。

如果函数执行失败,则返回值为 NULL 。可以通过调用GetLastError函数获得更加详细的错误信息。

SetWindowText:

至于窗口标题的改变,我们可以通过SetWindowText来实现

注:如果窗口本身属性是不显示标题的,这个函数的调用不会影响窗口属性。

//Set title for application’s main frame window .

AfxGetMainWnd ( ) -> SetWindowText (_T(“Application title”) )

//Set title for View’s MDI child frame window .

GetParentFrame ( ) -> SetWindowText (“_T (“MDI Child Frame new title”) )

//Set title for dialog’s push button control.

GetDigitem (IDC_BUTTON) -> SetWindowText (_T (“Button new title “) )

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162558.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm2018打不开_pycharm indexing

    pycharm2018打不开_pycharm indexingpycharm2020无法打开,点击无反应,今天我碰到这现象,总结大体原因为2种第1种:C:\Users\ygw\AppData\Roaming\JetBrains(删除该目录即可,一般由于升级安装或安装两个不同版本会存在老旧文件影响导致)第2种:进行过激活成功教程,修改了pycharm64.exe.vmoptions配置,其中存在错误配置或配置中的指定jar…

    2022年8月29日
    1
  • 线程join方法用处「建议收藏」

    线程join方法用处「建议收藏」参考博客:https://www.cnblogs.com/lcplcpjava/p/6896904.html第一种情况(不使用join):ThreadJoinTestt1=newThreadJoinTest(“小明”);ThreadJoinTestt2=newThreadJoinTest(“小东”);t1.start();

    2022年5月24日
    40
  • 双机流水作业调度问题——Johnson算法「建议收藏」

    双机流水作业调度问题——Johnson算法「建议收藏」概述流水作业是并行处理技术领域的一项关键技术,它是以专业化为基础,将不同处理对象的同一施工工序交给专业处理部件执行,各处理部件在统一计划安排下,依次在各个作业面上完成指定的操作。流水作业调度问题是一个非常重要的问题,其直接关系到计算机处理器的工作效率。然而由于牵扯到数据相关、资源相关、控制相关等许多问题,最优流水作业调度问题处理起来非常复杂。已经证明,当机器数(或称工序数)大于等于3时,流水作业调度问题是一个NP-hard问题(e.g分布式任务调度)。粗糙地说,即该问题至少在目前基本上没有可能找到多项

    2025年5月24日
    2
  • Pytest(16)随机执行测试用例pytest-random-order[通俗易懂]

    Pytest(16)随机执行测试用例pytest-random-order[通俗易懂]前言通常我们认为每个测试用例都是相互独立的,因此需要保证测试结果不依赖于测试顺序,以不同的顺序运行测试用例,可以得到相同的结果。pytest默认运行用例的顺序是按模块和用例命名的ASCII编码

    2022年7月31日
    4
  • java安装下载步骤_java下载安装教程

    java安装下载步骤_java下载安装教程java下载安装教程首先,我们可能需要查看一下电脑的配置信息,单击开始按钮选择系统,一般我们只需要关注是多少位的系统,还有是windows或Linux即可,如图:推荐教程:《java学习》在网络畅通的情况下,在任意浏览器都可以查找java的下载链接,我这边的链接是http://www.oracle.com/technetwork/java/javase/downloads/index.html,输…

    2022年7月7日
    26
  • pycharm的python环境配置_怎么安装pycharm及环境变量配置

    pycharm的python环境配置_怎么安装pycharm及环境变量配置1.python安装(目前我用的是Anaconda环境,够用,等遇到问题没办法了再装python,然后再写这部分内容。看到这的朋友要谨慎些,别被我误导了)2.Pycharm环境变量配置点击createnewproject进入项目配置页面:或者:即:Pycharm自动加载的环境为虚拟环境,不建议初学者使用,因为后期很多安装的模块和包只能在虚拟环境中使用。点击上图编号3之后会进入下图显示的内容,我们选择左侧systeminterpreter,在显示的路径中…

    2022年8月29日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号