mfc 업데이트와 표준 라이브러리 확장

42
김김김 김김김 www.YHKim.com www.YHKim.com Microsoft MVP Microsoft MVP Chief Programmer, ESTsoft Visual Studio2008 김 김김김 C++ 김김김 김김김 김김김김김

Upload: pembroke

Post on 07-Jan-2016

203 views

Category:

Documents


10 download

DESCRIPTION

Visual Studio2008 을 이용한 C++ 코드의 견고한 업그레이드. MFC 업데이트와 표준 라이브러리 확장. 김용현 www.YHKim.com Microsoft MVP Chief Programmer, ESTsoft. 유츠프라카치아. Windows with Native VS .NET. .NET Framework 성공 , 그러나 Native C++ 이 합리적인 경우가 많음 C++ 은 Windows SDK 를 이용해 Windows 의 모든 부분을 자유롭게 엑세스 할 수 있는 유일한 언어 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: MFC  업데이트와 표준 라이브러리 확장

김용현 김용현 www.YHKim.comwww.YHKim.comMicrosoft MVPMicrosoft MVP

Chief Programmer, ESTsoft

Visual Studio2008 을 이용한 C++ 코드의 견고한 업그레이드

Page 2: MFC  업데이트와 표준 라이브러리 확장

04/20/23 2

유츠프라카치아

Page 3: MFC  업데이트와 표준 라이브러리 확장

04/20/23 3

Windows with Native VS .NET

.NET Framework 성공 , 그러나 Native C++ 이 합리적인 경우가 많음 C++ 은 Windows SDK 를 이용해 Windows

의 모든 부분을 자유롭게 엑세스 할 수 있는 유일한 언어

VC++ 2008 의 업데이트쯤에서 대대적인 업그레이드가 이루어짐

Page 4: MFC  업데이트와 표준 라이브러리 확장

04/20/23 4

Agenda

Overview on new VC++ 편리한 사용성 지원 추가된 컨트롤 지원 MFCNext 표준 라이브러리 확장

Page 5: MFC  업데이트와 표준 라이브러리 확장

04/20/23 5

Overview

Visual C++ 2008 컴파일러는 OOO 를 지원 CLR(Common Language Runtime) x86, x64, Itanium 최적화 지원

Visual C++ 2008 라이브러리는 OOO 를 지원 ATL, MFC, Standard C++ Library, STL, C Runtime

Library, STL/CLR

http://msdn2.microsoft.com/en-us/library/60k1461a.aspx

Page 6: MFC  업데이트와 표준 라이브러리 확장

04/20/23 6

Vista Style Guidelines

ATL, MFC, Win32 에서 생성되는 다이얼로그는 Vista style 가이드라인이 반영이 됨

Page 7: MFC  업데이트와 표준 라이브러리 확장

04/20/23 7

Vista Style Guidelines

Aero 테마 , 공용컨트롤 , 공용 다이얼로그 ,작업관리자 , Glass 효과 , Aero Wizard, 시스템 폰트 , 검색 상자 , 에러메시지 다이얼로그 , …

비스타 지원 새로운 컨트롤 , 이벤트 , Notification, 스타일에

대한 MFC 지원

Page 8: MFC  업데이트와 표준 라이브러리 확장

04/20/23 8

Class Designer

2005 에서 .NET 지원 언어들에게 지원되어졌음

Office 등과 쉽게 연동되며 클래스 drag-drop 등으로 쉽게 사용

아쉽게 , Read Only

Page 9: MFC  업데이트와 표준 라이브러리 확장

04/20/23 9

Class Designer

class A {};

class CCustomClass: public A {public: int a; int b;private: int c; int d;};

Page 10: MFC  업데이트와 표준 라이브러리 확장

04/20/23 10

IDE Upgrade

Page 11: MFC  업데이트와 표준 라이브러리 확장

04/20/23 11

IDE Upgrade

Page 12: MFC  업데이트와 표준 라이브러리 확장

04/20/23 12

IDE Upgrade

Page 13: MFC  업데이트와 표준 라이브러리 확장

04/20/23 13

IDE Upgrade

Page 14: MFC  업데이트와 표준 라이브러리 확장

04/20/23 14

IDE 의 향상

Solution Load Performance 향상 Editor Responsiveness 향상 IntelliSense Responsiveness 향상

NCB 파일의 동기화 부분 수정 더 이상 코딩을 멈추는 방해를 하지 않음 최악의 상황에서도 CPU 사용률이 90% 미만

프로젝트 사이즈가 XXL 라도 유연하게 동작

Page 15: MFC  업데이트와 표준 라이브러리 확장

04/20/23 15

IDE 의 향상

Page 16: MFC  업데이트와 표준 라이브러리 확장

04/20/23 16

병렬 Unit 컴파일옵션 {/MP(n)} CPU 가 병렬적으로 프로젝트 컴파일

Tools > Options > Project and Solutions > Build and Run > parallel project builds 에서 병렬적 빌드 프로젝트의 개수 선택 가능

Dependency 가 있는 프로젝트는 적용이 안됨 실제 프로젝트 운용상 유명무실 , 복배지모 !

/MP(n) switch 빌드의 프로세스의 개수를 Hard Coding 할 수 있음 Cpp 등의 유닛단위로 적용

셋팅에 따라 30% 상하 이상 콤비네이션 효과

Page 17: MFC  업데이트와 표준 라이브러리 확장

04/20/23 17

보안을 위한 컴파일러 옵션

ASLR(Address Space Layout Randomization) 라이브러리적재위치 , 스택 , 힙의 시작위치를

랜덤화 /DYNAMICBASE

DEP(Data Execution Prevention) Execute Disable, Enhanced Virus Protection 폰노이만구조의 한계 /NXCOMPACT

Page 18: MFC  업데이트와 표준 라이브러리 확장

04/20/23 18

IDE 의 비스타 지원

비스타에서 VS2005 개발환경을 꾸미면 번거로운 과정이 들어감 Hotfix for VS2005 – ENU(KB929470) 제거 VS2005 ServicePack1 with Vista 설치 Run as Administrator 로 수행을 권장 간단한 테스트 애플리케이션을 작성할 때도 뜨는

UAC 가 상당히 신경 쓰임 VS2005 자체가 Vista 애플리케이션 개발

가이드라인에 맞지 않는 애플리케이션이 되어 버림

Page 19: MFC  업데이트와 표준 라이브러리 확장

04/20/23 19

IDE 의 비스타 지원

처음부터 Run as Administrator 불필요 User 권한에서도 개발 가능 Administrator 권한이 필요할 때만 UAC 를

통해 권한 획득

Page 20: MFC  업데이트와 표준 라이브러리 확장

04/20/23 20

UAC 지원하기 – OLD WAY

<?xml version='1.0' encoding='UTF-8' standalone='yes'?><assembly xmlns='urn:schemas-microsoft-com:asm.v1'

manifestVersion='1.0'> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="asInvoker" uiAccess="false" />

</requestedPrivileges> </security> </trustInfo></assembly>

mt.exe -manifest 1.manifest 2.manifest -outputresource:MyApp.exe

#define MANIFEST_RESOURCE_ID 1 MANIFEST_RESOURCE_ID RT_MANIFEST “AdminApp.exe.manifest”

Page 21: MFC  업데이트와 표준 라이브러리 확장

04/20/23 21

UAC 지원하기 – NEW WAY

Project > Properties > Linker > Manifest File

관련 UI 제공 /MANIFESTUAC

/MANIFESTUAC/MANIFESTUAC:NO/MANIFESTUAC:level={asInvoker|

highestAvailable|requireAdministrator}

/MANIFESTUAC:uiAccess={true|false}

Page 22: MFC  업데이트와 표준 라이브러리 확장

04/20/23 22

추가 지원되는 컨트롤 기능

커맨드 링크 컨트롤 스플릿 버튼

BS_SPLITBUTTON 설정 Network Address

IPv4, IPv6, DNS etc.. 시스템 링크 콤보 박스 컨트롤 트리뷰

다중선택 , 더블 버퍼링

Page 23: MFC  업데이트와 표준 라이브러리 확장

04/20/23 23

그밖의 변경사항

ATL Server 가 CodePlex 로 릴리즈 됨 Atlenc, atlutil.h, atlpath.h 지원안함

Intel Core Architecture 지원 __cpuid 함수 업그레이드

최신 버전의 AMD 및 Intel 프로세서의 향상된 기능 지원

/Wp64, __w64 무효화

Page 24: MFC  업데이트와 표준 라이브러리 확장

04/20/23 24

CRT,STL 의 변경사항

Windows2000 아래의 운영체제 지원 중단 Windows 95/98/ME, Windows NT4.0

CRT 의 일부 함수 삭제 _osplatform, _osver, _winmajor, _winminor,

_winver _get_osplatform, _get_osver, _get_winmajor,

_get_winminor, _get_winver SAL 의 문법 변경

Page 25: MFC  업데이트와 표준 라이브러리 확장

04/20/23 25

AfxBeginMFCIsBack()

새로 추가된 새로운 Native API 활용 깔끔한 사용자 인터페이스 새로운 Native API 의 래핑을 지원하는 것과

동시에 새로운 컨트롤 및 공용 대화상자 등의 추가 제공 150 개가 넘는 Method 와 18 개의 새로운 클래스가

Vista 를 feature 지원을 위해 더해짐 기존 코드보다 성능 향상

Page 26: MFC  업데이트와 표준 라이브러리 확장

04/20/23 26

MFCNext MFC 의 향상된 기능은 대부분 UI 에 집중 MFC 프로젝트를 VC9 에서 다시 컴파일 하면

Windows Vista 에 맞게 모양 자동 최적화 EX) bVistaStyle 추가 파라미터 전달

CFileDialog dlgFile(TRUE); dlgFile.DoModal();

Page 27: MFC  업데이트와 표준 라이브러리 확장

04/20/23 27

Support Office&VS&IE style

Page 28: MFC  업데이트와 표준 라이브러리 확장

04/20/23 28

MFC 9.0 에서 새로운 것들

Visual style Application UI 빌드가 가능 Microsoft Office Visual Studio Internet Explorer

다양한 UI 구성 요소들 지원 Toolbar 커스터마이징 메뉴 , 키 , 메뉴바 , Docking Panes

다양한 스킨 지원 XP, Vista, Office2003, Office2007 (blue, black,

aqua…)

Page 29: MFC  업데이트와 표준 라이브러리 확장

04/20/23 29

Office Interface

Page 30: MFC  업데이트와 표준 라이브러리 확장

04/20/23 30

IE Interface

Page 31: MFC  업데이트와 표준 라이브러리 확장

04/20/23 31

Visual Studio Interface

Page 32: MFC  업데이트와 표준 라이브러리 확장

04/20/23 32

새로운 형태 컨트롤 지원

막상 구현하려면 막막한 여러 컨트롤 지원

Page 33: MFC  업데이트와 표준 라이브러리 확장

04/20/23 33

MFC9.0 모습 및 변화

Page 34: MFC  업데이트와 표준 라이브러리 확장

04/20/23 34

MFC 9.0 에서 변화된 것들

CTime 클래스의 처리 날짜 확장 변경 ActiveX 컨트롤을 삽입후 탭오더 변경 버그 수정 CFileDialog 의 컨트롤 ID 가 변경 CWnd::GetMenuBarInfo 메소드 삭제

CFrameWnd::GetMenuBarInfo 의 Virtual 속성 없어짐 CHttpServer 가 없어짐

ISAPI(Internet Server Application Programming Interface)를 지원하지 않음

ANSI MFC 메소드를 Unicode 로 변경 권장 Visual Manager 는 MBCS 과 Unicode 를 모두 지원하지만

Windows Control 를 래핑하면서 Unicode 만 지원하게 됨

Page 35: MFC  업데이트와 표준 라이브러리 확장

04/20/23 35

Known Uses

Page 36: MFC  업데이트와 표준 라이브러리 확장

04/20/23 36

StandardCppLibraryIsExtended() VS2008VS2008 에 포함된 에 포함된 TR1TR1 항목들항목들

shared_ptrshared_ptr, , weak_ptrweak_ptr mem_fn()mem_fn(), , bind()bind(), and , and functionfunction 정규 표현식 정규 표현식 regexregex <random><random> Containers (Containers (tupletuple, , arrayarray, , unordered_setunordered_set , etc.) , etc.) <type_traits><type_traits> reference_wrapperreference_wrapper

포함되지 않은 항목들포함되지 않은 항목들 C99 Compatibility (C99 Compatibility (<cstdint><cstdint>, etc.), etc.) Special Math Functions (Special Math Functions (riemann_zeta()riemann_zeta(), etc.), etc.)

Page 37: MFC  업데이트와 표준 라이브러리 확장

04/20/23 37

Visual Studio 에서

TR1TR1 에 대한에 대한 정책정책

Visual C++ 2005 (VC8)Visual C++ 2005 (VC8) 에는 포함시키지 않을 에는 포함시키지 않을 것임것임

VC9 Express VC9 Express 버전에는 포함 안됨버전에는 포함 안됨 Visual C++ 2008 (VC9) RTMVisual C++ 2008 (VC9) RTM 별도의 별도의 patchpatch 를 설치 하면 를 설치 하면 VC9 RTMVC9 RTM 에 포함 됨에 포함 됨 VC9 SP1 VC9 SP1 과 이후 버전에는 포함 됨과 이후 버전에는 포함 됨 (VC10, …)(VC10, …)

Page 38: MFC  업데이트와 표준 라이브러리 확장

04/20/23 38

TR1 구성요소

TR1 TR1 의 구성 요소의 구성 요소 <regex><regex> 와 같은 새로운 헤더 파일 셋와 같은 새로운 헤더 파일 셋 <memory><memory> 와 같은 기존 헤더의 수정 파일 셋와 같은 기존 헤더의 수정 파일 셋 msvcp90[d].dll msvcp90[d].dll 의 수정 파일 셋의 수정 파일 셋

기존 콤포넌트들과 분리되어 있는 요소 헤더 파일만 추가 한다고 TR1 을 사용할 수 없음 msvcp90[d].dllmsvcp90[d].dll 와 같은 파일과 쌍으로 움직여야 함와 같은 파일과 쌍으로 움직여야 함 MFC UpdateMFC Update 와 와 TR1 UpdateTR1 Update 는 별개임는 별개임

Page 39: MFC  업데이트와 표준 라이브러리 확장

04/20/23 39

TR1 differ from Boost

라이선스 정책라이선스 정책 BoostBoost 는 오픈소스는 오픈소스 , TR1, TR1 은 은 DLL Library DLL Library 정책에 따름정책에 따름

BoostBoost 의 모든 요소가 의 모든 요소가 TR1TR1 에 포함 된 것은 아님에 포함 된 것은 아님 일부 일부 regex regex 문법문법 , shared_array …, shared_array …

최적화 최적화 (e.g. vector<shared_tr<T> >)(e.g. vector<shared_tr<T> >) 기존 STL 과 같이 사용할 수 있도록 리포지셔닝 /clr, /clr:pure, /W4, /Za, /Gz, /anlayze STL 에서 처럼 IDE Debugger Visualizer 에서

TR1 type 은 강하게 연동됨

Page 40: MFC  업데이트와 표준 라이브러리 확장

04/20/23 40

추가된 헤더파일 <array> <functional> <memory> <regex> <tuple> <type_traits> <unordered_map> <unordered_set> <utility>

Page 41: MFC  업데이트와 표준 라이브러리 확장

04/20/23 41

Reference

VC++2008 Feature Pack Beta Documentation C++ 표준 라이브러리 확장 튜토리얼 및 레퍼런스 - Pete

Becker, 지 & 선 http://open-std.org/jtc1/sc22/wg21/docs/papers/2005

/n1836.pdf http://blogs.msdn.com/vcblog http://channel9.msdn.com/tags/C++ http://blogs.msdn.com/somasegar

Page 42: MFC  업데이트와 표준 라이브러리 확장

04/20/23 42

Thank you 이후 피드백http://www.devpia.com/MAEUL/Contents/List.aspx?

BoardID=4246&MAEULNo=4 Software Architecture 와 Pattern 관련 Study 및 Online 토론 Software Architecture 와 Design Pattern 관련 Q&A