'CWnd'에 해당되는 글 1건

CWnd Class

language/MFC 2016. 5. 7. 00:25
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

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
블로그 이미지

saylin

,