전체 글 389

msdn - 확장 dll 설명

MFC 확장 DLL은 일반적으로 기존의 MFC 라이브러리 클래스에서 파생된 다시 사용할 수 있는 클래스를 구현하는 DLL입니다. MFC 확장 DLL에는 다음과 같은 기능 및 요구 사항이 있습니다. 클라이언트 EXE는 _AFXDLL이 정의된 상태에서 컴파일된 MFC 응용 프로그램이어야 합니다. 동적으로 MFC에 링크한 기본 DLL에서 확장 DLL을 사용할 수도 있습니다. 확장 DLL은 _AFXEXT가 정의된 상태에서 컴파일되어야 합니다. 그러면 _AFXDLL도 정의되고 MFC 헤더 파일에서 올바른 선언을 가져올 수 있습니다. 또한 DLL을 빌드할 때 AFX_EXT_CLASS가 __declspec(dllexport)으로 정의될 수 있으며, 이러한 정의는 이 매크로를 사용하여 확장 DLL에 클래스를 선언할 경..

MFC 2008.09.06

win32/DynamicLinkLibrary(dll) - Good

Written by 이동우(leedw at ssrnet.snu.ac.kr) 내용 Introduction 왜 DLL을 사용 하는가 DLL과 프로세스 주소 공간 DLL의 작성과 사용 Implicit Loading 방식 개요 DLL의 작성 실행 파일의 작성 실행 파일의 실행 Explicit Loading 방식 DLL Loading Unloading 내부 구조 Export Import 1 Introduction dynamic-link library는 어느 운영체제에서나 매우 중요한 이슈 사항이다. 프로그램을 실행하기 위해 소스 코드를 작성하고 이 소스 코드를 컴파일링해서 실행 파일을 생성하는 과정은 고전적인 프로그래밍 개발 모델로 오랫동안 자리를 잡아 왔다. 그러나 하드웨어 인프라가 발전하고 사용자 환경이 GU..

API 2008.09.05

protected 속성으로 런타임클래스를 사용해라?....고찰

mfc는 클래스마법사로 새로운 클래스를 생성시 기본적으로 protected로 생성자를 막아 놓는다. 대신 DECLARE_DYNCREATE - IMPLEMENT_DYNCREATE 매크로를 통해 런타임 다이나믹 크리에이션을 제공한다. 그래서 원칙적으로 아래와 같은 식으로 사용하도록 한다. m_pSwordView = (CSwordView*)(RUNTIME_CLASS(CSwordView)->CreateObject()); 그런데 이것은 좀 귀찮긴 하다. 그래서 보통 public으로 생성자를 선언하고 다음과 같이 사용한다 m_pSwordView = new CSwordView; 훨씬 간단하다...굳이 왜 저리 막아놨는지 모르겠다. 많은 사람들이 저리 사용하는데....다음 버전에서는 public으로 제발 좀 바꿔라....

MFC 2008.09.05

큰 사이즈 그래픽(그림, 이미지) 화일 처리시 팁

이미지를 처리하는 경우... 보통 WM_PAINT 메시지 처리부에 리소스나 파일에서 DDB를 생성하고 화면에 뿌려주는 작업을 한다. 그런데 이경우 작은 파일의 경우는 별 상관이 없으나. 크기가 큰 파일의 경우 로딩하고 뿌리는 데 상당한 부하가 일어난다. 실제로 노트북의 경우 크기 1024*680 정도의 파일을 읽어서 화면 크기만 줄였다 늘였다 해도(WM_PAINT 메시지 발생) 상당히 버벅거림을 볼 수 있었다. 그래서 미리 DDB를 저장하는 변수를 만들어서 DDB 로딩을 먼저 시키고 그 핸들값을 저장한 후 처리해봤다. 이 경우 유효한 DDB가 있는 상태이니 WM_PAINT에서는 그냥 로딩은 하지 않고 뿌리는 작업만 하면 된다. 부하가 없어졌다. 이 결과로 비추어 볼때 화일에서 DDB를 생성하는 작업이 상..

API 2008.09.05

MDI 구조 스파이플러스로 살펴보기 - 분석

스파이로 mdi 샘플을 만들어서 살펴보았다.... 예측상 메인프레임 - 차일드 프레임 - 뷰 이렇게 3계층도로 이루어질 줄 알았는데.... 그 중간에 MDIClient 라는 클래스이름을 가진 윈도우가 위치함을 볼 수 있다. sdk에서 다중문서템플릿 작성할 경우 사용되는 클래스이다. mfc에서는 내부적으로 저 윈도우의 기능을 래퍼하고 있을 것이다. 구체적으로 메인프레임 자식이며 차일드프레임의 부모이다. 메인 프레임과 차일드 프레임 사이의 조정자 역할을 하고 있음을 볼 수 있다. 아래의 msdn 설명 참조 -------------------------------------------------------------------------------- MDI main frame windows (one per a..

MFC 2008.09.04

다이얼로그에 뷰 올리기

다이얼로그에 뷰 올리기 2007/12/09 14:32MFC에서 Application을 개발할 때, 간편함의 이유로 MDI나 SDI보다는 Dialog based로 개발하는 경우가 많다. 하지만 다이얼로그 위에 뷰를 올릴 수가 없기 때문에 프로그램 개발에 많은 제약을 안을 수 밖에 없다. 이 문제를 다음과 같은 방법을 통해 다이얼로그에 뷰를 올릴 수 있도록 함으로써 보다 많은 융통성을 얻을 수 있다. 1.      다이얼로그 클래스에서A.     멤버 변수를 추가해준다. 사용할 뷰의 이름이 CContentsView라고 할 때:CCreateContext         m_context;CContentsView          *m_pView; B.     OnInitDialog() 함수에서 뷰의 초기화를 수행..

MFC 2008.09.04

한 프레임에 뷰 분할 - 스플릿윈도우 클래스 미사용

[Research/MFC] Multiple views in one frame 2008/03/14 15:30이 글에서는 하나의 Frame Window에서 CSplitterWnd 컨트롤을 사용하지 않으면서 여러개의 View를 동시에 분할해서 보여줄 수 있는 방법에 대해 설명한다.MDI의 경우 CChildFrame 클래스가 View를 포함하는 역할을 수행하는데, 이 클래스에서 자식 View의 크기와 위치를 조정해주는 방식으로 구현이 가능하다.1. 먼저, CChildFrame 클래스의 OnCreateClient 함수에서 자식 View들을 생성한다. // 왼쪽(기본) View 생성if(!CMDIChildWnd::OnCreateClient(lpcs, pContext)){  TRACE("Failed to create..

MFC 2008.09.04

API 이용 MDI 구현 - 발췌

[Win32 - 김상형윈도우즈API정복-정리노트]MDI Win32 2008/09/02 09:59 http://blog.naver.com/blue7red/100054479397 이 포스트를 보낸곳 () 1.MDI - (1)정의 -동시에 여러 개의 문서를 열 수 있는 프로그램 형태를 의미한다. -요즘은 프로그램을 MDI로 작성하는 것은 별로 권장되지는 않는다. (2)MDI프로그램 구조 -프레임윈도우 : 메인윈도우 -클라이언트 윈도우 -차일드윈도우 :클라이언트윈도우의 자식윈도우다. (3)시스템의 MDI지원 -일단 운영체제의 지원 중 가장 중요한 부분은 클라이언트 윈도우가 미리 만들어져 있다. 2.MDI기본예제 (1)예제 - // 프레임 윈도우의 메시지 프로시저 LRESULT CALLBACK MDIWndProc..

API 2008.09.04

SDI 단일 문서에 다중 뷰 추가 - MSDN 표준방식

MDSN 위치 MSDN MSDN 홈 MSDN 라이브러리 MSDN 학슴 MSDN 다운로드 MSDN 지원 MSDN 커뮤니티 MSDN Library 개발 도구 및 언어 .NET 개발 Office Development SQL Server Windows Live 기술 문서(Technical Articles) 개발 도구 및 언어 Visual Studio 2008 Visual Studio 2005 Visual Studio .NET Visual Studio .NET Visual Studio .NET 소개 도움말 및 제품 지원 샘플 및 연습 Visual Studio .NET을 사용한 개발 Visual Basic 및 Visual C# Visual C++ JScript Visual C++ 잠시 기다려 주십시오 기능 추가 V..

MFC 2008.09.04