VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 318|回复: 1

VC++高级班之窗口篇-[3]窗口的枚举与查找

[复制链接]
01_avatar_middle
online_admins admin 发表于 2018-2-23 00:46:32 | 显示全部楼层 |阅读模式
------------------------------------------ Begin ----------------------------------------
①、使用 GetWindow 进行窗口枚举:
  1. TCHAR titleText[MAX_PATH] = {0};

  2. HWND nHwnd = ::GetWindow(::GetDesktopWindow(), GW_CHILD);
  3. while(nHwnd != NULL) {
  4.         ::GetWindowText(nHwnd, titleText, MAX_PATH);
  5.         if (_tcslen(titleText) > 0) MessageBox(titleText);

  6.         nHwnd = ::GetWindow(nHwnd, GW_HWNDNEXT);
  7. }
复制代码


②、使用 FindWindowEx 进行窗口枚举:
  1. TCHAR titleText[MAX_PATH] = {0};

  2. HWND nHwnd = ::FindWindow(NULL, NULL);
  3. while(nHwnd != NULL) {
  4.         ::GetWindowText(nHwnd, titleText, MAX_PATH);
  5.         if (_tcslen(titleText) > 0) MessageBox(titleText);

  6.         nHwnd = ::FindWindowEx(0, nHwnd, NULL, NULL);
  7. }
复制代码

       
③、使用 EnumWindows 进行窗口枚举:
  1. EnumWindows(EnumWindowsProc, NULL);
  2. ……
  3. BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
  4. {
  5.         TCHAR titleText[MAX_PATH] = {0};
  6.         ::GetWindowText(hwnd, titleText, MAX_PATH);
  7.         if (_tcslen(titleText) > 0) AfxMessageBox(titleText);

  8.         return TRUE;
  9. }
复制代码


④、使用 EnumChildWindows 进行子窗口的枚举:
EnumChildWindows 照比 EnumWindows 只是多了一个指定父窗口的窗口句柄的参数,
所以这个函数的使用算是留给大家的一个小作业,自己课后实践一下!

⑤、使用 FindWindow 进行窗口的查找:
  1. HWND hCalc = ::FindWindow(_T("SciCalc"), _T("计算器"));
  2. if (hCalc)
  3. {
  4.         ::SetWindowText(hCalc, _T("VC驿站 专用计算器!"));
  5. }
复制代码

⑥、使用 FindWindowEx 进行子窗口的查找:
  1. HWND hCalc = ::FindWindow(_T("SciCalc"), _T("计算器"));
  2. if (hCalc)
  3. {
  4.         ::SetWindowText(hCalc, _T("VC驿站 专用计算器!"));
  5.         HWND hEdit = ::FindWindowEx(hCalc, NULL, _T("Edit"), NULL);
  6.         ::SetWindowText(hEdit, _T("1234567890"));
  7.         //::SendMessage(hEdit, WM_SETTEXT, 0, (LPARAM)_T("1234567890"));
  8. }
复制代码


⑦、鉴于 FindWindowEx 找子控件的不确定性,
可以使用 GetDlgItem 来获取对话框内部的子控件窗口句柄:


  1. HWND hEdit = ::GetDlgItem(hCalc, 0x193);
复制代码


⑧、其他 Window 操作相关 API 函数:
⑨、获取窗口的进程ID:GetWindowThreadProcessId
------------------------------------- End -------------------------------------------

相关课程演示细节还请观看视频教程!
本套教程由VC驿站原创,提供视频教程+售后答疑服务!
教程介绍及详情请见:http://www.cctry.com/static/vip/index.html
VC驿站Vip会员详情请见:http://www.cctry.com/static/vip/index.html




上一篇:VC++高级班之窗口篇-[2]MFC的消息映射机制
下一篇:VC++高级班之窗口篇-[4]让程序只运行一个实例

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-11-14 20:14

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表