천객만래 [千客萬來] (It has an interminable succession of visitors)

'이미지 로딩'에 해당되는 글 1건

  1. 2011.12.20 [개발/MFC] 초기화면 실행 전에 이미지 로딩하는 방법
[개발/MFC] 초기화면 실행 전에 이미지 로딩하는 방법

출처: http://blog.naver.com/PostView.nhn?blogId=wlsdnrtjd&logNo=20141847405&categoryNo=0&parentCategoryNo=17&viewDate=&currentPage=8&postListTopCurrentPage=1&isAfterWrite=true&userTopListOpen=true&userTopListCount=10&userTopListManageOpen=false&userTopListCurrentPage=8
1. 리소스 뷰에 초기화면 실행시 보여질 BMP 이미지를 추가한다.

2. 다이얼로그 박스를 하나 추가한다. insert Dialog 클릭하여 ID를 정해주고 Styles탭의 
   Title 체크박스를 해제하고 Boarder라고 정해진 리스트 박스에서 None으로 바꾼다.

3. Picture 컨트롤 박스를 다이얼로그 박스 위에 추가하여 properties( 속성 )창을 활성화한다.

4. Picture properties에서 Type을 Bitmap으로 정하고 Image란에는 자신이 올렸던 BMP 이미지 ID를 선택한다.

5. 클래스 위저드를 실행 ( Ctrl + W )

6. Adding a Class라는 창이 하나 뜨면은 OK버튼을 눌러서 CSplash라고 정해준 다음 클래스를 생성한다. 
   그러면 FileView에서 Splash.c파일과 Splash.h파일이 추가되는 것을 볼 수 있고 물론 ClassView에서도 
   확인할 수 있다.


7. 그런 후 생성된 파일을 링크를 시켜야 실행이 되기 때문에 CMainFrame(MainFrm.h)를 클릭하여 맨 상단에 아래와 같은 코드를 추가한다.

#include "Splash.h"


8. 위 코드를 추가를 하였다면 생성된 클래스에 초기화 하는 부분에 보여주기 위해 타이머를 설정하여야 한다.
즉, 여기서 클래스 위저드 실행( Ctrl + W )한다. WM_INITDIALOG를 선택하여 아래와 같은 코드를 추가한다.

   BOOL CSplash::OnInitDialog() 
   {
       CDialog::OnInitDialog();

       // TODO: Add extra initialization here
       SetTimer(0,2000,NULL);

       return TRUE;  // return TRUE unless you set the focus to a control
       // EXCEPTION: OCX Property Pages should return FALSE
    }


9. 여기서 타이머를 설정해줬기 때문에 OnTimer함수가 필요하다.
   클래스 위저드의 WM_TIMER를 선택하여 아래와 같은 코드를 추가한다.

    void CSplash::OnTimer(UINT nIDEvent) 
    {
        // TODO: Add your message handler code here and/or call default
        EndDialog(0);

        CDialog::OnTimer(nIDEvent);
    }


10. 이것은 클래스 들을 초기화 시킨 부분이니 초기에 생성하는 MainFrm.cpp 부분에서 
     OnCreate 함수를 찾아가 아래와 같은 코드를 추가한다.

    m_splash.DoModal(); // 초기 실행화면 이미지 표현을 한다. 


11. 그러면 Ctrl + F5를 눌러보자.. 그럼 MDI가 실행되기 전에 2초 정도의 이미지가 보여질 것이다.
Posted by SB패밀리