VC中获取窗体句柄的各种方法

VC中获取窗体句柄的各种方法

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

 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/118655.html原文链接:https://javaforall.net

(0)
上一篇 2021年12月3日 上午7:00
下一篇 2021年12月3日 上午8:00


相关推荐

  • Java实现一个简单的冒泡排序「建议收藏」

    Java实现一个简单的冒泡排序「建议收藏」代码思路创建一个bound,(0,bound)是待排序区间。遍历数组,如果前一个的值大于后一个,交换。直到将这个最大值挪到数组的最后。代码示例importjava.util.Arrays;publicclassSort{publicvoidBubbleSort(int[]arr){//遍历数组,如果前一个的值大于后一个,交换。直到将这个最大值…

    2022年7月8日
    23
  • Java使用RSA加密解密签名及校验

    Java使用RSA加密解密签名及校验

    2021年4月9日
    160
  • java protected访问权限

    java protected访问权限其实这个问题 就是一句话 那就是 与基类不在同一个包中的子类 只能访问自身从基类继承而来的受保护成员 而不能访问基类实例本身的受保护成员 nbsp nbsp nbsp 原创作品 允许转载 转载时请务必以超链接形式标明文章原始出处 作者信息和本声明 否则将追究法律责任 http zhangjunhd blog 51cto com 19287 本文分析一下 protected 访问权限 author ZJ2007 3 5Blog url http zhangjunhd blog 51cto com

    2025年10月12日
    6
  • 计算机存储数据时2的20次方,2的20次方是多少

    计算机存储数据时2的20次方,2的20次方是多少手机评站网今天精心准备的是 2 的 20 次方是多少 下面是详解 2 的十次方是多少 2 的十次方 1024 计算过程 2 10 2 5 2 5 32 32 1024 次方最基本的定义是 设 a 为某数 n 为正整数 a 的 n 次方表示为 a 表示 n 个 a 连乘所得之结果 如 2 2 2 2 2 16 次方的定义还可以扩展到 0 次方和负数次方等等 次方有两种算法 第一种是直接用乘法计算 例 3 3 3

    2026年3月19日
    2
  • 实现JQuery EasyUI右键菜单变灰不可用效果

    实现JQuery EasyUI右键菜单变灰不可用效果

    2021年8月12日
    52
  • 使用WinHttp接口实现HTTP协议Get、Post和文件上传功能「建议收藏」

    使用WinHttp接口实现HTTP协议Get、Post和文件上传功能「建议收藏」    我实现了一个最新版本的接口,详见《实现HTTP协议Get、Post和文件上传功能——使用WinHttp接口实现》。还有基于libcurl实现的版本《实现HTTP协议Get、Post和文件上传功能——使用libcurl接口实现》。以下是原博文:    我们在做项目开发时,往往会涉及到和服务器通信。对于安全性要求不高的情况,一般我们采用HTTP通信协议。对于喜欢挑战底层技术…

    2022年7月11日
    72

发表回复

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

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