728x90
C++ 7강 MFC SDI 프로그램의 응용
- MFC를 이용하여 차일드 윈도우를 추가하는 것은 API 프로그래밍보다 더 간단하다. 헤더파일 SDIView.h 에서 CChildWnd 클래스 객체 m_Wnd02 를 하나 더 추가하고 구현파일 SDIView.cpp 에서 멤버함수 m_Wnd01.Create( )를 추가하면 차일드 윈도우가 생성된다.
- CChildWnd 클래스로 생성한 윈도우는 문자열 “차일드 윈도우 입니다"를 출력하기 때문에, 두 개의 차일드 윈도우 모두 클라이언트 영역에 같은 문자열을 출력하는 것을 볼 수 있다. 그러나, 윈도우를 생성할 때, 캡션에 출력되는 문자열을 다르게 지정했기 때문에, 각기 다른 캡션이 나타나는 것을 볼 수 있다.
- MFC 는 컨트롤 클래스를 제공한다. 즉, 버튼이나 콤보 박스, 리스트 박스와 에디터 박스 등의 컨트롤들도 MFC클래스로 구성되어 있으므로 객체 생성 후 사용하면 된다.
- 컨트롤도 다른 클래스와 마찬가지로 클래스에서 제공되는 Create() 함수를 호출해서
생성하면 된다. 버튼(CButton), 리스트 박스(CListBox), 진행바(CProgressCtrl) 클래스의
Create() 함수 형식은 다음과 같다.
CButton BOOL Create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID ); CListBox BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID ); CProgressCtrl BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID ); - 윈도우의 크기를 정해주는 또 다른 방법으로 CRect 함수가 있다. 예를 들면 다음과 같다.
CRect(400,300,550,330) : 좌상 모서리 400:x 값, 300: y값
우하 모서리 550:x 값, 330: y값 - ON_COMMAND() 매크로와 함수의 형태는 다음과 같다.
ON_COMMAND( id, memberFxn ) id WM_COMMAND 메시지를 발생시킨 컨트롤이나 메뉴의 ID memberFxn 메시지가 발생할 때 호출되는 함수
afx_msg void memberFxn(UINT nID) nID WM_COMMAND 메시지를 발생시킨 컨트롤이나 메뉴의 ID - 주요 함수
m_ListBox.GetCount(); 리스트 박스 안의 아이템 개수를 구하는 함수.
m_ListBox.AddString(): 리스트 박스 안의 아이템을 증가하는 함수.
m_ListBox.DeleteString() : 리스트 박스안의 아이템을 삭제하는 함수.
m_ProgressBar.SetRange(); 진행바의 범위를 설정하는 함수.
m_ProgressBar.SetPos(); 진행바의 현재위치를 설정하는 함수 - [속성창]의 [Object IDs]에는 WM_COMMAND 메시지를 발생시킬 수 있는 컨트롤이나 메뉴, 다이얼로그 박스의 컨트롤에서 발생시킬 수 있는 ID 만이 나열되어 있다. 윈도우의 OnCreate()에서 직접 Create() 함수를 호출해서 생성한 윈도우의 ID는 [속성창]에 포함되지 않는다. [속성창]에서 제공하지 않는 WM_COMMAND 메시지 ID는 직접 코드를 입력해야 한다.
'컴퓨터과학[2-1] > knou_[2-1]Visual_C' 카테고리의 다른 글
MFC Control Video (0) | 2015.03.28 |
---|---|
Visual C++ 8강 MFC 프레임 워크 (0) | 2015.01.24 |
Visual C++ 6강 MFC SDI 프로그래밍 (0) | 2015.01.24 |
Visual C++ 5강 디버깅과 클래스 (0) | 2015.01.24 |
Visual C++ 4강 차일드 윈도우와 버튼 컨트롤 (0) | 2015.01.24 |
댓글