제 4장 Visual C++ COM 컴파일러.

Slides:



Advertisements
Similar presentations
YOUR LOGO HERE - 청솔 초등학교 부설 영재학급 분당초 4 학년 5 반 이소은 -
Advertisements

ㅋㅋ 다른 집단과 명확히 구별되는 가치체계와 지식 그리고 그에 부합하는 기술을 가지고 있어야 한다. 가치체계 - 사회복지사윤리강령, 선서 등 기본요소 완성 지식 - 사회복지사 1 급 자격증 시험으로 완성 기술 - 명확하지 않으나 실습, 보수교육을 통해 완성 Client.
Computer Graphics 윈도우 프로그래밍 김 창 헌김 창 헌. Computer Graphics 2 윈도우 시스템  윈도우  스크린 위에서 독립적으로 움직일 수 있는 사각형 영역  윈도우 시스템  유저와 어플리케이션간의 그래픽 스크린을 통한 인터페이스 를.
미디어 프로그래밍 II 소개.
프로젝트 보고서 학과 : 임학과 학번 : 성명 : 조성환 Windows 프로그래밍.
여성의 광장 어린이 집 www. womankids. com
컴퓨터 공학 설계 및 실험 I MFC programming
1. 기관별 맞춤형 집중교육 : 실습 및 개인별 집중지도    1. 기관별 맞춤형 집중교육 : 실습 및 개인별 집중지도 (상설) 기관별 맞춤형 교육 - 당 교육기관에서.
Efl을 이용한 타이젠 네이티브 웨어러블 앱 만들기
3. C++와 객체지향 C++ 코딩 방법 객체 단위로 2 개의 파일 인터페이스 파일 구현파일
03장 영상처리를 위한 Visual C++ 디지털 영상 파일 포맷 MFC 응용 프로그램 마법사를 이용한 MFC 프로젝트 작성
명품 C++ 프로그래밍 3장. 클래스와 객체.
제1장 C#의 기초 1.1 .NET Framwork 1.2 .NET Environment 1.3 C# 소개.
C++ Espresso 제1장 기초 사항.
Lecture 2 MFC and Application Frameworks
Visual C++ Programming Document/View Architecture 3
D. 지뢰찾기 분석 설계 예제.
다이얼로그 박스와 컨트롤 컴퓨터 계측 및 실습.
Internet Computing KUT Youn-Hee Han
Lab 3 Guide: 교재 4장 대화상자 예제. - 프로파일 입력 ( 쪽)
Chapter 10 – 추상 자료형 Outline 10.1 소개 10.2 Ada의 추상 자료형 10.3 C++의 추상 자료형
MelOn WP8 Developer Guide
5장. 리스트 리스트 학습목표 목록이나 도표처럼 여러 데이터를 관리할 수 있는 자료형을 추상화
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
8. 객체와 클래스 (기본).
Internet Computing KUT Youn-Hee Han
Visual Studio 2008 버전별비교 및 제품개요
Power Java 제4장 자바 프로그래밍 기초.
소프트웨어공학 UML 학기.
인스톨쉴드9 데브스튜디오 사용 매뉴얼 (VB6에서 개발후 배포프로그램 만들기)
Manual : User Exit.
Hacker Debugging Uncovered Chapter 9:Hashing and How to Overcome it Chapter 10:Popular Protection Mechanisms Used in Demo Versions 이동현.
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 03. 클래스의 기본.
6장 히스토그램 처리 차 례 히스토그램의 개요 히스토그램의 용도 영상 이치화 히스토그램 평활화 히스토그램 스트레칭
Visual C++ Programming
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
7장 클래스.
Visual C++ Programming Common Controls
14장. 함수 1 01_ 함수의 기본 02_ 인자의 전달.
영상처리 시작하기 & 영상처리 프로그램 만들기
ASP.NET Mobile Controls
DataStage 운영자 지침서 Operator’s Guide
C++ 개요 객체지향 윈도우즈 프로그래밍 한국성서대학교 유일선
Active X 이름 : 김 수 종 학번 :
날짜: 팀명: TEAM-SIX 발표자: 이기영
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
강남 DataBinding 스타일 Windows 8 앱개발자라면 꼭 알아야할 개발자가 알아야할 Binding.
Real-time Tactics Game
사회복지 법제론 /노인장기요양보험법 문은홍 조소라.
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
[INA470] Java Programming Youn-Hee Han
ODBC &DAO 안명상.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
Lab 9 Guide: 인터넷 프로그래밍 예제 * 일대일 채팅 프로그램 (교재 27장, 쪽)
제 11장. 템플릿과 STL 학기 프로그래밍언어및실습 (C++).
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
3장,4장 발표 서정우.
LOGOTYPE 춤추는 풍선 팀장 : 이준호 팀원 : 장원진.
제 7장 이벤트.
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
04장 ㅎㅎ 화소점 처리 화소 점 처리의 개념 디지털 영상의 산술연산과 논리연산 디지털 영상의 다양한 화소 점 처리 기법
김희정 Bridge Pattern.
컴퓨터 계측 및 실습 C++ 기초 영남대학교 기계공학부.
캡슐화 (Encapsulation) 두원공과대학 소프트웨어개발과 이 원 주.
컨트롤, 프로퍼티, 이벤트.
실시간 음성 채팅 서비스 (Voice Chatting Programe)
1 2 4 &
MFC 응용 프로그램 구조 두 개의 윈도우로 구성된 일반적인 MFC 프로그램 프레임 윈도우
C++ 언어의 특징
발 표 자 : 7조 손 창 국 윤 오 성, 박 진 완 객체 지향 프로그래밍 C++
Presentation transcript:

제 4장 Visual C++ COM 컴파일러

Type Library Type Library AddBack.idl COM 컴포넌트가 노출하는 COM 개체에 대한 정보 포함 .tlb 확장자 . 일종의 복합 도큐먼트 COM 개체에 대한 매뉴얼 MIDL AddBack.idl AddBack.tlb(서버 COM에 대한 모든 정보르 담고있는 바이너리 파일 #import “AddBack.tlb” AddBack.tlh(스마트 포인터) AddBack.tli(COM 메서드 호출 하는 구현코드) Visual C++ 컴파일러

Visual C++ COM 지원 Visual C++ 컴파일러는 COM 을 지원하기 위해 다음과 같은 예약어와 클래스를 추가로 제공한다. #import __declspec 확장 속성: uuid 및 property __uuidof _com_ptr_t 클래스 _com_error 클래스 _bstr_t 클래스 _variant_t 클래스 이들을 통해 COM Client 어플리케이션을 쉽게 작성할 수 있다.

C++ 언어 확장 __declspec(uuid()) : GUID 지정 __uuidof() : GUID 꺼내오기 struct __declspec(uuid(“60bbxxxxx-a07f-xxxx-xxxx-xxxxxxxx”)) AddBack; struct __declspec(uuid(“4122xxxxx-a07f-xxxx-xxxx-xxxxxxxx”)) IAddEnd; __uuidof() : GUID 꺼내오기 (COM 개체나 인터페이스의 GUID 값을 얻어올때 __uuidof(AddBack) __uuidof(IAddEnd)

스마트 포인터 클래스 _com_ptr_t 클래스 스마트 포인터 기능을 갖고 있는 템플릿 클래스 _COM_SMARTPTR_TYPEDEF(IAddEnd, __uuidof(IAddEnd); typedef _com_ptr_t<_com_IID<IAddEnd, __uuidof(IAddEnd>> IAddEndPtr; IAddEnd 인터페이스가 IAddEndPtr 스마트 포인터 클래스 안에 캡슐화 됨 IAddEnd* 데이터형 대신 IAddEndPtr 데이터형을 사용 IUnknown 인터페이스의 메서드를 사용하지 않고도 편리하게 IAddEnd 인터페이스를 사용할 수 있다.

인스턴스 생성 방법 1 방법 2 방법 3 HRESULT hr; IAddEndPtr pIAddEnd; hr = pIAddEnd.CreateInstance(uuidof(AddBack)); if(SUCCEEDED(hr)) 방법 1 hr = pIAddEnd.CreateInstance(CLSID_AddBack); if(SUCCEEDED(hr)) 방법 2 hr = pIAddEnd.CreateInstance(“AddBack.AddBack.1”); if(SUCCEEDED(hr)) 방법 3

AddFront 예제 작성 “제5장 Active Template Library 의 개요”에 구현되어 있는 AddBack COM Server 를 사용하는 클라이언트 어플리케이션 구현입니다.

AddFront 예제 프로그램 AddBack COM 컴포넌트 등록 Visual C++ 개발환경에서 예제 프로그램이 설치되어 있는 AddBack 폴더에서 AddBack.dsw 파일을 연다 AddBack 프로젝트를 Debugging Mode 로 Rebuild 하여 AddBack.dll 을 생성한다. Build 과정에서 AddBack COM 컴포넌트는 레지스트리에 등록된다.

MFC Dialog Based App

DialogBox 편집 Ctrl+더블클릭 Alt+더블클릭 IDC_ADDEND IDC_ADD IDC_ADDTEN short m_nAddEnd IDC_ADD IDC_ADDTEN IDC_CLEAR IDOK IDC_SUM (Read Only) short m_nSum

Message Handler 설치 ctrl+w

AddFront 생성 준비작업 COM 라이브러리 초기화 코드 추가 StdAfx.h 헤더파일 변경 BOOL CAddFrontApp::InitInstance() { // Standard initialization … AfxOleInit(); // 이하 생략, COM라이브러리에 대한 초기화 작업 StdAfx.h 헤더파일 변경 #include <afxcmn.h> // MFC support for Windows Common Controls #endif // _AFX_NO_AFXCMN_SUPPORT // tlb로 부터 tlh파일과 tli파일을 얻어낸다. #include <afxdisp.h> #import "..\AddBack\AddBack.tlb" no_namespace

AddFront 생성 AddFrontDlg.h 변수 선언 정의하지 않았는데 사용가능하다. class CAddFrontDlg : public CDialog { // 중간생략 // Implementation protected: IAddPtr m_pIAdd; // 스마트 포인터 클래스 IAddEndPtr m_pIAddEnd; // .. HICON m_hIcon; }; 정의하지 않았는데 사용가능하다. Tlb를 import 시키면 ATL 위저드가 자동으로 생성시킨다. IAddPtr을 Iadd에 대한 스마트 포인터라 한다. Tlb는 COM객체의 인터페이스들에 대해 _com_ptr_t 템플릿을 사용하여 스마트 클 래스를 정의한 후 이를 클라이언트에 제공한다.

Destructor 구현 AddFrontDlg.h 에 함수 원형 선언 AddFrontDlg.cpp 에 Destructor 구현 class CAddFrontPDlg : public CDialog { // Construction public: CAddFrontDlg(CWnd* pParent = NULL); // constructor ~CAddFrontDlg(); AddFrontDlg.cpp 에 Destructor 구현 CAddFrontDlg::~CAddFrontDlg() { m_pIAddEnd = 0; m_pIAdd = 0; }

AddFront 생성 CAddFrontDlg::OnInitDialog 멤버함수 BOOL CAddFrontDlg::OnInitDialog() { CDialog::OnInitDialog(); // 중간 생략 // TODO: Add extra initialization here // 스마트 포인터를 초기화 한다. m_pIAddEnd = IAddEndPtr(__uuidof(AddBack)); m_pIAdd = m_pIAddEnd; m_nAddEnd = m_pIAddEnd->AddEnd; m_nSum = m_pIAddEnd->Sum; UpdateData(FALSE); return TRUE; // return TRUE unless you set the focus to a control }

member 함수 구현 CAddFrontDlg::OnAdd 멤버함수 void CAddFrontDlg::OnAdd() { // TODO: Add your control notification handler code here UpdateData(TRUE); m_pIAddEnd->AddEnd = m_nAddEnd; m_pIAdd->Add(); m_nSum = m_pIAddEnd->Sum; UpdateData(FALSE); }

Member 함수 구현 CAddFrontDlg::OnAddTen CAddFrontDlg::OnClear void CAddFrontDlg::OnAddten() { // TODO: Add your control notification… UpdateData(TRUE); m_pIAdd->AddTen(); m_nSum = m_pIAddEnd->Sum; UpdateData(FALSE); } void CAddFrontDlg::OnClear() { // TODO: Add your control notification… UpdateData(TRUE); m_pIAddEnd->Clear(); m_nSum = m_pIAddEnd->Sum; UpdateData(FALSE); }

Build 수고하셨습니다. 여기까지 AddFront COM Client 제작과정 이었습니다. (Build) 하시고 Error 가 없는지 확인하시기 바랍니다.

Component 분석 AddBack_I.c AddBack_p.c AddBack.idl Dlldata.c AddBack.tlb AddBack_I.c : IID 정의 코드 AddBack_p.c 과 DllData.c 파일 : 프록시 / 스텁 코드 AddBack.tlb : 서버 COM 개체에 대한 모든 정보를 담고있는 바이너리 파일

Client 분석 AddBack.tlh AddBack.tlb AddBack.til AddBack.til : 실제로 COM 개체의 메서드를 호출하는 구현코드

Sample 작성

작성할 컴포넌트 Property Gas Mineral Probe 개체의 Gas 량에 대한 get/put 작업 Probe 개체의 Mineral 량에 대한 get/put 작업 Method AddGas AddMineral Probe 개체의 Gas 량을 8만큼씩 증가시킨다 Probe 개체의 Mineral 량을 10만큼씩 증가시킨다.

변경된 사양

Client