CWnd Class
CWnd 클래스는 MFC 클래스의 부모라 불리는 CObject와 CCmdTarget 클래스를 상속받은 클래스다.
(CCmdTarget 클래스:
MFC의 메세지 맵(Message Map)과 관련된 코드가 구현된 클래스.
메세지 맵은 윈도우 프로시저 함수의 switch case 문을 대체하고자 도입된 MFC의 구조다)
CObject
ㄴCCmdTarget
ㄴ CWnd
CWnd 클래스는 MFC가 제공하는 모든 윈도우 클래스의 기본 기능이 구현된 클래스다.
또한 CWnd 클래스는 윈도우 자체를 객체화한 클래스다.
따라서 CWnd 클래스 객체를 선언하여 초기화하고 생성하면 화면에 윈도우 하나가 만들어진다고 할 수 있다.
CWnd 클래스의 초기화 관련 메서드
Create()/ CreateEx() 윈도우를 생성하는 함수. CreateEx()는 추가로 확장 속성을 지정할 수 있다.
PreCreateWindow() 윈도우를 생성하기 직전에 호출되는 가상함수.
이를 재정의하여 생성되는 윈도우의 속성을 변경하는 코드를 추가할 수 있다.
GetStyle()/GetExStyle() 윈도우의 기본/ 확장 스타일을 반환하는 함수
PreSubclassWindow() 서브(Sub) 클래싱 직전에 호출되는 가상함수
GetSafeHwnd() 생성된 윈도우의 핸들을 반환하는 함수
CCreateDemoView 예제
- SDI 프로젝트 생성
- 뷰 클래스에 새로운 CWnd 클래스 객체 멤버 추가(CWnd m_wndChild)
- 뷰 클래스에 WM_CREATE 메세지 핸들러 함수 등록
- CWnd 클래스 객체 생성(WM_CREATE 메세지가 발생한 시점에서 자식 윈도우(m_wndChild)가 생성된다)
- Create()/ CreateEx()
m_wndChild.Create(
TEXT("STATIC",
TEXT("DEMO"),
WS_CHILD | WS_VISIBLE | WS_BORDER,
CRect(30, 30, 180, 180),
this,
1234
);
virtual BOOL Create(
LPCTSTR lpszClassName, // 윈도우 클래스 이름
LPCTSTR lpszWindowName, // 윈도우 텍스트
DWORD dwStyle, // 윈도우 스타일
const RECT& rect, // 윈도우 좌표
CWnd* pParentWnd, // 부모 윈도우(의 포인터)
UINT nID, // 윈도우 리소스 ID(윈도우의 핸들처럼 특정 윈도우의 자식 윈도우를 식별하는 값)
CCreateContext* pContext // 생성 컨텍스트(Context)**
);
LPCTSTR 자료형: char*(유니코드를 정의하지 않았을 시) 혹은 wchar_t*(유니코드 정의 시)
- GetStyle()
DWORD GetStyle() const;
현재 윈도우 스타일(32비트)을 반환한다.
- GetSafeHwnd()
HWND GetSafeHwnd() const;
CWnd 클래스 객체의 멤버 변수인 m_hWnd를 반환한다. 즉, 윈도우 핸들을 반환한다.
'language > MFC' 카테고리의 다른 글
비트맵과 이미지 출력 (0) | 2016.05.07 |
---|---|
MFC 코드의 기본 구조 (0) | 2016.05.07 |
키보드 입력 (0) | 2016.04.29 |
MFC 프로그래밍 (0) | 2016.04.29 |
CWnd::GetClientRect (0) | 2016.04.24 |