일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 런타임데이터영역
- Spark
- 지연연산
- Spark 최적화
- AWS Crawler
- 하둡
- 스파크
- Databricks
- 데이터엔지니어링
- 하둡2.0
- freenom
- ORACLE문법
- 프로그래머스힙
- 데이터 수집
- 실행엔진
- 프로그래머스
- 데이터베이스복사
- EMR 구조
- 문맥교환
- kafka 설치
- 하둡에코시스템
- 프로그래머스 큰 수 만들기
- 빌드도구
- ORACLE MSSQL차이
- Catalyst Optimizer
- 데이터파이프라인
- 카프카
- 하둡1.0
- lazy evaluation
- 서버간 복사
- Today
- Total
띵유로그
[MFC] MFC 기초 - 새로 알게된것 정리 NOTE 본문
오마이갓. 갑자기 회사업무에서 MFC를 사용하게 되었다. 이게 무슨 날벼락이지?
이 페이지는 얼른 적응하기 위해, 잊지 않기 위해 새로 알게된 지식 몇가지를 기록해놓는 페이지이다.
1) _tWinMain
main 함수임. 가장 처음 실행하는 entry point
_t의 의미 : 유니코드 문자열처리
인자 : HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR IpCmdLine,int nCmdShow
HINSTANCE = 응용프로그램을 식별하는 값. 실행파일이미지가 저장된 주소.
(Handle Instance)
lpCmdLine = argv (인자)
nCmdShow = 윈도우를 화면에 보여줄 것인가 말것인가?
2-1) MSG 구조체
typedef struct Msg{
HWND hwnd; //윈도우 핸들 (이 메시지가 어떤 윈도우의 것인가?)
UINT message ; //unsigned integer
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt; //위치(x,y) <- 윈도우에서는 왼쪽 상단이
}MSG
2-2) HACCEL : 단축키(resource view에서 Accelerator에 추가할 수 있음)
3) MyRegiesterclass 함수
_tWinMain에서 호출하는 함수로, 마지막에 RegisterClassEx 함수를 호출한다.
ICON, resource, 응용프로그램 메모리 주소, 메뉴 등등을 등록함.
WndProc 함수의 주소도 등록.
(이때 등록한 WndProc 함수 주소를 기억했다가, 메시지가 발생하면 꺼내서 처리)
WndProc 을 직접 실행할 일은 없지만 이때 주소를 등록해놨다가
메시지큐에서 꺼내지면 Os에서 WndProc 함수를 실행해줌.
4) InitInstance 함수
_tWinMain에서 호출하는 함수로,
CreateWindow 함수를 통해서 실제 윈도우를 생성해서 윈도우 핸들을 return.
5) GetMessage 함수
_tWinMain에서 호출하는 함수로,
while 루프를 돌며 message queue 에서 메시지를 계속 가져옴.
각 메시지별로 DispatchMessage 함수 호출 함.
6) Dispatch Message함수
Dispatch Message함수에서는 Windows Procedure 함수를 호출한다.
WndProc 함수에서는 message에따라서 사용자가 원하는 작업을 한다.
WndProc(HWND hwdn, UNIT message, WPARAM wParam, LPARAM lParam)
7) MFC 클래스
CObject “MFC의 최상위 클래스”
->
CCmdTarget
(윈도우 가아님) ->(윈도우)
CWnd “모든 윈도우의 최상위클래스”
8) HWND 와 CWND의 차이
HWND : 윈도우 핸들러! (윈도우를 가리킴)
CWND : MFC클래스. 윈도우의 모든 기능을 가짐.
당연히 멤버변수로 HWND를 가지고 있다.
" Mainframe이나 서로 다른 윈도우에서 사용하려면 CWND가 아닌 HWND값을 직접 알아야 하는 경우가 많음."
따라서 아래와 같이 서로 받아오는 방법을 알면 유용할 것!
CWnd *pWnd;
HWND hWnd;
// CWnd -> HWND
hWnd = pWnd->m_hWnd;
// HWND -> CWnd
pWnd = CWnd::FromHandle( hWnd );
'기타' 카테고리의 다른 글
[Intellij] certificate setting 경고 제거 (0) | 2022.04.08 |
---|---|
[빌드]Gradle 정리 (0) | 2022.03.11 |
[빌드] Maven 관련 용어 정리(archetype, GroupId, ArtifactId,...) (0) | 2022.03.11 |
윈도우 서버내 파일을 S3에 백업 (0) | 2022.02.16 |
한글 인코딩 정리 (문자체계와 인코딩) (0) | 2021.11.12 |