博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VC中获取窗体句柄的各种方法
阅读量:6837 次
发布时间:2019-06-26

本文共 2271 字,大约阅读时间需要 7 分钟。

 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 ") )

转载地址:http://akqkl.baihongyu.com/

你可能感兴趣的文章
unity使用UGUI创建摇杆
查看>>
实习小白::(转) 使用Tui-x制作cocos能使用的界面,动画等 ---------- Tui-x 简介...
查看>>
Red Hat 6.5 网络yum源的配置
查看>>
如何解决EditText使用时,点击外侧系统键盘不消失的bug
查看>>
SWAP_JOIN_INPUTS Oracle Hint(处理hash join强制大表(segment_size大)作为被驱动表)
查看>>
使用JSP渲染Web视图
查看>>
iOS_nil、Nil、NULL、NSNull的区别
查看>>
python操作excel小试牛刀
查看>>
vue通俗易懂的子组件向父组件传值
查看>>
加密传输SSL协议1_OpenSSL的安装
查看>>
Javascript Array Functions --Js 数组方法汇总
查看>>
安装arcgis server 10.2遇到的问题总结
查看>>
查看他人数据接口的安全校验机制
查看>>
react 通过 classnames 处理 多个class 的问题
查看>>
倒计时原理
查看>>
让ul中的li居中显示
查看>>
XJOI网上同步训练DAY2 T2
查看>>
Codeforces 509F Progress Monitoring
查看>>
spring cloud: eureka搭建
查看>>
导弹拦截
查看>>