VC/MFC如何将本窗口显示并激活成为当前窗口 ?托盘程序

本以为很简单的,没想到各种函数都试了,结果还是不行,只能在任务栏中显示,还要点击以下任务栏那里才可以看得到窗口。。。

//    CRect c;

//    this->GetWindowRect(&c);

this->ShowWindow(SW_SHOWNA);//简单的显示主窗口完事儿

this->SetActiveWindow();

this->SetForegroundWindow();

//this->SetWindowPos(this,LOWORD(lParam),HIWORD(lParam),c.Width(),c.Height(),SWP_NOACTIVATE);

this->BringWindowToTop();

上面都没用

------------------------------------------------------------------------------

这个小的不能再小的功能都无法实现,竟然还要一个微软没有公开的函数...

-----------------------------------------------------------------------------------

SwitchToThisWindow能够激活一个指定程序的窗口,使这个窗口弹出到屏幕的最前面。如果待激活的窗口是处于最小化状态,这个函数能使窗口还原并在屏幕中最前。其实SwitchToThisWindow这个Windows API函数是个所谓的未公开的API,不过虽然头文件中没有它的定义,但在MSDN中是有它的说明的,所以我觉着它顶多算个半公开的API。SwitchToThisWindow是在User32.DLL中导出的。
函数原型:

VOID SwitchToThisWindow(HWND hWnd,BOOL fAltTab);

参数说明:

hWnd:要激活的窗口句柄;

fAltTab:是否使最小化的窗口还原。

使用说明:

想要将最小化的窗口还原并使其在屏幕最前,只要向fAltTab参数传入TRUE就可以了。

使用例子:

//由于没有头文件,需要自己声明函数

typedef void (WINAPI *PSWITCHTOTHISWINDOW) (HWND,BOOL);

PSWITCHTOTHISWINDOW SwitchToThisWindow;

HMODULE hUser32=GetModuleHandle(_T("user32"));

SwitchToThisWindow=(PSWITCHTOTHISWINDOW)GetProcAddress(hUser32,"SwitchToThisWindow");

//现在就可以使用此函数了

SwitchToThisWindow(hWindow,TRUE);

http://zhidao.baidu.com/link?url=_G_3IjsQplx4v1E6lLVx0SxLlwX6DjX7rDfAJRf5LufNB_W2r0yX9eHl7Dy4onXzn0AEp07lv7jBQHr1YpDYhK

时间: 2024-08-08 05:05:30

VC/MFC如何将本窗口显示并激活成为当前窗口 ?托盘程序的相关文章

VC/MFC如何添加启动界面

2015-05 转自 香远益清原文VC/MFC如何添加启动界面 1.基于框架类的应用程序添加启动画面的步骤(利用组件库中的Splash Screen组件生成Splash1.cpp 和Splash1.h 这两个文件) (1)用Photoshop等制作启动画面图像,保存为bmp格式.  (2)用Appwizard建一个基于单文档的工程Splash. (3)在资源中插入位图资源     打开VC++的资源编辑器,用鼠标右键单击Resources文件夹,选择Import命令,插入所制作的位图.如果位图超

VC++ MFC SDI/MDI Ribbon程序的停靠窗格被关闭后如何再次显示

问题:MFC程序使用了Ribbon风格的,所以其他菜单都不显示了.有一个系统自动生成的停靠窗格,被该窗格不小心关掉后,再调试也显示不出来了.肿么办啊? 解答:消除停靠位置,存储记忆功能:在CMainFrame中,CreateDocablePane之前,调用CMainFrame::EnableLoadDockState(FALSE);即可. 如果MFC程序不是Ribbon风格的,窗体界面一般如下图所示: 可以通过在View视图菜单里添加如下代码实现隐藏的窗格的再次显示: CDockablePane

VC/MFC 当鼠标移到控件上时显示提示信息

VC/MFC 当鼠标移到控件上时显示提示信息 ToolTip是Win32中一个通用控件,MFC中为其生成了一个类CToolTipCtrl,总的说来其使用方法是较简单的,下面讲一下它的一般用法和高级用法. 一般用法步骤:  添加CToolTipCtrl成员变量 m_tt.  在父窗口中调用EnableToolTips(TRUE);  在窗口的OnCreate(或者其他适当的位置)中向ToolTip中添加需要显示Tip的子窗口,并同时指定相应的显示字串CToolTipCtrl::AddTool(pW

基于VC++ Win32+CUDA+OpenGL组合与VC++ MFC SDI+CUDA+OpenGL组合两种方案的遥感影像显示:获得的重要结论!

1.基于VC++ Win32+CUDA+OpenGL组合的遥感影像显示 在该组合方案下,初始化时将OpenGL设置为下面两种方式,效果一样 //设置方式1 glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGBA); //设置方式2 glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB); 从遥感影像数据中提取出像素数据,可将其中的R.G.B三通道依次赋值给OpenGL的像素缓冲区对象 (PBO,Pixel Buffer Obje

VC/MFC程序开启关闭其他软件,更改窗口类

流程: 1. 获取目标程序的  窗口HWND hWnd HWND hWnd = ::FindWindowA(_T("SoftWareClassName"),NULL); //获取需要软件的窗口 2. int ret = ::SendMessageA(hWnd ,WM_CLOSE,0,0); //关闭软件 3. WinExec(D:\\Foxit Reader.exe,SW_SHOWMAXIMIZED);  //开启软件 关于FindWindow()有两个参数  第一个是窗口类名,第二个

关于VC画图闪屏的问题 - VC/MFC / 基础类

显示图形如何避免闪烁,如何提高显示效率是问得比较多的问题. 而且多数人认为MFC的绘图函数效率很低,总是想寻求其它的解决方案. MFC的绘图效率的确不高但也不差,而且它的绘图函数使用非常简单, 只要使用方法得当,再加上一些技巧,用MFC可以得到效率很高的绘图程序. 我想就我长期(呵呵当然也只有2年多)使用MFC绘图的经验谈谈 我的一些观点. 1.显示的图形为什么会闪烁? 我们的绘图过程大多放在OnDraw或者OnPaint函数中,OnDraw在进行屏 幕显示时是由OnPaint进行调用的.当窗口

学习VC MFC开发必须了解的常用宏和指令

1.#include指令  包含指定的文件 2.#define指令   预定义,通常用它来定义常量(包括无参量与带参量),以及用来实现那些"表面似和善.背后一长串"的宏,它本身并不在编译过程中进行,而是在这之前(预处理过程)就已经完成了 3.#typedef指令 常用来定义一个标识符及关键字的别名它是语言编译过程的一部分,但它并不实际分配内存空间. 4.#ifndef   #else   #endif指令  条件编译.一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容

学习VC MFC开发必须了解的常用宏和指令(转)————复习一下

1.#include指令  包含指定的文件 2.#define指令   预定义,通常用它来定义常量(包括无参量与带参量),以及用来实现那些“表面似和善.背后一长串”的宏,它本身并不在编译过程中进行,而是在这之前(预处理过程)就已经完成了 3.#typedef指令 常用来定义一个标识符及关键字的别名它是语言编译过程的一部分,但它并不实际分配内存空间. 4.#ifndef   #else   #endif指令  条件编译.一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容只在满足一

[VC/MFC]虚拟列表控件

[VC/MFC]虚拟列表控件 一.什么是虚拟列表控件 虚拟列表控件是指带有LVS_OWNERDATA风格的列表控件.. 二.为什么使用虚拟列表控件 我们知道,通常使用列表控件CListCtrl,需要调用InsertItem把要显示的数据插入列表中,之后我们就不必关心数据在哪里了,这是因为控件自己开辟了内存空间来保存这些数据.现在假设我们要显示一个数据库,里面的信息量很大,有几十万条记录.通常有两种方法解决这个问题:1是仅仅在ListCtrl中插入少量的数据,比如100个,然后通过[上一页][下一