首页 > 代码库 > VC/MFC如何将本窗口显示并激活成为当前窗口 ?托盘程序

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


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