본문 바로가기
컴퓨터과학[2-1]/knou_[2-1]Visual_C

Visual C++ 7강 MFC SDI 프로그램의 응용

by boolean 2015. 1. 24.
728x90

C++ 7강 MFC SDI 프로그램의 응용

  1. MFC를 이용하여 차일드 윈도우를 추가하는 것은 API 프로그래밍보다 더 간단하다. 헤더파일 SDIView.h 에서 CChildWnd 클래스 객체 m_Wnd02 를 하나 더 추가하고 구현파일 SDIView.cpp 에서 멤버함수 m_Wnd01.Create( )를 추가하면 차일드 윈도우가 생성된다.
  2. CChildWnd 클래스로 생성한 윈도우는 문자열 “차일드 윈도우 입니다"를 출력하기 때문에, 두 개의 차일드 윈도우 모두 클라이언트 영역에 같은 문자열을 출력하는 것을 볼 수 있다. 그러나, 윈도우를 생성할 때, 캡션에 출력되는 문자열을 다르게 지정했기 때문에, 각기 다른 캡션이 나타나는 것을 볼 수 있다.
  3. MFC 는 컨트롤 클래스를 제공한다. 즉, 버튼이나 콤보 박스, 리스트 박스와 에디터 박스 등의 컨트롤들도 MFC클래스로 구성되어 있으므로 객체 생성 후 사용하면 된다.
  4. 컨트롤도 다른 클래스와 마찬가지로 클래스에서 제공되는 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 );
  5. 윈도우의 크기를 정해주는 또 다른 방법으로 CRect 함수가 있다. 예를 들면 다음과 같다.
     CRect(400,300,550,330) : 좌상 모서리 400:x 값, 300: y값
                  우하 모서리 550:x 값, 330: y값
  6. ON_COMMAND() 매크로와 함수의 형태는 다음과 같다.
    ON_COMMAND( id, memberFxn )
    id WM_COMMAND 메시지를 발생시킨 컨트롤이나 메뉴의 ID
    memberFxn 메시지가 발생할 때 호출되는 함수

    afx_msg void memberFxn(UINT nID)
    nID WM_COMMAND 메시지를 발생시킨 컨트롤이나 메뉴의 ID
  7. 주요 함수
    m_ListBox.GetCount(); 리스트 박스 안의 아이템 개수를 구하는 함수.
    m_ListBox.AddString(): 리스트 박스 안의 아이템을 증가하는 함수.
    m_ListBox.DeleteString() : 리스트 박스안의 아이템을 삭제하는 함수.
    m_ProgressBar.SetRange(); 진행바의 범위를 설정하는 함수.
    m_ProgressBar.SetPos(); 진행바의 현재위치를 설정하는 함수
  8. [속성창]의 [Object IDs]에는 WM_COMMAND 메시지를 발생시킬 수 있는 컨트롤이나 메뉴, 다이얼로그 박스의 컨트롤에서 발생시킬 수 있는 ID 만이 나열되어 있다. 윈도우의 OnCreate()에서 직접 Create() 함수를 호출해서 생성한 윈도우의 ID는 [속성창]에 포함되지 않는다. [속성창]에서 제공하지 않는 WM_COMMAND 메시지 ID는 직접 코드를 입력해야 한다.  

댓글