사용법
1. stdafx.h 파일에 다음 두줄을 추가합니다.
#import “c:/windows/system32/macromed/Flash/Flash.ocx”
using ShockwaveFlashObjects::IShockwaveFlash;
( #import 한 후 컴파일 하면 flash.tlh 파일과 flash.tli 파일이 생성됩니다. 이 두 파일에 IShockwaveFlash 등등의 인터페이스 정의가 들어있습니다. )
2. Flashcon 을 사용하고자 하는 곳에 다음과 같이 헤더파일을 인클루드 합니다.
a) MFC
#include “FlashconAxWindow.h”
b) ATL/WTL
#include “FlashconAxWindow_WTL.h”
3. 멤버 함수를 추가합니다.
CFlashconAxWindow m_wndFlash;
4-1. OnInitDialog() 등의 초기화 루틴에서 Flashcon 을 동적으로 생성하거나
a) MFC
IShockwaveFlash * pFlash = NULL;
HRESULT hr = m_wndFlash.CreateAxControl(NULL, rc, &pFlash);
ASSERT(SUCCEEDED(hr));
// pFlash를 사용하여 플래시 제어
pFlash->Release();
pFlash = NULL;
b) ATL/WTL
CComPtr<IShockwaveFlash> spFlash;
HRESULT hr = m_wndFlash.CreateAxControl(NULL, rc, &spFlash);
ATLASSERT(SUCCEEDED(hr));
// spFlash를 사용하여 플래시 제어
4-2. 이미 생성한 윈도를 서브클래싱을 통해서 Flashcon 윈도로 변경합니다.
a) MFC
ASSERT(::IsWindow(hwndTemp));
IShockwaveFlash * pFlash = NULL;
HRESULT hr = m_wndFlash.AttachAxControl(hwndTemp, &pFlash);
ASSERT(SUCCEEDED(hr));
// pFlash를 사용하여 플래시 제어
pFlash->Release();
pFlash = NULL;
b) ATL/WTL
ATLASSERT(::IsWindow(hwndTemp));
CComPtr<IShockwaveFlash> spFlash;
HRESULT hr = m_wndFlash.AttachAxControl(hwndTemp, &spFlash);
ATLASSERT(SUCCEEDED(hr));
// spFlash를 사용하여 플래시 제어
5. 이미 생성된 CFlashconAxWindow 로 부터 IShockwaveFlash 인터페이스 포인터를 구하고 싶은 경우에는
a) MFC
IShockwaveFlash * pFlash = NULL;
HRESULT hr = m_wndFlash.GetControl(&pFlash);
// pFlash를 사용하여 플래시 제어
pFlash->Release();
pFlash = NULL;
b) ATL/WTL
CComPtr<IShockwaveFlash> spFlash;
HRESULT hr = m_wndFlash.GetControl(&spFlash);
ATLASSERT(SUCCEEDED(hr));
// spFlash를 사용하여 플래시 제어
6. 이미 생성된 CFlashconAxWindow 의 (Flash ActiveX 컨트롤을 호스팅하는) 컨테이너의 IUnknown 인터페이스 포인터를 구하고 싶은 경우에는
a) MFC
IUnknown * pUnkContainer = NULL;
HRESULT hr = m_wndFlash.GetHost(&pUnkContainer);
// pUnkContainer를 사용하여 컨테이너 제어
pUnkContainer->Release();
pUnkContainer = NULL;
b) ATL/WTL
CComPtr<IUnknown> spUnkContainer;
HRESULT hr = m_wndFlash.GetHost(&spUnkContainer);
// spUnkContainer를 사용하여 컨테이너 제어
7. Flashcon 의 스크린 좌표를 변경하거나 FlashCon 의 크기를 변경하고 싶은 경우
CFlashconAxWindow 의 윈도 관리 함수(SetWindowPos, MoveWindow 등등)를 사용합니다.
ex) (100, 100) 에 가로 200, 세로 300 크기로 변경 (*** 여기서 좌표는 항상 스크린 좌표입니다. ***)
m_wndFlash.SetWindowPos(NULL, 100, 100, 200, 300, SWP_NOZORDER);