cat makefile
TARGET=mci_wnd_stop_test
SAMPLE_AVI="C:\Users\smnb\Videos\sample.avi"
RESOURCE=resource
ICON=test.ico
all: $(TARGET).exe
$(TARGET).exe: $(TARGET).o $(RESOURCE).o
gcc -mno-cygwin -mwindows -o $@ $^ -lvfw32
$(TARGET).o: $(TARGET).c $(RESOURCE).h
gcc -mno-cygwin -c $<
$(RESOURCE).o: $(RESOURCE).rc $(RESOURCE).h $(ICON) $(CURSOR)
windres $< $@
clean:
-rm *.o *.exe *~
test: $(TARGET).exe
./$(TARGET).exe $(SAMPLE_AVI)
mmm:
cat makefile
cat resource.h
cat $(RESOURCE).rc
cat $(TARGET).c
sample.avi:
cd "C:\Users\smnb\Videos"
wget http://download.microsoft.com/download/win98se/sample/1/w98/en-us/avisampl.exe
./avisample.exe
cat resource.h
// resource.h
#define IDS_TEST 1
#define IDM_NEW 40001
#define IDM_OPEN 40002
#define IDM_EXIT 40003
#define IDM_CUT 40011
#define IDM_COPY 40012
#define IDM_PASTE 40013
#define IDM_DELETE 40014
// mci buttons
#define IDM_PLAY 200
#define IDM_REVERSE 201
#define IDM_STOP 202
#define IDM_END 203
#define IDM_PAUSE 204
#define IDM_RESUME 205
cat resource.rc
#include "resource.h"
TESTICON ICON DISCARDABLE "test.ico"
STRINGTABLE {
IDS_TEST "Test Test Test\012TEST TEST TEST TEST"
}
TESTMENU MENU {
POPUP "&FILE" {
MENUITEM "&NEW" , IDM_NEW
MENUITEM "&OPEN" , IDM_OPEN
MENUITEM "E&XIT" , IDM_EXIT
}
POPUP "EDIT(&E)" {
MENUITEM "CUT(&T)" , IDM_CUT
MENUITEM "COPY(&C)" , IDM_COPY
MENUITEM "PASTE(&P)" , IDM_PASTE
MENUITEM "DELETE(&L)" , IDM_DELETE
}
POPUP "Play(&P)" {
MENUITEM "Play(&P)" , IDM_PLAY
MENUITEM "Reverse(&B)" , IDM_REVERSE
MENUITEM "Stop(&S)" , IDM_STOP
MENUITEM "To End(&E)" , IDM_END
MENUITEM "Pause(&A)" , IDM_PAUSE
MENUITEM "Resume(&R)" , IDM_RESUME
}
}
cat mci_wnd_stop_test.c
#include <windows.h>
#include <vfw.h>
#include "resource.h"
#define TITLE TEXT("MCIWndStop Test")
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);
}
break;
case IDM_PLAY:
MCIWndPlay(hMCI);
break;
case IDM_REVERSE:
MCIWndPlayReverse(hMCI);
break;
case IDM_STOP:
MCIWndStop(hMCI);
MCIWndHome(hMCI);
break;
case IDM_END:
MCIWndEnd(hMCI);
break;
case IDM_PAUSE:
MCIWndPause(hMCI);
break;
case IDM_RESUME:
MCIWndResume(hMCI);
break;
}
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(hInstance , TEXT("TESTICON"));
winc.hCursor = LoadCursor(NULL , IDC_ARROW);
winc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
winc.lpszMenuName = TEXT("TESTMENU");
winc.lpszClassName = TEXT("TestClass");
if (!RegisterClass(&winc)) return -1;
hWnd = CreateWindow(
TEXT("TestClass") , 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;
}
|