// 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