MFC 발견 2주차자료입니다.
GUI 개발에서 핵심인 이벤트-드리븐에 대해서 다룹니다. 이벤트와 메시지, 핸들러에 대한 개념은 SDK(API)와 MFC를 비교하며 다룹니다.
또한 유니코드, 멀티바이트(MBCS)에 대한 개념을 다룹니다.
마지막으로 리소스에 대한 이해를 통해 리소스의 필요성에 대해 알아봅니다.
1. MFC 발견
두번째 주제
• 윈도우 프로그래밍 필수사항(메시지, 이벤트)
• MFC 큰 뼈대
• CString(with 유니코드), 자료구조 이야기
↑ 시바견
2. 지난 주 복습
• MFC는 SDK를 객체로 감싼 것에 불과하다.(캡슐화)
• main 조차도 숨겨져 있다.(캡슐화)
CWinApp::InitInstance(MFC에서의 Main역할)
진입점, WinMain, Create
저번 주는 MFC를 어렵게 느끼게했던
캡슐화에 대해 알아보았다.
3. 윈도우 플밍 필수지식: 이벤트-드리븐
• 이벤트가 뭘까요? 사건!
클릭했을 때
마우스 움직이는 거
키보드 누르는 거
창이 생성되는 거
창이 닫히는 거
스크롤바가 움직이는 거
입력 창 내용이 변하는 거
...
엄청많다!
교재 29쪽
교재 32쪽
4. 윈도우 플밍 필수지식: 메시지
• 메시지가 뭘까요? 이벤트가 발생했다는 사실을 알려주는 놈!
전송버튼 클릭
마우스
움직임
키보드
눌림
이벤트 발생! 메시지 큐에 추가됨
AfxMessageBox(_T(“클릭하셨네요!”))
메시지 처리부(핸들러)
교재 29쪽
교재 32쪽
5. 1. 마우스를 클릭했다. (이벤트 발생)
2. 운영체제가 이 사실을 프로그램에게 알려준다. (메시지)
3. 프로그램이 메시지 창을 띄운다. (핸들러 실행)
예를 들어봅시다.
6. 이벤트가 발생하고 프로그램에게 메시지가 전달되고,
프로그램은 메시지를 꺼내와 처리하는 방식
이벤트-드리븐(event-driven) 방식
7. 이벤트-드리븐은 여기저기 쓰입니다.
• 얻어 맞을 때
• MFC 외에도 자바 GUI, 자바스크립트, Qt, 안드로이드 등등
웹 개발
Qt 라이브러리
안드로이드
8. HelloSDK 심층분석: 이벤트 핸들러
https://msdn.microsoft.com/ko-kr/library/windows/desktop/ms633577(v=vs.85).aspx
길어지는 함수
Procedure
; 절차, 방법, 처리
9. HelloSDK 심층분석: 이벤트 핸들러
https://msdn.microsoft.com/ko-kr/library/windows/desktop/ms633577(v=vs.85).aspx
길어지는 함수Procedure
; 절차, 방법, 처리
10.
11.
12. HelloMFC 심층분석: 이벤트 핸들러
메시지 맵은 이벤트와 핸들러(처리자)를
이어주는(맵핑) 해주는 역할을 한다.
기본적인 것들은 이미 맵핑되어 있다.
함수가 단순해지고
깔끔한 코드
24. CString을 들어가기 전에
• 문자와 문자’열’
char chA = ‘A’;
char chKor = ‘가’; (X)
char *str1 = “MF씨발1”;
char str2[ ] = “MF씨발2”;
char는 영어권(ASCII)을 기준으로 만들어졌음.
char는 1바이트이기 때문에,
전세계 모든 문자들을 표현할 수 없는 한계점이 있다.
A
가/2 가/2 두 개가 모여서 비로소 ‘가‘
MBCS
M F 씨/2 씨/2 발/2 발/2 1
교재 81쪽
교재 111쪽
25. MBCS (Multi-Byte Character Set)
char 문자형의 진실!
char는 8bit(1Byte)를 모두 쓰지 않는다!
7 6 5 4 3 2 1 0
예약된 비트!
최상위 비트(MSB)가 set 되면 다음 문자까지 확장.
즉, 멀티바이트! CharBit.cpp