본문 바로가기

C, C++, C#/MFC

[MFC] 프로그램 실행시 바로 Dialog 숨기기 SHOW_HIDE

반응형

안녕하세요 오랜만에 포스팅을 합니다.

 

이번에 서버 프로그래밍을 하면서 각각 프로그램을 따로 만들어 모듈식으로 만들던 중

 

다이얼로그 프로그램이 실행 되면서 바로 HIDE하기 위한 소스입니다.

 

사실 타 블로그에 다이얼로그의 크기 변화시 처리해주는 방식이있지만 복사 붙여넣기가 힘들어서 아래 방법을 찾았습니다.

 

  1. BOOL CYOUDlg::OnInitDialog()
  2. { 
  3.     // IDM_ABOUTBOX는 시스템 명령 범위에 있어야 합니다.
  4.     ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  5.     ASSERT(IDM_ABOUTBOX < 0xF000);
  6.  
  7.     CMenu* pSysMenu = GetSystemMenu(FALSE);
  8.     if (pSysMenu != NULL)
  9.     {
  10.         BOOL bNameValid;
  11.         CString strAboutMenu;
  12.         bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
  13.         ASSERT(bNameValid);
  14.         if (!strAboutMenu.IsEmpty())
  15.         {
  16.             pSysMenu->AppendMenu(MF_SEPARATOR);
  17.             pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  18.         }
  19.     }
  20.  
  21.     // 이 대화 상자의 아이콘을 설정합니다. 응용 프로그램의 주 창이 대화 상자가 아닐 경우에는
  22.     //  프레임워크가 이 작업을 자동으로 수행합니다.
  23.     SetIcon(m_hIcon, TRUE);         // 큰 아이콘을 설정합니다.
  24.     SetIcon(m_hIcon, FALSE);        // 작은 아이콘을 설정합니다.
  25.  
  26.     //! 다이얼로그 숨김---------------------------------------------------
  27.     ShowWindow(SW_SHOWMINIMIZED);//! 최소화후 숨겨야 화면에 나타나지 않음
  28.     PostMessage(WM_SHOWWINDOW, FALSE, SW_OTHERUNZOOM);
  29.     //--------------------------------------------------------------------
  30.  }

※위 소스 중 OnInitDialog 함수 속 빨간 글자의 소스를 추가 하시면 됩니다.

 

 

 ShowWindow(SW_HIDE);
- 원래 프로그램을 숨기는 소스지만 OninitDialog 후 SW_SHOW가 되므로 이 소스만으론 숨길수 없습니다.


 ShowWindow(SW_SHOWMINIMIZED);
- 최소화 후에 숨겨줘야 화면의 깜박거림이 없습니다.

 

 

반응형

 

 

결과 화면 입니다.

- 작업 관리자에는 프로세스가 있지만 하단 창에는 없는걸 보실수 있습니다.

 

참고 사이트 http://purelab.net/zbxe/guruin/87929

반응형