◆ 강제로 윈도우를 최상위로 보내야함
◆ win98 이후 SetForegroundWindow() api 가 적용이 안됨
◆ SetForegroundWindowForce() 코드로 해결
◆ minimize 상태에선 활성화가 안되었음
◆ 윈도우 상태를 체크하여 minimize 일 경우 이전상태로 되돌리는 코드 추가
>> 코드
void SetForegroundWindowForce(HWND hWnd)
{
HWND hWndForeground = ::GetForegroundWindow();
if(hWndForeground == hWnd) return;
DWORD Strange = ::GetWindowThreadProcessId(hWndForeground, NULL);
DWORD My = ::GetWindowThreadProcessId(hWnd, NULL);
if( !::AttachThreadInput(Strange, My, TRUE) )
{
ASSERT(0);
}
::SetForegroundWindow(hWnd);
::BringWindowToTop(hWnd);
::SetFocus(hWnd);
if( !::AttachThreadInput(Strange, My, FALSE) )
{
ASSERT(0);
}
}
void CMainFrame::XXXX(...)
{
...
if ( GetStyle() & WS_MINIMIZE )
{
ShowWindow( SW_SHOWNOACTIVATE);
UpdateWindow();
}
SetForegroundWindowForce( this->m_hWnd);
...
}
'MFC' 카테고리의 다른 글
다이얼로그 숨겨서 실행하기 (0) | 2019.06.09 |
---|---|
CString -> LPWSTR 로 형 변환 (0) | 2019.05.06 |
ASSERT & VERIFY & TRACE (0) | 2019.04.04 |
뷰에 컨트롤 그리기(버튼컨트롤&리스트컨트롤) (0) | 2019.04.02 |
MFC 자주 쓰이는 녀석들 (0) | 2019.04.01 |