为了限制程序只有一个实例运行。 第二次运行的时候我想把已经启动的那个窗口跳到顶层。
但如果它是最小化状态。 就跳不出来了。 我该怎么做?已经尝试了 BringWindowToTop() SetForegroundWindow() SetActiveWindow() 等等。
貌似都没有把这个最小化的窗口弹出来。 请教有做过这方面的朋友说一声。 多谢。
解决方案 »
- WinDbg中的Calls窗口显示的调用栈内容有点少
- 怎样在界面中动态地删除ComboBox控件
- GetPiexl()和SetPiexl()问题
- 关于读取文件的问题!!!!
- 问一个关于消息的中级难度小问题
- 如何在属性页中显示DataGrid控件和ADODC控件
- 鼠标托动窗口时, 当鼠标离开速度过快, 使窗口接收不到下一个移动消息, 窗口不会移动了, 有何办法解决
- try和catch的问题?
- mfc对话框程序 主线程有一个定时器,当定时器刷新后 CFileDialog窗口 无响应
- 为何创建窗口返回句柄总是为NULL?(急!)
- 关于twain,关于CMainFrame setimage,关于指针,请教..........
- Image报错
setwindowpos
if(pMainWnd->IsIconic())
pMainWnd->ShowWindow(SW_RESTORE);
pMainWnd->SetActiveWindow();
pMainWnd->BringWindowToTop();
pMainWnd->SetForegroundWindow();
::SetForegroundWindow(hWndPrevious);
::SetForegroundWindow(::GetLastActivePopup(hWndPrevious));
这几句完全可以。
就是只有托盘的也可以出来。
要找到hWndPrevious
if(hWnd!=NULL)//already exist
{
if(::IsIconic(hWnd))
::ShowWindow(hWnd,SW_SHOWNORMAL);
::SetForegroundWindow(hWnd);
::SetActiveWindow(hWnd);
}
else//open a new process
{
CString str;
char Path[MAX_PATH];
GetModuleFileName(NULL,Path,MAX_PATH);
*(strrchr(Path,'\\'))=0;
str.Format("%s\\xx.exe",Path);
ShellExecute(NULL, _T("open"), str, NULL,NULL, SW_SHOW);
}
谢谢joey_zoy。
谢谢大家。
SetForegroundWindow(handle);
::ShowWindow(hWnd,SW_SHOWNORMAL);
::SetForegroundWindow(hWnd);
::SetActiveWindow(hWnd);