QQ登录

只需一步,快速开始

200上位机VC MFC任务栏下指定程序前端显示

[ 复制链接 ]

200上位机VC MFC任务栏下指定程序前端显示

200上位机VC MFC任务栏下指定程序前端显示
200上位机VC MFC任务栏下指定程序前端显示
功能展示
有时在桌面上有过多程序,我们想将任务上指定的程序窗口最前端显示,方便用户进行下一步的操作,我们就得编程实现这一功能,当前例程实现罗列出任务栏上全部程序窗口,再最前端显示选择的程序,效果如图;
要点提示
全部窗口的罗列功能我们可以用函数GetWindow()和GetWindowText()结合实现 ;
GetWindow()函数原型:HWNDGetWindow(HWND hWnd,UNIT nCmd)
参数含义:
hWnd:窗口句柄。要获得的窗口句柄是依据nCmd参数值相对于这个窗口的句柄。
nCmd:说明指定窗口与要获得句柄的窗口之间的关系。该参数值可以是下列之一:
GW_CHILD(&H5):如果指定窗口是父窗口,则获得的是在Tab序顶端的子窗口的句柄,否则为NULL。函数仅检查指定父窗口的子窗口,不检查继承窗口。
GW_ENABLEDPOPUP(&H6):(WindowsNT5.0)返回的句柄标识了属于指定窗口的处于使能状态弹出式窗口(检索使用第一个由GW_HWNDNEXT 查找到的满足前述条件的窗口);如果无使能窗口,则获得的句柄与指定窗口相同。
GW_HWNDFIRST(&H0):返回的句柄标识了在Z序最高端的相同类型的窗口。如果指定窗口是最高端窗口,则该句柄标识了在Z序最高端的最高端窗口;如果指定窗口是顶层窗口,则该句柄标识了在z序最高端的顶层窗口:如果指定窗口是子窗口,则句柄标识了在Z序最高端的同属窗口。
GW_HWNDLAST(&H1):返回的句柄标识了在z序最低端的相同类型的窗口。如果指定窗口是最高端窗口,则该柄标识了在z序最低端的最高端窗口:如果指定窗口是顶层窗口,则该句柄标识了在z序最低端的顶层窗口;如果指定窗口是子窗口,则句柄标识了在Z序最低端的同属窗口。
GW_HWNDNEXT(&H2):返回的句柄标识了在Z序中指定窗口下的相同类型的窗口。如果指定窗口是最高端窗口,则该句柄标识了在指定窗口下的最高端窗口:如果指定窗口是顶层窗口,则该句柄标识了在指定窗口下的顶层窗口;如果指定窗口是子窗口,则句柄标识了在指定窗口下的同属窗口。
GW HWNDPREV(&H3):返回的句柄标识了在Z序中指定窗口上的相同类型的窗口。如果指定窗口是最高端窗口,则该句柄标识了在指定窗口上的最高端窗口;如果指定窗口是顶层窗口,则该句柄标识了在指定窗口上的顶层窗口;如果指定窗口是子窗口,则句柄标识了在指定窗口上的同属窗口。
GW_OWNER(&H4):返回的句柄标识了指定窗口的所有者窗口(如果存在)。GW_OWNER与GW_CHILD不是相对的参数,没有父窗口的含义,如果想得到父窗口请使用GetParent()。例如:例如有时对话框的控件的GW_OWNER,是不存在的。
返回值:如果函数成功,返回值为窗口句柄;如果与指定窗口有特定关系的窗口不存在,则返回值为NULL。
若想获得更多错误信息,请调用GetLastError()函数查看具体错误代码。
指定窗口的最前端显示可以用函数SetForegroundWindow();SetForegroundWindow函数将创建指定窗口的线程设置到前台,并且激活该窗口。键盘输入转向该窗口,并为用户改各种可视的记号。系统给创建前台窗口的线程分配的权限稍高于其他线程;此函数无参数直接调用设置便可;
实现功能
1.新建基于对话框的应用程序
2.拖拽一组合框ID为IDC_COMBO1用于显示任务栏上的全部窗口名称;
拖拽两按钮<罗列任务栏打开程序><前端显示选择的程序>关联函数
  1. void CGkbc8Dlg::OnExplor()
  2. {
  3.         CString StrCaption;
  4.         CComboBox *pCombobox = (CComboBox *)GetDlgItem(IDC_COMBO1);//获得组合框 指针
  5.         pCombobox->ResetContent();//删除组合框全部内容
  6.         CWnd* pWnd=AfxGetMainWnd()->GetWindow(GW_HWNDFIRST);
  7.         while (pWnd)
  8.         {
  9.                 if (pWnd ->IsWindowVisible () &&  pWnd ->GetWindowTextLength () && !pWnd ->GetOwner ())
  10.                 {
  11.                         pWnd ->GetWindowText (StrCaption);
  12.                         pCombobox->AddString(StrCaption);
  13.                 }
  14.                 pWnd=pWnd->GetWindow (GW_HWNDNEXT);
  15.         }
  16.         pCombobox->SetCurSel(0);//设置初始选项
  17. }
复制代码
  1. void CGkbc8Dlg::OnForground()
  2. {
  3.         CComboBox *pCombobox = (CComboBox *)GetDlgItem(IDC_COMBO1);//获得组合框 指针
  4.         CString sText;
  5.         pCombobox->GetLBText(pCombobox->GetCurSel(),sText);
  6.         //
  7.         CWnd *pWnd=CWnd::FindWindow(NULL,sText);
  8.         if(pWnd!=NULL)
  9.         {
  10.                 CWnd *pWndTop=pWnd->GetLastActivePopup();
  11.                 pWnd->SetForegroundWindow();
  12.                 if(pWnd->IsIconic())
  13.                         pWnd->ShowWindow(SW_SHOWNORMAL);
  14.                 if(pWnd!=pWndTop)
  15.                 {
  16.                         pWndTop->SetForegroundWindow();
  17.                 }
  18.         }
  19.         else
  20.         {
  21.                 MessageBox("设置前台窗口操作失败!","信息提示",MB_OK);
  22.         }        
  23. }
复制代码
我们来演示下功能实现的整个过程
请点击此处下载

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

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

文件名称:200.上位机VC MFC任务栏下指定程序前端显示.rar 
文件大小:125.41 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!


回复

使用道具 举报

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