QQ登录

只需一步,快速开始

对桌面窗口显示隐藏操作--上位机VC

[ 复制链接 ]

对桌面窗口显示隐藏操作--上位机VC

对桌面窗口显示隐藏操作--上位机VC

对桌面窗口显示隐藏操作--上位机VC
效果展示
同时打开多个窗口时,有时仅想显示一个窗口,就得对其他窗口进行暂时隐藏的操作,当前例程实现这一功能,效果如图,程序运行时会列表当前桌面打开的可见窗口,也可点击<刷新窗口>重新检查打开窗口个数,选择列出的窗口名就可以进行显示及隐藏操作;
要点提示
全部窗口的迭代搜索可以使用函数EnumWindows()实现,该函数枚举所有屏幕上的顶层窗口,并将窗口句柄传送给应用程序定义的回调函数。回调函数返回FALSE将停止枚举,否则EnumWindows函数继续到所有顶层窗口枚举完为止。 函数原型 BOOL EnumWindows(WNDENUMPROC lpEnumFunc,LPARAMlParam); 参数: lpEnumFunc:指向一个应用程序定义的回调函数指针,请参看EnumWindowsProc。 lPararm:指定一个传递给回调函数的应用程序定义值。回调函数原型 BOOL CALLBACK  EnumWindowsP(),
在回调函数中我们用一个动态数组类Crray保存枚举得到的全部窗口,后续就可对这些得到的窗口进行显示与隐藏操作;
实现功能
1.新建基于对话框的应用程序

2.拖拽一列表框控件关联变量CListBox  m_list;添加按钮<隐藏选中窗口><显示窗口><刷新窗口>关联按钮的点击函数
  1. void CGkbc8Dlg::OnButton1()
  2. {
  3.         //获取可见窗口时数组索引已与列表框索引对应
  4.         int nNum = g_array.GetSize();
  5.         for(int i = 0;i <nNum;i++)
  6.         {
  7.                 int tmp = m_list.GetSel(i);
  8.                 if(tmp == 0)
  9.                         continue;
  10.                 ::ShowWindow(g_array.GetAt(i),FALSE);
  11.         }        
  12. }

  13. void CGkbc8Dlg::OnButton3()
  14. {
  15.         m_list.ResetContent();
  16.         g_array.RemoveAll();
  17.         CString sText;
  18.         char cWndTitle[_MAX_PATH];
  19.         char cClassName[_MAX_PATH];
  20.         ::EnumWindows(EnumWindowsProc,NULL);
  21.         int nNum = g_array.GetSize();
  22.         for(int i = 0;i <nNum;i++)
  23.         {
  24.                 HWND hWnd = g_array.GetAt(i);
  25.                 ::GetWindowText(hWnd,cWndTitle,_MAX_PATH);
  26.                 ::GetClassName(hWnd,cClassName,MAX_PATH);
  27.                 sText.Format("索引:%d  标题名:%s,  类名:%s",i,cWndTitle,cClassName);
  28.                 m_list.AddString(sText);
  29.         }
  30. }
复制代码

  1. void CGkbc8Dlg::OnButton2()
  2. {
  3.         int nNum = g_array.GetSize();
  4.         for(int i = 0;i <nNum;i++)
  5.         {
  6.                 int tmp = m_list.GetSel(i);
  7.                 if(tmp == 0)
  8.                         continue;
  9.                 ::ShowWindow(g_array.GetAt(i),TRUE);
  10.         }
  11. }
复制代码
3.添加回调函数
  1. #include <afxtempl.h>
  2. CArray<HWND,HWND> g_array;
  3. BOOL CALLBACK EnumWindowsProc(HWND hWnd,LPARAM lParam)
  4. {
  5.         if(::GetWindowLong(hWnd,GWL_STYLE)& WS_VISIBLE)
  6.         {
  7.                 g_array.Add(hWnd);
  8.          }
  9.         return 1;
  10. }
复制代码
我们来演示下功能实现的整个过程

请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:对桌面窗口显示隐藏操作--上位机VC.rar 
文件大小:203.52 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

如果您认可,可联系功能定制!

  

如果您着急,充值会员可直接联系发您资料!

  

QQ联系我

微信扫扫联系我

  


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索