전체 글 389

클래스 멤버함수를 윈도우 프로시저로 사용하기 [1/3]

클래스 멤버함수를 윈도우 프로시저로 사용하기 [1/3]Win_API 2008/07/19 21:01 원문 : Window Procedures as Class Member Functions  원문위치: http://www.rpi.edu/~pudeyo/articles/wndproc/index.html   원저자 : Oleg Pudeyev  원문 마지막 수정일: 2003년 1월 29일  번역자 : sobahoko  번역시작일 : 2006.3.11  번역 마지막 수정일 : 2006.3.18   클래스 멤버함수를 윈도우 프로시저로 사용하기  Oleg Pudeyev 저    이 문서에서, 나(Oleg Pudeyev)는 클래스 멤버함수를 윈도우 프로시저로 사용하는 몇가지 방법에 대해 살펴볼 것이다. 나는 특정 메시지를..

MFC 2008.09.01

MFC 메인 윈도우의 생성 흐름

아래 발췌한 부분 중에 다음이 좀 잘못된 듯 하다. 1. 예제 소스에 InitApplication을 InitInstance로 수정해야 한다. 2. AfxHookWindowCreate함수의 기능을 잘못 설명한 듯 하다. 윈도우 프로시저를 후킹하고, _AFX_THREAD_STATE 전역변수에 해당 윈도우 객체 포인터 값를 입력함으로써 위 후킹과정이 이니셜라이즈되었음을 알려준다. void AFXAPI AfxHookWindowCreate(CWnd* pWnd) { // MFC sets a trhead-global m_pWndInit, which points // to the window being created. This is the only way // CWnd::CreateEx and AfxHookWindow..

MFC 2008.09.01

윈도우 메시지 종류 및 큐잉, 비큐잉 메시지

1 메시지 개요1.1 구조Windows는 메시지 기반의 운영체제이다. 메시지(Message)란 프로그램에 변화가 생겼을 때 Windows가 프로그램에게 알리는 정보이다. 메시지는 MSG로 정의되는 구조체인데 여기에는 윈도우 핸들, 메시지 식별 번호, 추가 정보, 시각, 커서 위치 등이 포함되어 있다. typedef struct tagMSG { HWND hwnd; // 메시지가 발생한 윈도우 핸들 UINT message; // message id WPARAM wParam; // 추가 정보 LPARAM lParam; // 추가 정보 DWORD time; // 메시지 발생 시간 POINT pt; // 커서 위치 } MSG; 1.2 식별 번호메세지 식별 번호(message id)는 0x0000에서 0xFFF 사..

API 2008.09.01

MFC 팁들

타이틀바에 제목없음 제거하기 (일반적으로 프로그램을 실행하면 아래와 같이 제목없음이 나온다.) 제목없음을 제거하려면 아래와 같이 FWS_ADDTOTITLE 속성을 제거해 주는 부분을 추가해 준다. BOOL CMainFrame::PreCreateWindow( CREATESTRUCT& cs ) { if( !CFrameWnd::PreCreateWindow(cs) ) return FALSE; cs.style ^= FWS_ADDTOTITLE; return TRUE; } ------------------------------------------------&^>^;;--------------------------------------------- 실행 시 창의 크기 조절 다음과 같이 cs.cx, cs.cy 값을 변..

MFC 2008.09.01

#undef THIS_FILE ...이게 먼가여?

#undef THIS_FILE ...이게 먼가여? #undef THIS_FILE 기존에 THIS_FILE이 정의 되었을시 다시 재 정의 하겠다는 뜻입니다. 재정의가 아니고 원칙적인 뜻은 무효화하는 것이다. __FILE__은 ANSI가 정의한 미리 정의된 매크로로서 현재 소스 파일의 이름과 행 번호를 의미하는 매크로 입니다. ex) 1.cpp라는 소스파일로 저장했을시 printf(""%s\n",__FILE__); 하면 결과는 %PATH%1.cpp라는 결과를 얻게 됩니다. __FILE__ 는 이러한 특성상 디버그용으로 많이 쓰입니다. 하지만, 문제점이 있는데 __FILE__경우 a.cpp b.cpp 중 a.cpp가 #include b.cpp했을 경우 매크로의 확장 후에 컴파일 되기 때문에 __FILE__이 ..

C, C++ 문법 2008.09.01

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