달력

12

« 2024/12 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

다이얼로그 기반 프로그램에서 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
출처: 데브피아
그럼 이만...
:
Posted by Lunaness