일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 함수
- 문법
- Tips강좌
- 알고리즘
- 연산자
- tipssoft
- Javascript
- Programming
- CS
- Visual Studio
- VS ERROR
- 지식나눔강좌
- doit코틀린프로그래밍
- 배열
- Kotlin
- 이지스퍼블리싱
- Tips프로그래밍강좌
- 리뷰
- 김성엽
- 포인터
- c#
- Desktop
- Direct2D
- 백준
- 티스토리
- Windows
- Win32
- 프로그래밍
- c
- c++
- Yesterday
- Today
- Total
F.R.I.D.A.Y.
Direct2D - WIC 비트맵 그리기 사전 작업 본문
Windows Imaging Component라고 해서 WIC라는 COM 요소가 있다. Windows Vista부터 나온 코덱 관리 프레임워크인데 이 녀석을 사용하면 여러가지 포맷을 하나의 메서드로 이용할 수가 있어서 개발할 때 편할 것 같다.
WIC
WIC는 COM[# Component Object Model]으로서 사용하려면 WIC를 사용하고 있는 스레드에서 COM 객체의 요소에 접근할 수 있도록 설정해주어야 한다.
CoInitialize
그래서 있는게 이 CoInitialize 함수이다. msdn에는 이 함수보다 CoInitializeEx 함수를 이용한 것을 권장하고 있다. 간단히 설명하면 이 함수를 통해서 COM 객체 안의 명령을 COM을 이용하고자 하는 위치에서 접근할 수 있도록 해주는 기능을 담당한다고.
함수 원형
아래는 함수 원형이다.
HRESULT CoInitializeEx(
LPVOID pvReserved,
DWORD dwCoInit
);
LPVOID pvReserved
예약된 공간이다. 반드시 NULL을 넣어주라고 한다.
dwCoInit
스레드 옵션에 따른 초기화이다. 단일 스레드를 사용한다면 COINIT_APARTMENTTHREADED를, 멀티 스레드를 이용한다면 COINIT_MULTITHREADED를 값으로 넣어준다. 그 외에 다음의 값이 있다.
- COINIT_DISABLE_OLE1DDE[# OLE1 지원을 위해서 DDE라는 것을 비활성화하는 옵션]
- COINIT_SPEED_OVER_MEMORY[# 성능 향상을 위해 메모리 사용량을 늘리는 옵션]
이 두 항목은 위에서 소개한 옵션과 비트 OR 연산자로 묶어서 전달할 수 있다.
반환값
- S_OK 정상적으로 초기화
- S_FALSE 이미 초기화 된 상태
- RPC_E_CHANGED_MODE 이전 모드[# 단일 스레드 모드 혹은 멀티 스레드 모드]에서 모드 전환이 일어남
CoUninitialize
<CoInitialize> 함수를 이용해 COM 요소에 접근하도록 허용한 후에 프로그램을 종료하거나 사용이 끝났을 때는 CoUnitialize 함수를 호출해 이 접근을 해제해주어야 한다.
CoInitialize(nullptr, COINIT_APARTMENTTHREADED);
.
.
.
CoUninitialize();
시작과 끝에 항상 쌍으로 작성해주어야 한다. 시작 위치와 끝 위치가 다르다면 시작 위치에 <CoInitialize>를, 끝 위치에 <CoUninitialize> 함수를 위치시킨다.
# index
'DEV > Direct2D' 카테고리의 다른 글
Direct2D - WIC IBitmapSource (0) | 2021.04.28 |
---|---|
Direct2D - WIC를 이용해 이미지 그리기 (1) | 2021.04.24 |
DirectWrite - IDWriteFactory (0) | 2021.04.21 |
DirectWrite - DirectWrite 되짚기 (0) | 2021.04.14 |
DirectWrite - 텍스트 출력하기 2 (0) | 2021.04.13 |