HWND MCIWndCreate( HWND hwndParent , HINSTANCE hInstance , DWORD dwStyle , LPSTR szFile );hwndParent には、MCI ウィンドウの親ウィンドウのハンドルを
| 定数 | 解説 |
|---|---|
| MCIWNDF_NOAUTOSIZEMOVIE | MCIWnd ウィンドウのサイズが変化しても ディスティネーション矩形の寸法を変更しない |
| MCIWNDF_NOAUTOSIZEWINDOW | イメージのサイズが変化しても MCI のウィンドウサイズは変更しない |
| MCIWNDF_NOERRORDLG | MCIエラーのユーザーへの表示を禁止する |
| MCIWNDF_NOMENU | ツールバーの「メニュー」ボタンを隠す |
| MCIWNDF_NOOPEN | MCIWnd メニューの「開く」及び「閉じる」コマンドを隠す |
| MCIWNDF_NOPLAYBAR | ツールバーを隠す |
| MCIWNDF_NOTIFYALL | 全ての MCIWNDF ウィンドウ通知スタイルを使用する |
| MCIWNDF_NOTIFYERROR | MCI エラーの発生を親ウィンドウに通知する |
| MCIWNDF_NOTIFYMEDIA | 新規デバイスの仕様とデータファイルのオープン、クローズを MCIWNDM_NOTIFYMEDIA メッセージで親ウィンドウに通知する |
| MCIWNDF_NOTIFYMODE | デバイス動作モードの変更を MCIWNDM_NOTIFYMODE メッセージで親ウィンドウに通知する |
| MCIWNDF_NOTIFYPOS | コンテンツ内の再生位置、記録位置の変更を MCIWNDM_NOTIFYPOS メッセージで親ウィンドウに通知する |
| MCIWNDF_NOTIFYSIZE | MCI ウィンドウのサイズの変更を親ウィンドウに通知する |
| MCIWNDF_RECORD | MCI デバイスに記録機能がある場合、ツールバーに「記録」ボタンを追加し メニューに新しいファイルコマンドを追加する |
| MCIWNDF_SHOWALL | 全ての MCIWINDF_SHOW スタイルを使う |
| MCIWNDF_SHOWMODE | MCI デバイスの現在のモードを、ウィンドウのタイトルバーに表示する |
| MCIWNDF_SHOWNAME | 開いている MCI デバイス、またはデータファイルの名前を MCI ウィンドウのタイトルバーに表示する |
| MCIWNDF_SHOWPOS | MCI デバイスのコンテンツ内の現在位置を ウィンドウのタイトルバーに表示する |
#include <windows.h>
#include <vfw.h>
#define TITLE TEXT("Kitty on your lap")
PSTR strAvi;
LRESULT CALLBACK WndProc(HWND hWnd , UINT msg , WPARAM wp , LPARAM lp) {
static HWND hMCI;
switch (msg) {
case WM_DESTROY:
MCIWndDestroy(hMCI);
PostQuitMessage(0);
return 0;
case WM_CREATE:
hMCI = MCIWndCreate(hWnd , ((LPCREATESTRUCT)lp)->hInstance ,
WS_CHILD | WS_VISIBLE | WS_BORDER , strAvi);
return 0;
case WM_SIZE:
MoveWindow(hMCI , 0 , 0 , LOWORD(lp) , HIWORD(lp) , FALSE);
return 0;
}
return DefWindowProc(hWnd , msg , wp , lp);
}
int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
PSTR lpCmdLine , int nCmdShow ) {
HWND hWnd;
MSG msg;
WNDCLASS winc;
strAvi = lpCmdLine;
winc.style = CS_HREDRAW | CS_VREDRAW;
winc.lpfnWndProc = WndProc;
winc.cbClsExtra = winc.cbWndExtra = 0;
winc.hInstance = hInstance;
winc.hIcon = LoadIcon(NULL , IDI_APPLICATION);
winc.hCursor = LoadCursor(NULL , IDC_ARROW);
winc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
winc.lpszMenuName = NULL;
winc.lpszClassName = TEXT("KITTY");
if (!RegisterClass(&winc)) return -1;
hWnd = CreateWindow(
TEXT("KITTY") , TITLE ,
WS_OVERLAPPEDWINDOW | WS_VISIBLE ,
CW_USEDEFAULT , CW_USEDEFAULT ,
CW_USEDEFAULT , CW_USEDEFAULT ,
NULL , NULL , hInstance , NULL
);
if (hWnd == NULL) return -1;
while(GetMessage(&msg , NULL , 0 , 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
![]() | PSゲーム「ひざの上の同居人〜Kitty on your lap〜」より ©KANEKO, アストロビジョン, CULTURE PUBLISHERS あぁ…趣味が見え隠れ……。っえ!?もうバレてる? |
/*resource.h*/ #define IDM_OPEN 100
/*リソーススクリプト*/
#include "resource.h"
KITTY MENU {
POPUP "File(&F)" {
MENUITEM "Open(&O)" , IDM_OPEN
}
}
#include <windows.h>
#include <vfw.h>
#include "resource.h"
#define TITLE TEXT("Kitty on your lap")
LRESULT CALLBACK WndProc(HWND hWnd , UINT msg , WPARAM wp , LPARAM lp) {
static HWND hMCI;
static OPENFILENAME ofn;
static TCHAR strFile[MAX_PATH];
switch (msg) {
case WM_DESTROY:
MCIWndDestroy(hMCI);
PostQuitMessage(0);
return 0;
case WM_CREATE:
ofn.lStructSize = sizeof (OPENFILENAME);
ofn.hwndOwner = hWnd;
ofn.lpstrFilter = TEXT("Mdia File \0*.avi;*.mpg;*.wav\0");
ofn.nMaxCustFilter = 256;
ofn.nFilterIndex = 0;
ofn.lpstrFile = strFile;
ofn.nMaxFile = MAX_PATH;
ofn.Flags = OFN_FILEMUSTEXIST;
hMCI = MCIWndCreate(hWnd , ((LPCREATESTRUCT)lp)->hInstance ,
WS_CHILD | WS_VISIBLE | MCIWNDF_NOPLAYBAR , NULL);
return 0;
case WM_COMMAND:
switch (LOWORD(wp)) {
case IDM_OPEN:
if (GetOpenFileName(&ofn)) {
MCIWndClose(hMCI);
MCIWndOpen(hMCI , strFile , 0);
MCIWndPlay(hMCI);
}
}
return 0;
}
return DefWindowProc(hWnd , msg , wp , lp);
}
int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
PSTR lpCmdLine , int nCmdShow ) {
HWND hWnd;
MSG msg;
WNDCLASS winc;
winc.style = CS_HREDRAW | CS_VREDRAW;
winc.lpfnWndProc = WndProc;
winc.cbClsExtra = winc.cbWndExtra = 0;
winc.hInstance = hInstance;
winc.hIcon = LoadIcon(NULL , IDI_APPLICATION);
winc.hCursor = LoadCursor(NULL , IDC_ARROW);
winc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
winc.lpszMenuName = TEXT("KITTY");
winc.lpszClassName = TEXT("KITTY");
if (!RegisterClass(&winc)) return -1;
hWnd = CreateWindow(
TEXT("KITTY") , TITLE ,
WS_OVERLAPPEDWINDOW | WS_VISIBLE ,
CW_USEDEFAULT , CW_USEDEFAULT ,
CW_USEDEFAULT , CW_USEDEFAULT ,
NULL , NULL , hInstance , NULL
);
if (hWnd == NULL) return -1;
while(GetMessage(&msg , NULL , 0 , 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
![]() | PSゲーム「ひざの上の同居人〜Kitty on your lap〜」より ©KANEKO, アストロビジョン, CULTURE PUBLISHERS |
HWND MCIWndCreate( HWND hwndParent , HINSTANCE hInstance , DWORD dwStyle , LPSTR szFile );MCIWnd ウィンドウクラスのウィンドウを作成します
| 定数 | 解説 |
|---|---|
| MCIWNDF_NOAUTOSIZEMOVIE | MCIWnd ウィンドウのサイズが変化しても ディスティネーション矩形の寸法を変更しない |
| MCIWNDF_NOAUTOSIZEWINDOW | イメージのサイズが変化しても MCI のウィンドウサイズは変更しない |
| MCIWNDF_NOERRORDLG | MCIエラーのユーザーへの表示を禁止する |
| MCIWNDF_NOMENU | ツールバーの「メニュー」ボタンを隠す |
| MCIWNDF_NOOPEN | MCIWnd メニューの「開く」及び「閉じる」コマンドを隠す |
| MCIWNDF_NOPLAYBAR | ツールバーを隠す |
| MCIWNDF_NOTIFYALL | 全ての MCIWNDF ウィンドウ通知スタイルを使用する |
| MCIWNDF_NOTIFYERROR | MCI エラーの発生を親ウィンドウに通知する |
| MCIWNDF_NOTIFYMEDIA | 新規デバイスの仕様とデータファイルのオープン、クローズを MCIWNDM_NOTIFYMEDIA メッセージで親ウィンドウに通知する |
| MCIWNDF_NOTIFYMODE | デバイス動作モードの変更を MCIWNDM_NOTIFYMODE メッセージで親ウィンドウに通知する |
| MCIWNDF_NOTIFYPOS | コンテンツ内の再生位置、記録位置の変更を MCIWNDM_NOTIFYPOS メッセージで親ウィンドウに通知する |
| MCIWNDF_NOTIFYSIZE | MCI ウィンドウのサイズの変更を親ウィンドウに通知する |
| MCIWNDF_RECORD | MCI デバイスに記録機能がある場合、ツールバーに「記録」ボタンを追加し メニューに新しいファイルコマンドを追加する |
| MCIWNDF_SHOWALL | 全ての MCIWINDF_SHOW スタイルを使う |
| MCIWNDF_SHOWMODE | MCI デバイスの現在のモードを、ウィンドウのタイトルバーに表示する |
| MCIWNDF_SHOWNAME | 開いている MCI デバイス、またはデータファイルの名前を MCI ウィンドウのタイトルバーに表示する |
| MCIWNDF_SHOWPOS | MCI デバイスのコンテンツ内の現在位置を ウィンドウのタイトルバーに表示する |
| 定数 | 解説 |
|---|---|
| MCIWNDOPEN_NEW | szFile で指定した名前で新しいファイルを作成します |