본문 바로가기
프로그래밍/MFC

MFC-새로운 자식 클래스 생성하기

by 리뷰하는 (게임)프로그래머_리프TV 2010. 5. 12.



MFC에 대해서 뭐랄까 심도 있게 설명해 놓고 싶지만,

아무래도 그 내용이 방대하고, API에 대한 윈도우 구조를 다 파악 했다면 구지 다시 그 부분을 집고 넘어갈 필요는 없을것 같다. MFC에 대한 내용은, 가능한 나 스스로가 복습하면서 다시 한번 되돌아 본다는 식으로 포스팅을 하기로 하겠다.

프로젝트 생성은 살펴 보았고,

이제 기본적인 창에 무언가를 추가해 보자.

View.cpp 부분에 존재하는 CView를 상속받은 클래스가 존재할 것이다.

// 작업입니다.
public:
	CWnd m_wndChild; // CWnd 클래스 변수인 m_wndChild를 멤버 변수로 추가 하였다.​


다음 처럼 멤버 변수를 CWnd로 추가하고,

[클래스뷰]-[속성]-[메시지탭]-[WM_CREATE]-[OnCreate 생성]



// CTest1View 메시지 처리기

int CTest1View::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CView::OnCreate(lpCreateStruct) == -1)
		return -1;

	// TODO:  여기에 특수화된 작성 코드를 추가합니다.

	return 0;
}​


아마 다음과 같은 소스가 "자동"으로 만들어 졌을 것이다. 그 안에
조금전에 만들었던 멤버변수 m_wndChild 를 사용해 새로 자식 윈도우를 생성하자.

	m_wndChild.Create( TEXT("STATIC"), TEXT("DEMO"),
	WS_CHILD | WS_VISIBLE | WS_BORDER, 
	CRect( 100, 100, 200 ,200 ), this, 1 );
​


코드를 실행해 보면,
하나의 STATIC이 생성된 것을 알 수 있다.
참 쉽다... 고작 한줄 추가 했을 뿐인데, 이미 하나의 응용프로그램처럼 보이기 시작한다.
이것이 MFC의 장점인건가.
Create 메소드의 매개변수는 각각 인자, 내용, 스타일(속성), 크기(좌표), 부모 클래스의 주소, 자신의 ID 순으로 매개변수를 입력해 주면 된다.
예제는 STATIC 이지만, EDIT나, BUTTON등으로 설정하여도 우리가 원하는 대로 나오게 된다.

마찬 가지로 2개의 자식 윈도우를 생성한다고 하였을 때, 이전처럼 View에 새로운 CWnd 클래스 추가,
OnCreate 함수에 그 멤버 변수를 가지고 생성. 만 하면 된다.

API에서 WM_CREATE에서 해주었던 일들을, MFC로 넘어 오면서 OnCreate라는 함수가 대신 해준다고 보면된다.

// 실행 화면

'프로그래밍 > MFC' 카테고리의 다른 글

MFC-마우스 입력  (0) 2010.05.16
MFC-GetKeyState()  (0) 2010.05.12
MFC-GetWindowRect(), ScreenToClient(), SetWindowPos()  (1) 2010.05.12
MFC-키보드 입력  (0) 2010.05.12
MFC-기본적인 생성 방법  (0) 2010.05.12