使用互斥后,再次打开窗口时,怎么使该窗口获得焦点?
CWnd *pMainWnd=AfxGetMainWnd();
pMainWnd->SetWindowPos(&(pMainWnd->wndTopMost),0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);
可是窗口没有活得焦点啊,标题栏是灰的。怎么样获得焦点呢?
::SetActiveWindow(AfxGetMainWnd()->m_hWnd);不行啊
问题点数:0、回复次数:7Top
1 楼kui(kui)回复于 2003-08-03 19:41:07 得分 0
pMainWnd->ShowWindow(SW_SHOW);
pMainWnd->SetFocus();Top
2 楼DeautyFan(可可魔仙)回复于 2003-08-03 19:48:22 得分 0
SetFocusTop
3 楼cokeclassic(灌水可乐)回复于 2003-08-04 08:48:20 得分 0
这样窗口始终在最前面了,想在点击别的程序打开的窗口时,让原来在最前面的退居后面怎么办呢?Top
4 楼lightwell(大道不过两三行)回复于 2003-08-04 08:53:53 得分 0
SetForegroundWindowTop
5 楼cokeclassic(灌水可乐)回复于 2003-08-04 09:53:06 得分 0
另外的程序,不是我写的啊,不能用setforegroundwindowTop
6 楼wangjinwang(王者之疯)回复于 2003-08-04 10:09:11 得分 0
调用这个函数,或用里面的代码
// 单次运行控制函数
BOOL StartCheck(CWinApp * app)
{
::CreateMutex( NULL, TRUE, app->m_pszExeName );
if( GetLastError() == ERROR_ALREADY_EXISTS )
{
// Set Focus to Previous instance
// First find our previous application's main window.
CWnd * pPrevWnd = CWnd::GetDesktopWindow()->GetWindow(GW_CHILD);
while( pPrevWnd )
{
if( ::GetProp( pPrevWnd->GetSafeHwnd(), app->m_pszExeName ) )
{
// Found window, now set focus to the window.
// First restore window if it is currently iconic.
if( pPrevWnd->IsIconic() )
pPrevWnd->ShowWindow(SW_RESTORE);
// Set focus to main window.
pPrevWnd->SetForegroundWindow();
// If window has a pop-up window, get next window in list.
pPrevWnd->GetLastActivePopup()->SetForegroundWindow();
return FALSE;
}
// Did not find window, get next window in list.
pPrevWnd=pPrevWnd->GetWindow(GW_HWNDNEXT);
}
TRACE("Could not find previous instance main window!\n");
return FALSE;
}
return TRUE;
}
Top
7 楼cokeclassic(灌水可乐)回复于 2003-08-04 15:16:25 得分 0
wangjinwang(王进)
你的代码不能达到要求啊Top




