본문 바로가기
Study/MFC

프로그램 실행시 메인 다이얼로그 숨기기

by 뿡뿡대마왕 2011. 9. 28.
반응형

시스템 자동시작에다 등록해놓고 프로그램이 시작되면 메인 다이얼로그를 숨기고 트레이로 이동하려 했으나 안되더라..
찾아보니 아래와 같은 방법이..+.+

다이얼로그 기반 프로그램에서 DoModal 호출로 윈도우가 보이게 된다

ShowWindow(SW_HIDE)를 써도 안먹히기는 마찬가지....

OnInitDialog()에 아래와 같이 ShowWindowEx() 메소드를 넣어주면 된다

    ShowWindowEx(SW_HIDE);

그리고 윈도우 메시지 헨들러 중 WM_WINDOWPOSCHANGING을 추가하여 넣어주면 된다

아래는 원문...

-----------------------------------------------------------------------------------------------------

아래와 같이 WM_WINDOWPOSCHANGING 메시지 핸들러에서 들어오는 구조체의 플래그를 설정하면 DoModal()로 설정하더라도

윈도우가 보이는 것을 방지할 수 있다.

일단 m_bShowFlag 값에 따라서 변경하면 되고... m_bShowFlag 값은 ShowWindowEx() 함수를 다시 만들어서 그안에서 설정하도록 하면 됩니다. ShowWindow() 함수가 가상함수가 아니라서 어쩔 수 없이 새로 정의한 함수를 사용해야 합니다.

void CHidDlgDlg::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos) 
{
CDialog::OnWindowPosChanging(lpwndpos);

// TODO: Add your message handler code here
if(m_bShowFlag)
lpwndpos->flags |= SWP_SHOWWINDOW;
else
lpwndpos->flags &= ~SWP_SHOWWINDOW;

}

BOOL CHidDlgDlg::ShowWindowEx(int nCmdShow)
{
m_bShowFlag = (nCmdShow == SW_SHOW);
return (GetSafeHwnd()) ? ShowWindow(nCmdShow) : TRUE;
}
출처: http://www.gosu.net/GosuWeb/Article-detail.aspx?ArticleCode=473
출처: 데브피아
반응형

댓글