응용프로그램도 포함되어있음. -> App + 문서 (Doc)

CWinApp 클래스
 
m_hInstance ▶현재 응용 프로그램의 인스턴스 핸들입니다. WinMain()함수의 첫번째 파라미터인 hInstance와 같은것임.
m_lpCmdLine ▶WinMain() 함수의 lpCmdLine 파라미터와 같은것입니다. 프로그램을 실행하였을때 명령줄 정보가 들어있음.
m_nCmdShow  ▶WinMain()함수의 마지막 파라미터인 nCmdShow와 같은것.
m_pActiveWnd ▶응용프로그램의 최상위 프레임 윈도우에 대한 포인터. SDI구조에서 이값은 CMainFrame 클래스 객체의 포인터.
m_pszAppName ▶응용프로그램의 제목에 해당하는 문자열 포인터. 문자열의 좀더 정확한 정보는 문자열 테이블에 있는 AFX_IDS_APP_TITLE에 해당하는값
m_pszExeName ▶빌드한 실행 파일에서 확장자(.exe)를 제외한 파일명.

가상함수로 정의된 함수중 중요한것!
(InitInstance(), ExitInstance(),Run())

InitInstance()▶메서드는 응용프로그램이 초기화 되는 시점에서 호출되며 Run()메소드와 달리 대부분 재정의 되어있으며, 직접 코드를 수정할수 있다.
 ↓
Run()▶메시지 루프가 시작되는 시점에 CWinApp클래스의 Run()메소드가 호출되는 시점. Run()메서드가 반환하면 응용프로그램은 종료됨.
 ↓
ExitInstance()▶InitInstance()메소드와 반대로 응용프로그램을 종료하는 시점에 호출. 메인메시지 루프를 종료하는 시점(Run()함수가 반환한 시점) 에 호출. 기본적으로 재정의되어있지않지만
                필요한경우 재정의해서 사용가능.


CframeWnd클래스 계층구도

CObject
    └→CCmdTarget
              └→CWnd
                   └→CFrameWnd

 
CFreameWnd& Control bar windows
  1-2캡쳐


CDocument클래스 계층구도

Cobject
   └→ CCmdTarget
              └→ CDocument

메모장 처럼 한프로그램당 한개의 화면이므로, SDI(싱글도큐먼트)


OnNewDocument() ▶처음시작 할때 불림.(파일을 새로열때.)
AfxMessageBox() ▶Afx - MFC에서 제공하는 전역변수(팝업용 텍스트)
OnOpenDocument()▶문서열기 를 할시에 콜됨.
SetModifiedFlag(True)▶ 무조건 수정된걸로 인식되어 종료시에 저장을 물음.

MessageMap
-------------------------------------------------
BEGIN_MESSAGE MAP(CHelloSdiViewmCEditView)
  ~~
  ~~
  ~~
END_MESSAGE_MAP()
=================================================

속성으로 WM_CREATE()를 추가하면, 코드도 추가 됨과 동시에 MESSAGE_MAP에도 추가한 코드의 구조체가 추가된다.
WM_CREATE()추가시
-----------------------------------------
BEGIN_MESSAGE MAP(CHelloSdiViewmCEditView)
  ~~
  ~~
  ~~
  ON_WM_CREATE()
END_MESSAGE_MAP()
------------------------------------------


MESSAGE_MAP 은 API의 case문을 대체 함.

'WindowPrograms > MFC' 카테고리의 다른 글

8. 비트맵과 이미지처리  (0) 2011.10.24
MFC 5장 키보드 입력  (0) 2011.10.12
MFC1장  (0) 2011.10.12