Win32API講座11回
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
今回はATLを使ってウィンドウ上にFlashを埋め込んでみます
ATLとはActive Template Libraryの略で、COMプログラミングを...
マイクロソフトによるテンプレートベースのC++専用ライブラリ...
今回はFlashをすでにCOMで実装されている機能を使ってウィン...
ここで注意ですがFlash Playerの既存の機能を使っているため
IE(インターネットエクスプローラ)上でFlashが見れなければ埋...
&ref(flashwindow.JPG);
計算Flashを埋め込んでみました
----------------------------------------------------
今回の全ソースコードです
#include <tchar.h>
#include <windows.h>
// ウィンドウプロシージャ
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wPa...
{
if(msg == WM_DESTROY) PostQuitMessage(0);
return (DefWindowProc(hWnd, msg, wParam, lParam));
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevIn...
const TCHAR* WC_BASIC = _T("Basic"); // ウィンドウクラ...
/********************************************/
/* ウィンドウクラスの定義と登録 */
/********************************************/
// シンプルウィンドウクラス設定
WNDCLASSEX wcex ={sizeof(WNDCLASSEX), CS_HREDRAW | CS_V...
(HICON)LoadImage(NULL,MAKEINTRESOURCE(IDI_APPLICATION)...
(HCURSOR)LoadImage(NULL,MAKEINTRESOURCE(IDC_ARROW),IMA...
(HBRUSH)GetStockObject(WHITE_BRUSH), NULL, WC_BASIC , ...
// シンプルウィンドウクラス登録
RegisterClassEx(&wcex);
/********************************************/
/* ウィンドウの作成 */
/********************************************/
HWND hWnd = CreateWindowEx(
0, //拡張ウィンドウスタイル
WC_BASIC, //ウィンドウクラス名
_T("タイトル"), //タイトルバーにこの名前が表示され...
WS_OVERLAPPEDWINDOW | WS_VISIBLE, //ウィンドウスタイル
CW_USEDEFAULT, //X座標
CW_USEDEFAULT, //Y座標
640, //幅
480, //高さ
NULL, //親ウィンドウのハンドル、親を作るときはNULL
NULL, //メニューハンドルorリソースID
hInstance, //インスタンスハンドル
NULL);
RECT rect;
GetClientRect(hWnd,&rect);
void* init = GetProcAddress(LoadLibrary(_T("atl")),"Atl...
CreateWindow(_T("AtlAxWin"), _T("C:\\k3.swf"), WS_CHIL...
MSG msg={0};
while (GetMessage(&msg,0,0,0)) DispatchMessage(&msg);
};
肝心のフラッシュ埋め込みですが実質3行です
void* init = GetProcAddress(LoadLibrary(_T("atl")),"Atl...
CreateWindow(_T("AtlAxWin"), _T("C:\\k3.swf"), WS_CHIL...
LoadLibrary関数でATLをロードします
その後、voidポインタにAtlAxWinInit関数ポインタを取得します
void* init = GetProcAddress(LoadLibrary(_T("atl")),"AtlA...
そして、AtlAxInit関数の呼び出しを行っています
AtlAxInit関数はATLを初期化します
これはあとで使うAtlAxWinクラスを登録しています
_asm call init;
ここで、_asmキーワードというものが出てきます
VC++ではインラインアセンブラというものが使えます
(gccやg++などのコンパイラでは使えませんが・・・)
VC++ではC/C++のソースコードは一度アセンブラコードに落とさ...
インラインアセンブラを使うとC/C++ソースコード上でアセンブ...
インラインアセンブラ命令であるcall命令を行うとサブルーチ...
その後、サブルーチン(関数)の処理がされます
関数ポインタの型を考えなくてよいのでトリッキーですがかな...
今回は子ウィンドウとしてFlashの張り付けを行っています
CreateWindow(_T("AtlAxWin"), _T("C:\\k3.swf"), WS_CHILD...
第一引数のウィンドウクラス名にはAtlAxWinを指定します
第二引数にはここで注意してほしいのはURI指定しなければいけ...
ローカル(自分のPC)のファイルならば絶対パス指定となります
たとえば、Cドライブ直下にこのFlashファイル(.swf)を置くな...
C:\\k3.swf
もちろん指定のファイルは指定の場所に存在していなければな...
また、URI指定なのでインターネット上のファイルのアドレスを...
そのファイルを埋め込むこともできます
試しに次のアドレスを指定するとネットワーク上の.swfが埋め...
http://k3tec.net/neko_wiki/index.php?plugin=attach&refer...
このようにCOMは、ローカルやインターネット上限らず、モジュ...
(COMはOLE(ローカル上でのモジュール通信)とActiveX(インタ...
全ソースコードは下から
&ref(main.cpp);
今回使ったFlashは下から
&ref(k3.swf);
|(^ω^)やったお|0|
|何これwww意味不すぎwww|0|
|。(`ω´#)。あぁん?最近、だらしねぇな|0|
終了行:
今回はATLを使ってウィンドウ上にFlashを埋め込んでみます
ATLとはActive Template Libraryの略で、COMプログラミングを...
マイクロソフトによるテンプレートベースのC++専用ライブラリ...
今回はFlashをすでにCOMで実装されている機能を使ってウィン...
ここで注意ですがFlash Playerの既存の機能を使っているため
IE(インターネットエクスプローラ)上でFlashが見れなければ埋...
&ref(flashwindow.JPG);
計算Flashを埋め込んでみました
----------------------------------------------------
今回の全ソースコードです
#include <tchar.h>
#include <windows.h>
// ウィンドウプロシージャ
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wPa...
{
if(msg == WM_DESTROY) PostQuitMessage(0);
return (DefWindowProc(hWnd, msg, wParam, lParam));
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevIn...
const TCHAR* WC_BASIC = _T("Basic"); // ウィンドウクラ...
/********************************************/
/* ウィンドウクラスの定義と登録 */
/********************************************/
// シンプルウィンドウクラス設定
WNDCLASSEX wcex ={sizeof(WNDCLASSEX), CS_HREDRAW | CS_V...
(HICON)LoadImage(NULL,MAKEINTRESOURCE(IDI_APPLICATION)...
(HCURSOR)LoadImage(NULL,MAKEINTRESOURCE(IDC_ARROW),IMA...
(HBRUSH)GetStockObject(WHITE_BRUSH), NULL, WC_BASIC , ...
// シンプルウィンドウクラス登録
RegisterClassEx(&wcex);
/********************************************/
/* ウィンドウの作成 */
/********************************************/
HWND hWnd = CreateWindowEx(
0, //拡張ウィンドウスタイル
WC_BASIC, //ウィンドウクラス名
_T("タイトル"), //タイトルバーにこの名前が表示され...
WS_OVERLAPPEDWINDOW | WS_VISIBLE, //ウィンドウスタイル
CW_USEDEFAULT, //X座標
CW_USEDEFAULT, //Y座標
640, //幅
480, //高さ
NULL, //親ウィンドウのハンドル、親を作るときはNULL
NULL, //メニューハンドルorリソースID
hInstance, //インスタンスハンドル
NULL);
RECT rect;
GetClientRect(hWnd,&rect);
void* init = GetProcAddress(LoadLibrary(_T("atl")),"Atl...
CreateWindow(_T("AtlAxWin"), _T("C:\\k3.swf"), WS_CHIL...
MSG msg={0};
while (GetMessage(&msg,0,0,0)) DispatchMessage(&msg);
};
肝心のフラッシュ埋め込みですが実質3行です
void* init = GetProcAddress(LoadLibrary(_T("atl")),"Atl...
CreateWindow(_T("AtlAxWin"), _T("C:\\k3.swf"), WS_CHIL...
LoadLibrary関数でATLをロードします
その後、voidポインタにAtlAxWinInit関数ポインタを取得します
void* init = GetProcAddress(LoadLibrary(_T("atl")),"AtlA...
そして、AtlAxInit関数の呼び出しを行っています
AtlAxInit関数はATLを初期化します
これはあとで使うAtlAxWinクラスを登録しています
_asm call init;
ここで、_asmキーワードというものが出てきます
VC++ではインラインアセンブラというものが使えます
(gccやg++などのコンパイラでは使えませんが・・・)
VC++ではC/C++のソースコードは一度アセンブラコードに落とさ...
インラインアセンブラを使うとC/C++ソースコード上でアセンブ...
インラインアセンブラ命令であるcall命令を行うとサブルーチ...
その後、サブルーチン(関数)の処理がされます
関数ポインタの型を考えなくてよいのでトリッキーですがかな...
今回は子ウィンドウとしてFlashの張り付けを行っています
CreateWindow(_T("AtlAxWin"), _T("C:\\k3.swf"), WS_CHILD...
第一引数のウィンドウクラス名にはAtlAxWinを指定します
第二引数にはここで注意してほしいのはURI指定しなければいけ...
ローカル(自分のPC)のファイルならば絶対パス指定となります
たとえば、Cドライブ直下にこのFlashファイル(.swf)を置くな...
C:\\k3.swf
もちろん指定のファイルは指定の場所に存在していなければな...
また、URI指定なのでインターネット上のファイルのアドレスを...
そのファイルを埋め込むこともできます
試しに次のアドレスを指定するとネットワーク上の.swfが埋め...
http://k3tec.net/neko_wiki/index.php?plugin=attach&refer...
このようにCOMは、ローカルやインターネット上限らず、モジュ...
(COMはOLE(ローカル上でのモジュール通信)とActiveX(インタ...
全ソースコードは下から
&ref(main.cpp);
今回使ったFlashは下から
&ref(k3.swf);
|(^ω^)やったお|0|
|何これwww意味不すぎwww|0|
|。(`ω´#)。あぁん?最近、だらしねぇな|0|
ページ名: