MFC获取窗口句柄的方法

MFC - 获取MainFrame,Doc,View,App等指针的方法 一般我们使用的框架是VC提供的Wizard生成的MFC App Wizard(exe)框架,无论是多文档还是单文档,都存在指针获取和操作问题。 下面这节内容主要是一般的框架,然后再讲多线程中的指针使用。使用到的类需要包含响应的头文件。 首先一般获得本类(视,文档,对话框都支持)实例指针this,用this的目的,主要可以通过类中的函数向其他类或者函数中发指针,以便于在非本类中操作和使用本类中的功能。在View中获得Doc指针 CYouSDIDoc *pDoc=GetDocument(); 注意:SDI模 阅读详情
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 "


2、nCmd:说明指定窗口与要获得句柄的窗口之间的关系。该参数值可以是下列之一:

(1)GW_CHILD:如果指定窗口是父窗口,则获得的是在Z序顶端的子窗口的句柄,否则为NULL。函数仅检查指定父窗口的子窗口,不检查继承窗口。

(2)GW_ENABLEDPOPUP:(WindowsNT 5.0)返回的句柄标识了属于指定窗口的处于使能状态弹出式窗口(检索使用第一个由GW_HWNDNEXT 查找到的满足前述条件的窗口);如果无使能窗口,则获得的句柄与指定窗口相同。

(3)GW_HWNDFIRST:返回的句柄标识了在Z序最高GetWindow函数端的相同类型的窗口。如果指定窗口是最高端窗口,则该句柄标识了在Z序最高端的最高端窗口;如果指定窗口是顶层窗口,则该句柄标识了在z序最高端的顶层窗口:如果指定窗口是子窗口,则句柄标识了在Z序最高端的同属窗口。

(4)GW_HWNDLAST:返回的句柄标识了在z序最低端的相同类型的窗口。如果指定窗口是最高端窗口,则该柄标识了在z序最低端的最高端窗口:如果指定窗口是顶层窗口,则该句柄标识了在z序最低端的顶层窗口;如果指定窗口是子窗口,则句柄标识了在Z序最低端的同属窗口。

(5)GW_HWNDNEXT:返回的句柄标识了在Z序中指定窗口下的相同类型的窗口。如果指定窗口是最高端窗口,则该句柄标识了在指定窗口下的最高端窗口:如果指定窗口是顶层窗口,则该句柄标识了在指定窗口下的顶层窗口;如果指定窗口是子窗口,则句柄标识了在指定窗口下的同属窗口。

(6)GW HWNDPREV:返回的句柄标识了在Z序中指定窗口上的相同类型的窗口。如果指定窗口是最高端窗口,则该句柄标识了在指定窗口上的最高端窗口;如果指定窗口是顶层窗口,则该句柄标识了在指定窗口上的顶层窗口;如果指定窗口是子窗口,则句柄标识了在指定窗口上的同属窗口。

(7)GW_OWNER:返回的句柄标识了指定窗口的所有者窗口(如果存在)。

3、返回值:如果函数成功,返回值为窗口句柄;如果与指定窗口有特定关系的窗口不存在,则返回值为NULL。

若想获得更多关于错误的信息,请调用GetLastError函数.

在循环体中调用函数EnumChildWindow比调用GetWindow函数可靠。调用GetWindow函数实现该任务的应用程序可能会陷入死循环或退回一个已被销毁的窗口句柄。  


ENVI5.6 Seamless Mosaic多景影像镶嵌色差问题 多景影像无缝镶嵌色差问题拟解决方法 阅读详情

相关推荐

AI人工智能全模态大模型架构:推动智能交通发展的架构设计

本文旨在阐述全模态大模型在智能交通领域的架构设计原理和应用方法。我们将探讨如何利用多模态AI技术解决交通流量预测、事故预警、路线优化等关键问题。文章将从基础概念入手,逐步深入技术细节,最后探讨实际应用和未来发展方向。全模态大模型:能够处理和理解多种数据模态(如图像、文本、语音等)的大型AI模型智能交通系统(ITS):利用先进技术优化交通流量和安全性的综合系统多模态融合:将不同数据源的信息整合处理的技术核心概念回顾全模态大模型是能够处理多种数据类型的强大AI系统。

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 835

【MFC】AfxGetMainWnd()函数使用心得

关于AfxGetMainWnd()函数的通常认识: 1、使用AfxGetMainWnd()函数获取MFC程序中的主框架类指针是一个常用作法。 2、获得应用程序主窗口的指针的方法,AfxGetMainWnd()->m_hWnd或者AfxGetMainWnd()->GetSafeHwnd()。 但是,在用户线程中调用AfxGetMainWnd()函数好像就不灵了,为什么? 调...

sunriver2000的专栏 6505

共享单车数据分析与需求预测项目

除了自行车共享系统的有趣的实际应用之外,这些系统生成的数据特征使它们成为研究的有吸引力的对象。由于这些系统在交通、环境和健康问题中的重要作用,它们引起了极大的关注。Huber 回归器:一个对异常值具有鲁棒性的模型,CV 得分为 0.4660,表明它对此数据集可能不那么有效。代码中的内容cv_score就像您正在使用的机器学习模型的成绩单。它告诉您模型的表现如何。减少异常值的影响:它还可以减少异常值的影响,因为对数转换显着缩小了数据的范围。因此,cv_score平均分数表明您的模型的预测效果如何。

极光喵的博客 2948

AfxGetMainWnd 函数

AfxGetMainWnd( ): 使用AfxGetMainWnd函数获取MFC程序中的主框架类指针是一个常用作法。 就是获得应用程序主窗口的指针,AfxGetMainWnd()-> m_hWnd是主窗口的句柄。 关于好多MFC的函数都有Afx开头: Application Frameworks 应用程序框架 这是MS最早想统一各种平台C++开

积累点滴,保持自我 9557

Apollo&Carla联合仿真基本操作

基于UE4开发的开源无人驾驶仿真器PythonAPI自动驾驶传感器(还有理想化的collision detection传感器)用于规划和控制的快速仿真地图生成交通场景(open scenario)仿真ROS集成自动驾驶baseline0.9.15新特性新的车型以及地图基于Omniverse的素材导入基于OSM的三维场景生成。

SLAM小土堆 3801

汽水音乐自动化薅羊毛教程:从零搭建稳定赚钱脚本

📖 前言:为什么要学习自动化脚本?在数字时代,时间就是金钱。汽水音乐等App通过观看广告奖励用户金币的模式,本质上是将我们的时间转化为收益。本教程将教你如何用Python自动化这个过程,让程序为你"打工",实现被动收入。通过本教程,你将学到:移动端自动化测试的核心技术Python在自动化领域的实际应用如何将重复性任务转化为自动化流程创造属于自己的"数字员工"第一章:环境准备与基础配置1.1 硬件要求Android手机一部(建议使用备用机)USB数据线。

weixin_44947827的博客 5801

MFC 获取窗口句柄

每个窗口类的CWnd *hwnd指针中封装了该窗口的句柄m_hWnd,直接hwnd->m_hWnd即可得到该窗口的句柄。HWND是句柄,CWnd是MFC窗体类,CWnd中包含HWND句柄成员对象是m_hWnd。

weixin_46047677的博客 2326

AISHELL-1中文语音数据集实战:从下载到训练你的第一个ASR模型(附完整代码)

本文详细介绍了如何使用AISHELL-1中文语音数据集从数据准备到训练端到端语音识别模型的全流程。AISHELL-1作为国内首个开源的普通话语音数据集,包含178小时高质量录音,适合中文自动语音识别(ASR)系统开发。文章涵盖数据下载、预处理、Conformer-CTC模型训练、评估及优化策略,并附完整代码实现。

garlic的博客 1121

AfxGetMainWnd , AfxGetApp 和theApp的区别

AfxGetMainWnd、AfxGetApp和theApp都是MFC中用于获取主窗口对象和应用程序对象的函数或变量。

weixin_45672157的博客 743

【智能车学习】电磁循迹中的基本控制算法

今天心血来潮,突然想总结一下电磁车的一些基本算法,也希望可以给新手同学们一点帮助和参考。本篇主要讲述智能车电磁循迹中涉及到的基本算法,包括滤波算法,归一化算法,PID控制等

Carry_qing的博客 6万+

Qi标准下的充电协议及其记忆技巧

记忆无线充电协议中的。

m0_73991989的博客 1320

c语言 取窗口句柄,MFC获取句柄的方法

句柄获取方法(获取该窗口的句柄后,即可向该窗口类类发送消息、处理程序):例如:::PostMessage("句柄",WM_USER_DRAWVIEWPIC_EDS,0,0);0。获取所在类窗口的句柄:this->m_hwnd1。主窗口的句柄:无论在主窗口类内,还是子窗口类内,获取主窗口句柄的方法:AfxGetMainWnd()->m_hWnd,如:::SendMessage(Af...

weixin_33199315的博客 4232

手把手教你设计STM32的JTAG电路:从原理图到PCB布局(含JLINK连接详解)

本文详细介绍了STM32的JTAG电路设计全流程,从核心原理、接口规范到PCB布局布线技巧,特别包含JLINK调试器的连接与配置方法。通过信号滤波、上拉配置和防反接保护等关键设计要点,帮助开发者构建稳定可靠的JTAG调试环境,提升嵌入式开发效率。

weixin_29159441的博客 390

MFC中获取窗口句柄方法总结

    MFC中,经常会用到窗口句柄和指针,现将经常用到的几种窗口句柄、指针总结如下:     要找到某个CWnd对象的HWND,用GetSafeHwnd()。     在窗口类中,有句柄的成员变量,可以直接访问:   m_hWnd       窗口类外,可以用AfxGetMainWnd()->m_hWnd获得。     在MainFrame里直接用this;      

Udmyth的专栏 1719

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

mfc 找出一个窗口中的所有控件句柄_MFC 获取窗口句柄的方法 | 学步园

一----使用Window API 获取句柄GetNextWindow获取前一个或者后一个窗口的句柄HWNDGetNextWindow(HWNDhWnd,UINTwCmd);GetWindow该函数返回与指定窗口有特定关系(如Z序或所有者)的窗口句柄HWNDGetWindow(HWNDhWnd,UINTuCmd);GetNextDlgTabItem:与 TAB键相关该函数按指定方向检...

weixin_28717969的博客 726

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

MFC获取窗口句柄号的六种方法

窗口句柄号

x_k的专栏 1万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

MFC中获取各个窗口之间的句柄或者指针对象的方法

转载:https://www.cnblogs.com/gavanwanggw/p/6743774.html MFC中获取各个窗口之间的句柄或者指针对象的方法 MFC在非常多的对话框操作中,我们常常要用到在一个对话框中调用还有一个对话框的函数或变量.能够用例如以下方法来解决. HWND hWnd=::FindWindow(NULL,_T(“Sphere”)); //得到对话框的...

Rxiang12的博客 991

MFC 获取窗口句柄的方法

一----使用Window  API 获取句柄 GetNextWindow 获取前一个或者后一个窗口的句柄 HWND GetNextWindow(           HWND hWnd,     UINT wCmd ); GetWindow 该函数返回与指定窗口有特定关系(如Z序或所有者)的窗口句柄 HWND GetWindow(

Incremental Learning 1556

mfc 找出一个窗口中的所有控件句柄_MFC中获取各个窗口之间的句柄或者指针对象的方法...

win32直接操作的是句柄HANDLE。每一个句柄就相应windows窗体,而vc对HANDLE进行类封装,间接操作的都是HANDLE,如今句柄仅仅是类的一个成员变量。从句柄到指针CWnd* pWnd=CWnd::FromHandle(hWnd); //a temporary CWnd object is created //and attached.pWnd->Attach(hWnd); ...

weixin_31881743的博客 1111

mfc 找出一个窗口中的所有控件句柄_MFC中怎样获取指定窗口的句柄

2016-12-06 回答句柄获取方法(获取该窗口的句柄后,即可向该窗口类类发送消息、处理程序):0。获取所在类窗口的句柄:this->m_hwnd1。主窗口的句柄:无论在主窗口类内,还是子窗口类内,获取主窗口句柄的方法:afxgetmainwnd()->m_hwnd,如:::sendmessage(afxgetmainwnd()->m_hwnd,wm_my_dosome,...

weixin_26802933的博客 1547
上一篇: IOCP模型与网络编程
下一篇: VC自定义消息ON_MESSAGE的编译错误error C2440
heary29
博客等级 码龄12年 37粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值