void CMyDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
CDialog::OnSysCommand(nID, lParam);
CWnd *pWnd = GetForegroundWindow();
SetForegroundWindow();
pWnd->SetActiveWindow();
}如上一段程序,我想在对话框最小化后(并不是最小化到任务栏)把另外的窗口激活,怎么一运行pWnd->SetActiveWindow()就会出错呢,换成别的如SetFocus也会出错。这是怎么回事啊?
{
CDialog::OnSysCommand(nID, lParam);
CWnd *pWnd = GetForegroundWindow();
SetForegroundWindow();
pWnd->SetActiveWindow();
}如上一段程序,我想在对话框最小化后(并不是最小化到任务栏)把另外的窗口激活,怎么一运行pWnd->SetActiveWindow()就会出错呢,换成别的如SetFocus也会出错。这是怎么回事啊?
在你调用pWnd- >SetActiveWindow之前先用IsWindow判断一下是否有效句柄﹗
::AfxGetMainWnd()->m_hWnd;
if( pWnd->m_hWnd && ::IsWindow(m_hWnd)){
...;
}
HWND hwnd = ::GetForegroundWindow();
::SetForegroundWindow(hwnd);
::SetActiveWindow(hwnd);