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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值