全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VC MFC编程各种窗口句柄获取函数详解VC+MFC编程各种窗口句柄获取函数详解2011-05-20 18:25VC+MFC编程各种窗口句柄获取函数详解技术探讨2011-03-10 17:22:38阅读12 AfxGetMainWndAfxGetMainWnd获取自身窗口句柄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 applications main frame window.AfxGetMainWnd()-SetWindowText(_T(Application title)/Set title for Views MDI child frame window.GetParentFrame()-SetWindowText(_T(MDI Child Frame new title)/Set title for dialogs push button control.GetDigitem(IDC_BUTTON)-SetWindowText(_T(Button new title)其他:1、直接得句柄GetActiveWindow();/得激活窗口句柄GetForegroundWindows();/的前台窗口句柄AfxGetApp()-GetMainWnd()-GetSafeHwnd()/很常规的,涉及到很多方法2、枚举型的HWND GetWindow(HWND hWnd,UINT uCmd);/要先有hWnd,然后指明uCmd的关系HWND FindWindowEx(HWND hwndParent,HWND hwndChildAfter,LPCTSTR lpszClass,L PCTSTR zWindow);/由类名和窗口标题得句柄,可能不只一个,所以不唯一确定3、其他参数的句柄进程ID:MARK:由句柄得ID可以用GetWindowThreadProcessId()而由ID的句柄只能枚举+比较了历遍全部窗体,并取得他们对应的HWND进一步取得对应PID,符合已知PID的就是了,当然可能要判断一下窗体状态了,如果进程只有一个窗体那就不用了。例:如果要在列表框里显示所有的窗口BOOL CALLBACK EnumWindowsProc(HWND hwnd,/handle to parent window LPARAM lParam/application-defined valuechar lpWinTitle256;:GetWindowText(hwnd,lpWinTitle,256-1);CString m_strTitle;m_strTitle.Format(%s,lpWinTitle);CLi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 并联电路计算试题及答案
- 许昌市妇幼保健院招聘考试真题2024
- 福建泉州晋江国际机场股份有限公司招聘考试真题2024
- 安徽省宣城市医院洁净室消防安全测试题五(含答案)
- 面向城市家庭的亲子主题乡村旅游活动策划与运营计划
- 体育赛事营销策略与执行总结
- 2025年压力容器安全生产试题及答案
- 数控铣工高级工培训试题及答案
- 测绘地理信息技术的试题带答案
- 2025年及未来5年中国热熔胶机行业市场发展数据监测及投资战略规划报告
- 人工智能与知识产权保护国际合作案例分析
- 2024年医院财务预算编制方案
- 2025-2030二手车交易平台用户行为分析及市场拓展战略研究报告
- 职工职业健康体检表
- 国开2025年《行政法与行政诉讼法》形考作业1-4答案
- 2025年江苏省农垦集团有限公司人员招聘笔试备考及答案详解(全优)
- 《梦回繁华》 语文统编版八年级上册(公开课一等奖创新教学设计)
- 2025年贵州省政府采购评审专家考试试题及答案
- 学堂在线 研究生素养课-积极心理与情绪智慧 章节测试答案
- 眼科护士进修汇报
- 学堂在线 精确制导器术道 章节测试答案
评论
0/150
提交评论