반응형
시스템 자동시작에다 등록해놓고 프로그램이 시작되면 메인 다이얼로그를 숨기고 트레이로 이동하려 했으나 안되더라..
찾아보니 아래와 같은 방법이..+.+
다이얼로그 기반 프로그램에서 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
출처: 데브피아
반응형
'Study > MFC' 카테고리의 다른 글
CtreeCtrl 아이템 높이 조절하기! Ctree Height 조절 (0) | 2011.09.28 |
---|---|
CtreeCtrl의 사용법!!! 쉽게 쉽게~ (0) | 2011.09.28 |
TrayIcon이 사라지는 버그 현상 (0) | 2011.09.28 |
mfc TextOut 배경 투명하게 쓰기.. (0) | 2011.09.28 |
유니코드와 멀티바이트에 따른 컨트롤 테마 변경 (0) | 2011.09.28 |
댓글