visual c++ 2008 업그레이드 하기pds7.egloos.com/pds/200801/06/70/vc2008upgrade.pdf · windows...

15
Visual C++ 2008 Visual C++ 2008 Visual C++ 2008 업그레이드 하기 Visual C++ 2008 업그레이드 하기 고재관 Microsoft MVP Microsoft MVP [email protected] www.PDAlab.org myaustin egloos com myaustin.egloos.com Agenda Agenda 프로젝트 변환 Conversion Wizard 코드최적화 안전한 문자열처리 메시지 핸들러 메시지 핸들러 프로젝트 프로퍼티 데모 데모

Upload: others

Post on 06-Jan-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Visual C++ 2008 업그레이드 하기pds7.egloos.com/pds/200801/06/70/VC2008Upgrade.pdf · Windows Message/ Event HandlerWindows Message/ Event Handler 연결연결 UI Control EventHandler

Visual C++ 2008Visual C++ 2008Visual C++ 2008업그레이드하기Visual C++ 2008업그레이드하기

고재관Microsoft MVPMicrosoft [email protected] www.PDAlab.org myaustin egloos commyaustin.egloos.com

AgendaAgenda

프로젝트 변환

gg

Conversion Wizard코드최적화최적화안전한 문자열처리메시지 핸들러메시지 핸들러프로젝트 프로퍼티데모데모

Page 2: Visual C++ 2008 업그레이드 하기pds7.egloos.com/pds/200801/06/70/VC2008Upgrade.pdf · Windows Message/ Event HandlerWindows Message/ Event Handler 연결연결 UI Control EventHandler

프로젝트프로젝트프로젝트프로젝트

VC++ 6.0 과 eVC++ 4.0VC++ 6.0 과 eVC++ 4.0과과

VC++ 6.0Visual C++ 6.0 (Visual Studio 6.0)오랜 기간 익숙하여 많이 사용VC++ 새로운 기능이 주춤하여 정체VC++ 새로운 기능이 주춤하여 정체보다 나은 기능의 VC++ .NET 2002, 2002, 2005로 전환 안됨기존 개발 프로그램, 교육기관의 교육등으로 전환 주춤기존 개발 프로그램, 교육기관의 교육등으로 전환 주춤

eVC++ 4.0eMbedded Visual C++ 4.0Windows CE Toolkit for Visual C++ 5.0 부터 출발단독버전으로 eMbedded Visual C++ 3.0 과 4.0 뿐최근 몇 년전 공식 지원 중단.최근 Platform 미지원 상태에서 불안정 하게 사용 중. 문제심각반드시 전환 해야함반드시 전환 해야함

Page 3: Visual C++ 2008 업그레이드 하기pds7.egloos.com/pds/200801/06/70/VC2008Upgrade.pdf · Windows Message/ Event HandlerWindows Message/ Event Handler 연결연결 UI Control EventHandler

기존 IDE환경기존 IDE환경기존 환경기존 환경

VC++ 6.0 변환VC++ 6.0 변환변환변환

Page 4: Visual C++ 2008 업그레이드 하기pds7.egloos.com/pds/200801/06/70/VC2008Upgrade.pdf · Windows Message/ Event HandlerWindows Message/ Event Handler 연결연결 UI Control EventHandler

eVC++ 4.0 변환eVC++ 4.0 변환변환변환

eVC++ 4.0 변환완료eVC++ 4.0 변환완료변환완변환완

Page 5: Visual C++ 2008 업그레이드 하기pds7.egloos.com/pds/200801/06/70/VC2008Upgrade.pdf · Windows Message/ Event HandlerWindows Message/ Event Handler 연결연결 UI Control EventHandler

파일의변화파일의변화파일의변화파일의변화

VC++ 6.0 eVC++ 4.0

변환전 변환후 변환전 변환후

플랫폼확대플랫폼확대플랫폼확대플랫폼확대

Mobile Device의 기회확대eVC++ 4.0 의 제한된 플랫폼지원

VC++ 2008로 변환후 확대된 지원 플랫폼가장 최신 버전까지 모두 지원 하고 향후 버전도 계속 지원됨

Page 6: Visual C++ 2008 업그레이드 하기pds7.egloos.com/pds/200801/06/70/VC2008Upgrade.pdf · Windows Message/ Event HandlerWindows Message/ Event Handler 연결연결 UI Control EventHandler

기존프로젝트변환VC++ 6 0 eVC++ 4 0

기존프로젝트변환VC++ 6 0 eVC++ 4 0VC++ 6.0 , eVC++ 4.0VC++ 6.0 , eVC++ 4.0

코드최적화코드최적화코드최적화코드최적화

Page 7: Visual C++ 2008 업그레이드 하기pds7.egloos.com/pds/200801/06/70/VC2008Upgrade.pdf · Windows Message/ Event HandlerWindows Message/ Event Handler 연결연결 UI Control EventHandler

안전한문자열처리안전한문자열처리안전한문자열처리안전한문자열처리

안전한 문자열 처리 기능 추가빌드시 상당한 양의 Warning메시지 발생

안전한 API로 교체 권고함.경고 메시지만 없앨 수 있음.안전문자열 경고 제외

전체 경고메시지 없앰

안전문자열 경고 제외#define _CRT_SECURE_NO_DEPRECATE#define _CRT_SECURE_NO_WARNINGS

#pragma warning ( disable:4996 )

기존size_t mbstowcs(

기존(

wchar_t *wcstr, const char *mbstr, size_t count

)

문자열을 NULL종료Null Trmination

런타임 API의 문제점 내포 ); 런타임 API의 문제점 내포Null없는 등 런타임중 오류 발생 가능성 높음

최근안전한 문자열 처리 위해 API추가

최근errcode mbstowcs_s(

size t *pConvertedMBChars,

안전한 문자열 처리 위해 추가변경 할 것을 권고하고 있음

size_t pConvertedMBChars,wchar_t *wcstr,size_t sizeInWords,const char *mbstr,size t countsize_t count

);

Page 8: Visual C++ 2008 업그레이드 하기pds7.egloos.com/pds/200801/06/70/VC2008Upgrade.pdf · Windows Message/ Event HandlerWindows Message/ Event Handler 연결연결 UI Control EventHandler

WINVERWINVER

기존WINVER 미정의 또는 다른 값을 가짐winres.h에 포함정상빌드정상빌드

최근최근WINVER 미정의 또는 다른 값을 가질 경우 빌드 에러 발생명시적으로추가선언필요컴파일옵션 /D를통해매크로정의가능#define WINVER 0x0400

혹은혹은

#ifdef #undef WINVER#define WINVER 0x0400##endif

변수선언변수선언변수선언변수선언

VC++ 6.0 / eVC++ 4.0반복문 내 선언은 그 이후에도 유효VC++ 6.0 / eVC++ 4.0for(int i=0; i<10;i++) { … }f ( i 0 i<10 i++) { }

VC++ 2008

for( i=0; i<10;i++) { … }

반복문내 선언은 Local 선언으로 간주VC++ 2008for(int i=0; i<10;i++) { … }

변수를 미리 선언 하여 사용 권장기존 소스코드 수정 불가피

( ; ; ) { }for(int i=0; i<10;i++) { … }

기존 소스코드 수정 불가피추천int i;For( i=0; i<10;i++) { … }For( i=0; i<10;i++) { … }

Page 9: Visual C++ 2008 업그레이드 하기pds7.egloos.com/pds/200801/06/70/VC2008Upgrade.pdf · Windows Message/ Event HandlerWindows Message/ Event Handler 연결연결 UI Control EventHandler

MFC 와 ATLMFC 와 ATL와와

일부 MFC전용 Class들이 ATL공동 사용사용법이 달라지는 경우도 있으니 확인 필요예) CString Class CStringT Interface로 변경예) g g 변경

VC++ 6.0 / eVC++ 4.0문자의 ASCII/Unicode값을 직접 넣을 수 있음VC++ 6.0 / eVC++ 4.0CString strA = 0x20;

VC++ 2008문자변수 또는 문자열 매크로 처리 해주어야 함문자변수 는 문자열 매 처리 해주어야 함VC++ 2008CString strA = _T(‘\x020’);

혹은CString strA = “ “;CString strA = ;

사용자메시지처리사용자메시지처리사용자메시지처리사용자메시지처리

VC++ 6.0 / eVC++ 4.0사용자메시지 처리 함수 생략 사용가능VC++ 6.0 / eVC++ 4.0ON_MESSAGE(WM_USER+1,OnUser)…void 클래스명::OnUser(WPARAM wParam) { … } 혹은void 클래스명::OnUser() { … } 등…

VC++ 2008사용자메시지 처리함수의 형태는 표준을 따라야 함사용자메시지 처리함수의 형태는 표준을 따라야 함기존 개발 소스코드 수정 불가피VC++ 2008ON_MESSAGE(WM_USER+1,OnUser)…LRESULT 클래스명::OnUser(WPARAM wParam, LPARAM lParam) { … }

Page 10: Visual C++ 2008 업그레이드 하기pds7.egloos.com/pds/200801/06/70/VC2008Upgrade.pdf · Windows Message/ Event HandlerWindows Message/ Event Handler 연결연결 UI Control EventHandler

메시지핸들러메시지핸들러메시지핸들러메시지핸들러

VC++ 6.0 / eVC++ 4.0Class Wizard 를 통한 통합 관리

VC++ 2008통합 IDE환경구성. Class Wizard 없앰Class의 속성창의 아이콘을 선택속성 추가 삭제의 개념으로 접근Windows Message/ Event Handler 연결Windows Message/ Event Handler 연결UI Control Event Handler 연결

Class ViewClass View

VC++ 6.0 / eVC++ 4.0Class의 헤더 연결Class의 프로그램 파일 연결

VC 2008VC++ 2008동일 기능 수행Message/ Event Handler 연결 추가Message/ Event Handler 연결 추가기반 Class / 파생 Class 연결 추가

Page 11: Visual C++ 2008 업그레이드 하기pds7.egloos.com/pds/200801/06/70/VC2008Upgrade.pdf · Windows Message/ Event HandlerWindows Message/ Event Handler 연결연결 UI Control EventHandler

변환프로젝트오류수정VC++ 6 0 5 0 프로젝트 변환 및 오류코드 수정

변환프로젝트오류수정VC++ 6 0 5 0 프로젝트 변환 및 오류코드 수정VC++ 6.0 , 5.0 프로젝트 변환 및 오류코드 수정VC++ 6.0 , 5.0 프로젝트 변환 및 오류코드 수정

빌드빌드빌드빌드

Page 12: Visual C++ 2008 업그레이드 하기pds7.egloos.com/pds/200801/06/70/VC2008Upgrade.pdf · Windows Message/ Event HandlerWindows Message/ Event Handler 연결연결 UI Control EventHandler

프로젝트생성프로젝트생성젝 생성젝 생성

VC++ 6.0 / eVC++ 4.0File New Project탭VC++ 관련 프로젝트 생성

ATL Database MFCATL, Database , MFCDLL, Static-Library, Win32

VC++ 형태의 솔루션 구성만 가능VC 형태의 솔루션 구성만 가능

VC++ 2008File New ProjectVC++ 관련 프로젝트 생성 동일 지원

기능과 과정은 거의 유사함타언어와 통합된 솔루션 구성 추가

VC++ VB NET C# 스마트 장치 등VC++, VB.NET, C#, 스마트 장치 등…

프로젝트기본설정프로젝트기본설정젝 기본설정젝 기본설정

VC++ 6.0 / eVC++ 4.0Project Setting화면 General탭Microsoft Foundation ClassesIntermediate filesIntermediate filesOutput files

VC++ 2008Project Properties화면 Configuration PropertiesProject Properties화면 Configuration Properties General항목동일 기능 제공문자열 형태 설정 추가ATL사용 유무 추가CLR사용 설정 추가 등CLR사용 설정 추가 등…

Page 13: Visual C++ 2008 업그레이드 하기pds7.egloos.com/pds/200801/06/70/VC2008Upgrade.pdf · Windows Message/ Event HandlerWindows Message/ Event Handler 연결연결 UI Control EventHandler

프로젝트디버그옵션프로젝트디버그옵션젝 디버 옵션젝 디버 옵션

VC++ 6.0 / eVC++ 4.0Debug탭

실행파일 지정 및 작업위치 지정

VC 2008VC++ 2008Debugging항목

동일기능제공동일기능제공디버깅장치 선택 추가디버거 런쳐 및 환경옵션 추가등디버거 런쳐 및 환경옵션 추가등

프로젝트컴파일옵션프로젝트컴파일옵션젝 컴파일옵션젝 컴파일옵션

VC++ 6.0 / eVC++ 4.0C/C++탭

컴파일 옵션 및 선언 수작업 등록 및 수정

VC 2008VC++ 2008C/C++ 항목

Command Line 하부항목 통해 동일기능제공Command Line 하부항목 통해 동일기능제공9개의 하부항목 추가 제공초보자도 쉽게 설정 가능자 쉽게 설정 가능

Page 14: Visual C++ 2008 업그레이드 하기pds7.egloos.com/pds/200801/06/70/VC2008Upgrade.pdf · Windows Message/ Event HandlerWindows Message/ Event Handler 연결연결 UI Control EventHandler

프로젝트링크옵션프로젝트링크옵션젝 링 옵션젝 링 옵션

VC++ 6.0 / eVC++ 4.0Link탭

링크생성 파일 및 추가라이브러리 지정 가능다양한 링크 옵션을 수작업으로 등록 가능다양한 링크 옵션을 수작업으로 등록 가능

VC 2008VC++ 2008Linker 항목

Command Line 하부항목 통해 동일기능제공Command Line 하부항목 통해 동일기능제공8개의 하부항목 추가 제공초보자도 쉽게 설정 가능자 쉽게 설정 가능

추가코드작업추가코드작업

Page 15: Visual C++ 2008 업그레이드 하기pds7.egloos.com/pds/200801/06/70/VC2008Upgrade.pdf · Windows Message/ Event HandlerWindows Message/ Event Handler 연결연결 UI Control EventHandler