MFC 65

CWnd::Create 과정....

CWnd::Create()는 CreateEx()를 호출하며 CreateEx()는 ::CreateWindowEx()를 호출하기 직전에 AfxHookWindowCreate()을 호출합니다. AfxHookWindowCreate()은 SetWindowsHookEx()을 호출해서 WM_CREATE같은 메시지가 발생할경우 Hook procedure로 먼저 가게끔 Hook을 인스톨 해줍니다. 이 Hook procedure가 해주는 일이 바로 Subclassing을 하는 겁니다. 다시 말해서 View 클래스는 RegisterClass()에서 AfxFrameOrView란 이름으로 등록이 될때 DefWndProc()에서 모든 메시지가 처리가 되게 되어있는데 Hook procedure에서 DefWndProc()를 SetWi..

MFC 2008.09.01

MFC HandlingWindowMessages

MFC HandlingWindowMessagesFrontPage | RecentChanges | TitleIndex | UserPreferences | FindPage | Edit this page (last edited 2006-12-18)(diff) Description MFC Handling Window Messaages CCmdTarget Class와 Message Map MFC Handling Window Messages Reference Documents Website Books DescriptionMFC에서 윈도우즈 메세지가 어떻게 전달되고 관리되는지에 대한 정보 MFC Handling Window MessaagesMFC에서는 일반적인 API의 메세지 루프와는 다른 방법으로 메세지를 관리하고..

MFC 2008.09.01

MFC - DLL에대한 정리

[VC]DLL에대한 정리Programming 궁금하니? 2008/01/23 09:16 출처: http://psmon.x-y.net/xy_bb/board.php?id=PgSkill&board_sec=0&page=2&mode=view&total=46&no=25기본적인것이 잘 정리된것 같아서.. 퍼왔습니다.DLL (Dynamic Link Library)이란,어플리케이션에서 동적으로 링크하여 사용할 수 있는 라이브러리를 말하며,확장자로는 .dll, .fon, .drv, .exe 등이 사용된다.장점으로는,일단, 여러 어플리케이션이 사용한다면 메모리 낭비를 줄일 수 있겠고,업그레이드및 모듈별관리가 용이한점을 들 수 있겠다.구조는,간단히 코드부분과 데이터로 구성되어있으며, 스택이 없다는 것이 특징이다.//스택은 어플..

MFC 2008.09.01

CWnd Class

CWnd Class - CWnd 클래스는 MFC의 모든 윈도우 클래스들에 대해서 기본적인 기능을 제공 하는 클래스이다. 데이터 멤버 m_hWnd : CWnd와 관련된 HWND를 가리킨다. 생성/소멸 관련 함수 CWnd : CWnd객체를 생성한다. DestroyWindow : 윈도우를 소멸한다. 그렇지만 객체를 소멸시키는 것은 아니다. 초기화 관련 함수 Create : CWnd 객체와 관련된 자식 윈도우를 만들고 초기화한다. PreCreateWindow : CWnd 객체와 관련된 실제 윈도우를 만들기 전에 호출된다. CaleWindowRect : 클라이언트 사각형 영역에서 윈도우를 만들기 전에 호출된다. GetStyle : 현재 윈도우의 스타일을 반환한다. GetExStyle : 확장된 윈도우의 스타일을 ..

MFC 2008.09.01

DECLARE_DYNCREATE()와 IMPLEMENT_DYNCREATE() 다른이 글 고찰 발췌 - 실행중 타입정보

DECLARE_DYNCREATE()와 IMPLEMENT_DYNCREATE() 최근 CFrameWnd를 이용해 원하는 View를 창에 넣어 마치 Dialog 창 처럼 띄우는 방법을 사용해 문제를 해결한 적이 있다. 이번에 또 그런 필요성이 생겼고 이 창 Frame에 포함될 View가 경우에 따라 여러 가지로 확장될 가능성이 있기 때문에 이 부분을 dll로 분리하기로 결정하였다. 그런데 우연히 MFC 확장 DLL로 만들려던 것을 잘못하여 기본 MFC DLL로 프로젝트(_AFXEXT의 pre define 유무에 따라 결정된다)를 생성하게 되었다. 특정 클래스 통째를 AFX_EXT_CLASS 키워드를 통해 외부에 공개할려고 하다가 다음과 같은 compile warnning을 접하게 되었다. warning C42..

MFC 2008.08.31

MFC 내부구조 #2 MFC Internals - 대충 읽어볼 글

MFC 내부구조 #2 MFC Internals 2004/07/25 06:48 http://blog.naver.com/synchrog/140004387209 이 포스트를 보낸곳 () 2. MFC와 C/SDK 자, 두번째다. 이번엔 MFC와 기존의 API를 비교해가며 분석해보자. Windows 프로그렘은 2개의 핵심 요소로 이루어 저있다. (1) main application 그 자체 (2) message를 처리할 수 있는 1개 이 상의 window. MFC가 개발된 궁극적인이유, 다시한번 강조하지만 역시, 시간의 효율성을 최적화한, 생산성 향상에있다고 생각한다.(뭐 절대 틀린말은 아니겠지?) 기존의 API를 살펴보면 최소한 boilerplate code 가 90줄 이상 copy and paste로 베이스 ..

MFC 2008.08.31

MFC 내부구조 #1 MFC Internals - 대충 읽어볼 글

MFC 내부구조 #1 MFC Internals 2004/06/22 21:03 http://blog.naver.com/synchrog/140003492891 이 포스트를 보낸곳 () 간단히 정리하자. MFC는 MS의 천재들이 기어나와서 (MS가 아닌사람도있다) Application Framework 라는 팀을 개설하고 진정한 객체지향 프로그레밍을 위해 힘썼다. 근데 AFX가 된이유는 AF만 쓰면 뭔가 약자같아보여서 X를 붙였다고한다.(진짜로) 아무튼 MFC 1.0의 경우 엄청난 비난과 찬사를 받았지만 궁극적으로 운영체제와너무 동떨어진 프레임웍이 나왔다. 그래서 완전 폐기해버리고 전격적인 윈도우즈 프로그레밍 전용 객체지향 프레임웍을 내놓은것이 지금의 MFC이다.MFC는 COM으로 만들어졌다. 그래서 디테일한..

MFC 2008.08.31

mfc 메시지 관련 좋은 자료

첨부한 자료에 메시지 구분을 잘못한 부분이 있다. queued message의 경우 키스트로크 (WM_KEYDOWN / WM_KEYUP등)과 키스트로크에 의한 문자(WM_CHAR), 마우스 이동(WM_MOUSEMOVE), 마우스 클릭(WM_LBUTTONDOWN), 타이머 메세지(WM_TIMER), 그리기 메세지 (WM_PAINT), 종료 메세지(WM_QUIT)가 있으며, non-queued message는 그 외의 다른 모든 메시지가 되겠다. 가운데 메시지맵에서 찾는 부분에 빠진 부분이 있다. 중요한 루프 부분이다. 다음과 같다. BOOL CWnd::OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult) { LRESULT lResul..

MFC 2008.08.31