[MFC :: OpenGL] IntroPage (옮김)

심플디 2014.04.25 13:18 조회 수 : 1500

04.exe

glu32.dll

glut32.dll

ProjectMFCReport.exe

ProjectOpenGL.exe

res.alz



 

 

<그림 1 :: Intro Page의 예>


<그림 1>의 Intro page는 요번 11월에, LG에게 필자가 했던 프로젝트 프로그램을 주기 위해서 API로 시도했던 요소다.

사실 필자는 만들 생각이 없었는데 교수님께서 해보라고 하셔서 만들어 본 것이다.

만들다 보니 재미있기는 했었는데, api로 윈도우창을 2개 띄우고, 화투패 섞듯이 하나 숨기고 하나 보이게 하는 등,,,, 별 생 쑈를 다했었지... 후 -_-...


그런데 문득 AutoDesk 및 CATIA를 키면서
"고작 Intro에 쓰이는 그림인데... 이렇게 화려하게 만들 필요가 있을까" 
란 생각을 하게 되었고, 끝내 <그림 1>와 같은 디자인으로 intro를 만들게 되었다.

(초기 디자인은 첨부 파일의 애니메이션과 같게 만들 생각이였다. :: 04.exe )


아무튼 이번에는 MFC로 이와 비슷한 것을 만들고자 한다.

그런데 이번에는 Dialog를 지향하고자 한다.

윈도우 창 하나 띄우는데 Frame, App, Doc, View라는 4개의 클래스를 컨트롤 해야 하기 때문에 안 그래도 복잡한데, 미쳤다고 하나를 더 만들겠는가?


특이하게도, 이번에는 결론부터 말하고 진행하려 한다.

보통 하나의 게시물에 담기는 프로그램 로직을 짜는데 2일이 걸리는데 반해, 이것은 드라마 쳐보면서도 5시간 밖에 안걸렸기 때문이다.


<그림 2 :: 완성된 모습>

 

일단 프레임 자체는 Dialog가 맞다.

기본 스타일을 저렇게 설정할 수 있다.

그리고 버튼은 Command button control을 사용하였다.

커멘드 버튼 안에 인터넷에서 가져온 이미지를 붙여서 버튼안에 이미지가 있도록 하였다.


내부의 그림은 예전에 다정이에게 그려주었던 랜더링 그림을 넣었다.

이것 말고도 그림이 들어간 것은 다음과 같다.


랜더링 이미지는 상당히 효과가 좋기 때문에 한번 해 놓으면 사골처럼 우려먹을 수 있어서 좋은 것 같다.

1page는 예전에 창종할 때 콧방귀뀌면서 했던거... 2page는 다정이 과제... 3page는 인범이 과제...

이것 말고도 더 있는데 그것은 좀 생각해 봐야겠다.


사실 Intro page가... 만들기는 어렵지 않은데, 

또 막상 하려면 뒷골에 피가 쏠리기 때문에 왠만한 학생들이 잘 안한다.

그래서 친한 친구들에게 소스코드를 공개해서 같이 점수좀 따먹으려고 랜더링 이미지 몇개를 아끼려고 한다.

사실 인터넷 조금만 뒤져보면 이것보다 더 좋은 랜더링 이미지가 많다.


  

<그림 3 :: 이번에 새로 만든 Intro page>

 

 

LG 껀은 붉은 계열로 했으니, 이번에는 BLUE 계열로 해보고 싶었다.

겨울에 푸르딩딩한거 하는게 조금 못 마땅하긴 하지만 그래도 해보고 싶었다. 

 


<그림 4 :: Intro Dialog>

 

믿기지 않겠지만 Dialog의 밑 바탕은 <그림 4>와 같이 조촐하다. (button은 Command button이다.)

Dialog에 Dlg_Intro라는 클래스 하나 먹여주고,Command Button에 m_command라는 변수 하나 등록해주자.


그리고 OnInitDialog 메서드를 추가해 줘야한다.

보통은 VC 속성탭을 이용하여 메서드를 추가하는것이 일반적이지만, 

얼마전에 스킬업도 해서, 이번에는 조금 특별하게, 필자가 직접 입력할 것이다.


일반적으로, Dialog 기반의 MFC가 아닌 이상 OnInitDialog 메서드는 존재하지 않는다.


<그림 5 :: Intro Dialog>


<그림 6 :: Intro Dialog>



코드를 치면서 느끼겠지만 이 Intropage는 5초가 지나면 자동으로 꺼지게 구성되어 있다.


iDlg_Count가 바로 5초를 담는 변수이다.


iBitmap변수는 랜덤으로 0~2까지의 숫자가 초기화 된다.

이전에 #include "stdlib.h" 및 srand 함수를 선언함으로써, 난수 발생이 시간의 영향을 받게 해 놓았다.

고르게 분포된다고 할 수는 없지만, 일반적으로 킬 때마다 다른 그림이 나올 수 있게 하기 위한 장치 역할을 한다.


Command 버튼을 통해 아이콘을 등록했는데, 아이콘 만드는것 까지 구구절절히 설명하지는 않겠다.

단, 아이콘을 만들었다면 그 아이디는 IDR_ProjectOpenGLTYPE 대신 사용되어야 한다.


개인적으로 필자는 인터넷에서 예전부터 모아왔던 것들 중에 하나를 골라서 아이콘을 적용시켰다.

마지막으로 타이머를 켰다.


물론 타이머가 있으려면 WM_TIMER를 활성화 시켜야 한다.

이에 따라 WM_CREATE, WM_DESTROY, WM_PAINT, WM_TIMER를 활성화 시켰다.


<그림 7 :: Intro Dialog>


 

<그림 8 :: Intro Dialog>

 

코드는 <그림 7>~<그림 8>과 같다.

마지막으로 이 다이얼로그를 ProjectOpenGL 어딘가에 선언해야 하는데, 그것은 OnCreate에서 해도록 하자.

그럼 MFC 창이 뜨기 전에 Dialog가 먼저 뜨게 되는 것을 볼 수 있다.


<그림 9 :: Intro Dialog>

 


이 정도면 초기 컨셉은 거의 다 해본 것 같다.


첨부파일로 완성된 모습을 볼 수 있다.

뻘짓한 exe까지 모두 올렸으니, 좋은 밑거름이 되어, 당신의 프로젝트에 도움이 되었으면 좋겠다.


아. 정말 힘들게 s2 기본 컨셉을 모두 끝냈다.

아침, 점심, 저녁, 새벽을 가리지 않고 내 귀에서 노래를 불러준 아이유양에게 이 영광을 돌린다 ㅋㅋㅋ (미친새끼 ㅋㅋㅋ)


glu32.dll , glut32.dll

ProjectOpenGL.exe

ProjectMFCReport.exe


사실 버스커버스커 노래랑 돌려듣는 중임.^^;




# 02

프로젝트를 다른곳에 옮기고, 비트맵이 저장되어 있던 폴더를 삭제하면 리소스 에러가 나는 것을 볼 수 있다.

그런경우, 해당 프로젝트 내의 res 폴더안에 아래의 파일을 넣어주고 압축 해제 시켜야 한다.


res.alz 

 

경로에 상관없이 파일을 읽기 위함이다.

그리고 이미 프로젝트 내에 경로로 선언되어 있는 이미지들의 소스는 다음과 같이 수정해준다.


<그림 10 :: 경로 수정>


c:\ 솰라솰라 \Bitmap01.bmp

의 코드에서 탈피하여

res \ Bitmap01.bmp라는 새로운 주소를 얻게 되었다.

 

이것은 CommandButton에 적용된 아이콘에도 적용된다.

아이콘은 특별히, 이름도 바꾸어 주어야 한다.


번호 제목 글쓴이 날짜 조회 수
공지 본 게시글의 첨부파일 권한 심플디 2014.08.22 2376
47 [MFC :: OpenGL] 컴공 수업 발표 자료 (옮김) [2] 심플디 2014.04.25 2878
46 [MFC :: OpenGL] Project 시즌 2 후기 (옮김) 심플디 2014.04.25 1568
45 [MFC :: OpenGL] File output (옮김) 심플디 2014.04.25 1500
44 [MFC :: OpenGL] Tool bar(툴바) 편집방법 (옮김) 심플디 2014.04.25 1821
» [MFC :: OpenGL] IntroPage (옮김) file 심플디 2014.04.25 1500
42 [MFC :: OpenGL] IPC 적용 (옮김) file 심플디 2014.04.25 1560
41 MFC :: OpenGL] ProjectMFCReport 와꾸짜기 (옮김) 심플디 2014.04.25 1681
40 [MFC :: OpenGL] Data Dialog 와꾸짜기 (옮김) 심플디 2014.04.25 1710
39 [MFC :: OpenGL] 시즌 2 개요 (옮김) file 심플디 2014.04.25 1499
38 [MFC :: OpenGL] Project 시즌 2 시작 (옮김) [1] 심플디 2014.04.25 1504
37 [MFC :: OpenGL] Project 시즌 1 후기 (옮김) file 심플디 2014.04.25 1566
36 [MFC :: OpenGL] Mesh :: Part 2 (옮김) [1] file 심플디 2014.04.25 1533
35 [MFC :: OpenGL] Mesh :: Part 1 (옮김) file 심플디 2014.04.25 1584
34 [MFC :: OpenGL] DXF :: Part 5 (옮김) file 심플디 2014.04.25 1574
33 [MFC :: OpenGL] DXF :: Part 4 (옮김) file 심플디 2014.04.25 1469
32 [MFC :: OpenGL] DXF :: Part 3 (옮김) file 심플디 2014.04.25 1453
31 [MFC :: OpenGL] DXF :: Part 2 (옮김) file 심플디 2014.04.25 1503
30 [MFC :: OpenGL] DXF :: Part 1 (옮김) file 심플디 2014.04.25 1545
29 [MFC :: OpenGL] Proposal 및 앞으로의 계획 (옮김) 심플디 2014.04.25 1539