윈도 XP 기반의 소프트웨어 개발 유상열 솔루션 매니저 마이크로소프트
윈도 XP Savvy 어플리케이션 운영체제와 협력하여 최상의 사용자 경험을 제공한다 사용자들은 Savvy 어플리케이션을 윈도 XP 에서 최상의 어플리케이션으로 인식한다 사용자들은 윈도 XP 를 구매할때 Savvy 어플리케이션을 구매하고 싶어한다
윈도 XP 프로그래밍 지침 새로운 비주얼 스타일과통합 고품질 아이콘 저작 빠른 사용자 전환을 최대한 고려 오토플레이 핸들러 작성 제어판 분류를 따른다 패스포트 인식
윈도 카탈로그 소비자를 ISV, OEM 및 IHV 등과 연결 또한 마이크로소프트를 ISV, OEM 및 IHV 등과 연결하는 방법 모든 종류의 어플리케이션을 나열 로고 어플리케이션은 더욱 주목받는 위치에 배치
윈도 카탈로그 ‘ 시작 ’ 의 ‘ 모든 프로그램 ’ 을 통해 액세스 문제 해결, 도움말, 어플리케이션 호환성 패치 등에 대한 ISV 및 마이크로소프트간 연락처 목록 ISV 로 하여금 베타 정보나 이벤트 등에 관한 정보를 얻을수 있도록
윈도 XP 프로그래머 비주얼 스타일 빠른 사용자 전환 병렬 어셈블리 GDI+ 기타 오토 플레이 핸들러 64 비트 윈도 윈도 로고 프로그램 어플리케이션 호환성 테스트 플랫폼 SDK
비주얼 스타일
마이크로소프트 역할 깨끗하고 단순한 비주얼 스타일 제공 ISV 로 하여금 새로운 스타일을 활용하기 위한 메카니즘을 제공 커먼 컨트롤 Theming API 가이드라인 제공
비주얼 스타일을 적용하는 이유 고객의 즐거움과 열정을 이끌어낼 수 있다 주요 릴리즈임을 알린다 장엄해 보이는 ‘ 클래식 ’ 스타일을 변경 비주얼 디자인을 사용자 경험의 키 컴포넌트로 활용한다
새로와진 점 둥근 컨트롤 Alpha 지원 컨트롤의 Hot State
Theme 매니저 + Comctl V6 새로운 conctl32 를 활용하는 쉘 및 어플리케이션에 Theme 을 적용 윈도 어플리케이션의 외관을 혁신 공개 API 는 어플리케이션 작성자로 하여금 쉽게 새로운 외관을 구성하도록 한다
Theme 매니저 uxtheme.dll 새로운 컨트롤의 랜더링을 담당 컨트롤의 파트를 위치시키기 위한 정보 API 를 제공 모든 어플리케이션의 비클라이언트 영역에 대한 새 비주얼 스타일 랜더링 스크롤 바 타이틀 바 메뉴
커먼 컨트롤 (Comctl32.dll V6) 윈도우 컨트롤 ( 버튼, 리스트 박스, 에디트 컨트롤, 등 ) 과 공용 컨트롤 ( 리스트 뷰, 탭 컨트롤, 툴바, 툴팁, 등 ) 이 Comctl V6 에 통합 이들은 Theme 매니저를 이용하여 시각적 랜더링 기존 어플리케이션은 별도의 manifest 를 제공하지 않으면 Comctl v5.8 을 이용 Comctl V6 는 하위버젼에는 탑재되지 않는다
동작 원리 ComCtl32 V6 Html Other Applications Luna Theme 매니저 (UxTheme) 미래의 themes? Other Applications 커스텀 컨트롤
Theme 매니저를 사용하는 이유 윈도의 외형을 Refresh 할 필요성 Refresh 가 필요한 많은 영역 Comctl, HTML, 커스텀 컨트롤 … 디자이너로 하여금 개발과정과 독립적인 혁신을 이루도록 컨트롤 로직과 컨트롤 디자인의 분리
새로운 커먼 컨트롤 사용 이유 상위 목표 : 기존 어플리케이션을 유지 하위 목표 : 소비자의 즐거움을 증대 목표의 충돌 Comctl32 의 요소를 바꾸면 어플리케이션의 균형이 깨짐 병렬 어셈블리 공유를 사용하여 두 목표를 모두 만족 구버젼과 신버젼이 머신에 공존 미래 버젼으로 하여 이전 버젼에 균열이 가지 않는다 어플리케이션은 자신이 시험한 버젼을 사용
ComCtl32 V6ComCtl32 V5 DLL Loader SxS Manager 어플리케이션 Manifest 병렬식 동작 원리
지원 방법 COMCTL32.DLL 에 링크한다 Manifest 를 이용하여 COMCTL32.DLL 에 대한 종속성을 기술한다 커스텀 컨트롤 및 Owner Draw 컨트롤에 대해 Theme API 를 사용한다 모든것이 잘 동작하는지 시험한다
새버젼 컨트롤을 사용하는 Manifest ... Your app description here ... Your app description here <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version=" " processorArchitecture="X86" publicKeyToken="6595b64144ccf1df" language="*" /> ...
Manifest 명명 실행 파일 예 c:\Program Files\OutLook Express\msimn.exe.manifest 제어판 예 c:\windows\system32\desk.cpl.manifest 리소스 RT_MANIFEST
새로운 아이콘 작업 Gifmoviegear 등의 툴을 이용 아이콘마다 9 개의 이미지 제공 : 4bit, 8bit 및 32bit 컬러 파일 아이콘 추천 크기 : 48x48, 32x32, 16x16 툴바 아이콘 추천 크기 : 24x24, 16x16
비주얼 스타일 Theme 매니저 커먼 컨트롤
병렬식 어셈블리 공유
어셈블리 스스로를 설명 하나 이상 DLL 의 집합 명명, 바인딩, 설치의 단위 불변의 수정이 없다
사이드 바이 사이드 어셈블리 윈도 XP 가 제공하는 기반 구조 버젼화된 어셈블리 설치 및 저장소 적재 개발자들은 병렬식 코딩을 해야한다 다수의 버젼이 동시에 실행된다
공유 병렬식 어셈블리 시스템 관리 폴더에 윈도 인스톨러를 이용하여 설치 윈도 파일 보호에 의해 보호된다 공개키 기반으로 사인되어야 한다 윈도 인스톨러가 없으면 사적으로만 설치된다
사적 어셈블리 어플리케이션 아래 설치 해당 어플리케이션에 의해서만 사용 XCopy 나 윈도 인스톨러 등 설치 방법 무관 어플리케이션 내에서 유일한 이름
Manifest 어셈블리를 설명 DLL 목록 Win32® 글로벌 등록 윈도 클래스 종속성 설치 및 실행시 사용 XML 양식 별도의 파일 -or- 실행 파일이나 DLL 의 리소스
어셈블리 생성 추천 절차 포함할 리소스 결정 복수의 DLL 동시 실행시 서로 영향을 미치지 않도록 설계 서로 영향을 주어서는 않된다 어셈블리 Manifest 생성 공유 어셈블리는 어셈블리를 사인하고 사유키는 보호한다 모든 버젼에 동일 키 사용 시험
격리 어플리케이션 Manifest 를 통한 자기 기술 종속성 기술 : 공유 병렬식 어셈블리 사적 병렬식 어셈블리 완전 격리 어플리케이션 모든 종속성이 병렬식 부분 격리 어플리케이션 일부 종속성만이 병렬식
윈도 XP 에서 SxS 어셈블리 사용 ComCtl32 V6.0 DLL Loader 어플리케이션 ManifestManifest 병렬식 캐시의 공유 어셈블리 ComCtl32 V6.1 Manifest 사적어셈블리 Manifest 운영체제가 설치 서비스팩이나 윈도 업데이트 혹은 윈도 인스톨러가 설치 Manifest생성 manifest 를 이용하여 활성화 컨텍스트 생성. 적당한 버젼 적재 manifest 를 이용하여 활성화 컨텍스트 생성. 적당한 버젼 적재 공유 및 사적 어셈블리에 대한 종속성 기술
윈도 XP 의 병렬식 컴포넌트 윈도 커먼 컨트롤 GDI+ 비주얼 C++ 런타임 라이브러리 버젼 6.0 MFC ATL
빠른 사용자 전환
기본적으로 프로파일 사용 설치시 혹은 필요에 따라 사용자 계정을 생성 기본적으로 암호가 사용되지 않는다 그림으로 표시된 로그온 화면을 소개 사용자 계정의 추가 / 편집을 위한 제어판 빠른 사용자 전환 가능 복수의 사용자가 동시에 로그온 가능
빠른 사용자 전환 사용 어플리케이션이 현재의 데스크톱에 있지 않은 경우 : 프로세서 사용을 최소화 소리를 사용하지 않는다 시스템 자원 사용을 센스있게 서비스는 활성화된 세션에 notify 를 준다
어플리케이션의 다른 인스턴스 FindWindow(Ex) 는 단일 세션에서만 동작한다 이벤트, 세마포어, 뮤텍스, waitable timers, 파일 매핑 오브젝트 및 job 오브젝트는 윈도 2000 이상에서 Global\ 혹은 Local\ 을 사용 가능
Notification WTSRegisterSessionNotification NOTIFY_FOR_THIS_SESSION NOTIFY_FOR_ALL_SESSIONS WM_WTSCONSOLE_CHANGE WTS_CONSOLE_CONNECT WTS_CONSOLE_DISCONNECT WTS_REMOTE_CONNECT WTS_REMOTE_DISCONNECT WTS_SESSION_LOGON WTS_SESSION_LOGOFF
빠른 사용자 전환 설정 Notification
GDI+
GDI+ 아키텍처 GDIPlus GDI+ 엔진 2D 벡터 그래픽이미지Typography 시스템 드라이버 GDI DirectX 마이크로소프트.NET 프레임워크 System.Drawing 네임스페이스 Win32 (C++)
GDI+ 사용자 윈도 XP 오피스 XP .NET 프레임워크 SDK System.Drawing 네임 스페이스 플랫폼 SDK 윈도 98 이후 운영체제에서 재배포 가능 비지오 2002
2D 벡터 그래픽 기능 풍부한 그래픽 투명도 Gradient 및 texture 칠하기 Linear gradients 및 path gradients 고품질 랜더링 Anti-aliasing 두단계 품질 레벨 플로팅 포인트 좌표
2D 벡터 그래픽 코드 Autoshape 을 투명 솔리드 브러시로 칠하기 : // initialize path for Autoshape // and Graphics from HDC Path p; Graphics g; // Create a semitransparent green brush SolidBrush sb = new SolidBrush (Color.FromArgb (128, 0, 128, 0)); g.DrawPath (sb, p);
Autoshape 을 Linear Gradient 브러시로 칠하기 : 2D 벡터 그래픽 코드 // Create rectangle to define bounds of linear // gradient brush Rectangle r = new Rectangle (0, 0, 200, 200); // Create a linear gradient brush that shades // vertically from blue to black LinearGradientBrush lgb = new LinearGradientBrush ( rect, Color.Blue, Color.Black, LinearGradientMode.Vertical); g.FillPath (lgb, p);
디지탈 이미지 이미지 포맷 이미지 포맷을 인코딩 및 디코딩하는 인터페이스 제공 JPEG, PNG, GIF, BMP, TIFF, EXIF, ICON, EMF, WMF 등을 기본적으로 지원 이미지의 적재 혹은 저장이 한 라인의 코드로 완성
디지탈 이미지 이미지 프로세싱 자주 발생하는 작업 지원 회정, 자르기 (crop), 광도 (brightness), 명암 (contrast), 색의 균형 (color balance), 재 색칠 (recolor), gamma Scaling 에 많은 품질 모드가 적용된다 Bicubic 그리고 High Quality Bicubic Bilinear 그리고 High Quality Bilinear Nearest neighbor 손실없는 JPEG 회전
이미지 코드 이미지를 bicubic filtering 으로 표시 Image MyPicture = new Bitmap (“MyPicture.png”); // Set filtering mode to the highest possible quality. g.SetInterpolationMode = InterpolationMode.HighQualityBicubic; // Render MyPicture to the rectangle (0, 0, 100, 100) // on the screen. g.DrawImage (MyPicture, new Rectangle (0, 0, 100, 100), 0, 0, MyPicture.Width, MyPicture.Height, GraphicsUnit.Pixel);
Typography 기능 윈도 XP 에서 ClearType™ 지원 LCD 에서 문자열 가독성에 300% 향상 Gradient 및 Texture 로 칠해진 문자열 Antialiased 문자열
Typography 다국어 지원 유니코드 3.0 표준 윈도 2000 스크립트를 비롯한 지원 ( 예, Arabic, Hebrew, Indic, Syriac, Thai, Thaana…) 언어에 따른 line breaking 엔진 (Far East line breaking 규칙, Thai 는 사전 기반 ) Far East 는 수직 문자열 지원
GDI+
추가적으로 윈도 로고 프로그램 XP 호환성 테스트 플랫폼 SDK 다운로드 tformsdk/sdkupdate/ 오토 플레이 핸들러 msdn magazine, Nov 2001 64 비트 윈도 msdn magazine, Nov 2001
© 2001 Microsoft Corporation. All rights reserved.