| 对桌面窗口显示隐藏操作--上位机VC   对桌面窗口显示隐藏操作--上位机VC
 效果展示
 同时打开多个窗口时,有时仅想显示一个窗口,就得对其他窗口进行暂时隐藏的操作,当前例程实现这一功能,效果如图,程序运行时会列表当前桌面打开的可见窗口,也可点击<刷新窗口>重新检查打开窗口个数,选择列出的窗口名就可以进行显示及隐藏操作;
 要点提示
 全部窗口的迭代搜索可以使用函数EnumWindows()实现,该函数枚举所有屏幕上的顶层窗口,并将窗口句柄传送给应用程序定义的回调函数。回调函数返回FALSE将停止枚举,否则EnumWindows函数继续到所有顶层窗口枚举完为止。 函数原型 BOOL EnumWindows(WNDENUMPROC lpEnumFunc,LPARAMlParam); 参数: lpEnumFunc:指向一个应用程序定义的回调函数指针,请参看EnumWindowsProc。 lPararm:指定一个传递给回调函数的应用程序定义值。回调函数原型 BOOL CALLBACK  EnumWindowsP(), 在回调函数中我们用一个动态数组类Crray保存枚举得到的全部窗口,后续就可对这些得到的窗口进行显示与隐藏操作; 实现功能 1.新建基于对话框的应用程序 
 2.拖拽一列表框控件关联变量CListBox  m_list;添加按钮<隐藏选中窗口><显示窗口><刷新窗口>关联按钮的点击函数 复制代码void CGkbc8Dlg::OnButton1() 
{
        //获取可见窗口时数组索引已与列表框索引对应
        int nNum = g_array.GetSize();
        for(int i = 0;i <nNum;i++)
        {
                int tmp = m_list.GetSel(i);
                if(tmp == 0)
                        continue;
                ::ShowWindow(g_array.GetAt(i),FALSE);
        }        
}
void CGkbc8Dlg::OnButton3() 
{
        m_list.ResetContent();
        g_array.RemoveAll();
        CString sText;
        char cWndTitle[_MAX_PATH];
        char cClassName[_MAX_PATH];
        ::EnumWindows(EnumWindowsProc,NULL);
        int nNum = g_array.GetSize();
        for(int i = 0;i <nNum;i++)
        {
                HWND hWnd = g_array.GetAt(i);
                ::GetWindowText(hWnd,cWndTitle,_MAX_PATH);
                ::GetClassName(hWnd,cClassName,MAX_PATH);
                sText.Format("索引:%d  标题名:%s,  类名:%s",i,cWndTitle,cClassName);
                m_list.AddString(sText);
        }
}
复制代码
void CGkbc8Dlg::OnButton2() 
{
        int nNum = g_array.GetSize();
        for(int i = 0;i <nNum;i++)
        {
                int tmp = m_list.GetSel(i);
                if(tmp == 0)
                        continue;
                ::ShowWindow(g_array.GetAt(i),TRUE);
        }
}
3.添加回调函数 复制代码#include <afxtempl.h>
CArray<HWND,HWND> g_array;
BOOL CALLBACK EnumWindowsProc(HWND hWnd,LPARAM lParam)
{
        if(::GetWindowLong(hWnd,GWL_STYLE)& WS_VISIBLE)
        {
                g_array.Add(hWnd);
         }
        return 1;
}
我们来演示下功能实现的整个过程 
   如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!    
 
 |