mirror of
https://code.videolan.org/videolan/vlc
synced 2024-10-11 06:21:30 +02:00
1fdc92cbe0
* ./modules/access/file.c: the file access plugin gets the real file size under WinCE. * ./modules/audio_filter/converter/u8tofixed32.c: added this conversion filter to play some WAV files without an FPU. * ./bootstrap: bootstrap --update-vc doesn't rely on the Makefile's presence.
259 lines
8.2 KiB
C
259 lines
8.2 KiB
C
/*****************************************************************************
|
|
* vlc.c: the vlc player, WinCE version
|
|
*****************************************************************************
|
|
* Copyright (C) 2002 VideoLAN
|
|
* $Id: vlc.c,v 1.5 2002/11/21 13:53:31 sam Exp $
|
|
*
|
|
* Authors: Samuel Hocevar <sam@zoy.org>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
|
|
*****************************************************************************/
|
|
|
|
#include "config.h"
|
|
|
|
#define WIN32_LEAN_AND_MEAN
|
|
#include <windows.h>
|
|
#include <commctrl.h>
|
|
|
|
#include "../share/resource.h"
|
|
|
|
#include <vlc/vlc.h>
|
|
|
|
/*****************************************************************************
|
|
* Local prototypes.
|
|
*****************************************************************************/
|
|
static LRESULT CALLBACK About ( HWND hDlg, UINT message,
|
|
WPARAM wParam, LPARAM lParam );
|
|
static long FAR PASCAL WndProc ( HWND hWnd, UINT message,
|
|
WPARAM wParam, LPARAM lParam );
|
|
|
|
/*****************************************************************************
|
|
* Global variables.
|
|
*****************************************************************************/
|
|
HINSTANCE hInst;
|
|
HWND hwndCB;
|
|
|
|
/*****************************************************************************
|
|
* main: parse command line, start interface and spawn threads
|
|
*****************************************************************************/
|
|
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
|
|
LPTSTR lpCmdLine, int nCmdShow )
|
|
{
|
|
int i_ret;
|
|
int i_argc = 4;
|
|
char * ppsz_argv[] = { lpCmdLine, "-vv", "--intf", "dummy", NULL, NULL };
|
|
HWND window;
|
|
MSG message;
|
|
|
|
HACCEL hAccelTable;
|
|
WNDCLASS wc;
|
|
|
|
char psz_title[100];
|
|
wchar_t pwz_title[100];
|
|
|
|
i_argc = 5;
|
|
ppsz_argv[4] = "washington.mpeg";
|
|
ppsz_argv[4] = "shovel.mpeg";
|
|
ppsz_argv[4] = "11h50.wav";
|
|
ppsz_argv[4] = "apple_promouse.mpeg";
|
|
|
|
/* Store our instance for future reference */
|
|
hInst = hInstance;
|
|
|
|
/* Register window class */
|
|
memset( &wc, 0, sizeof(wc) );
|
|
wc.style = CS_HREDRAW | CS_VREDRAW;
|
|
wc.lpfnWndProc = (WNDPROC) WndProc;
|
|
wc.cbClsExtra = 0;
|
|
wc.cbWndExtra = 0;
|
|
wc.hInstance = hInst;
|
|
wc.hIcon = 0;
|
|
wc.hCursor = 0;
|
|
wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
|
|
wc.lpszMenuName = 0;
|
|
wc.lpszClassName = L"VLC";
|
|
|
|
RegisterClass(&wc);
|
|
|
|
/* Print the version information */
|
|
sprintf( psz_title, "VideoLAN Client %s", VLC_Version() );
|
|
MultiByteToWideChar( CP_ACP, 0, psz_title, -1, pwz_title, 100 );
|
|
|
|
/* Create our nice window */
|
|
window = CreateWindow( L"VLC", pwz_title,
|
|
WS_VISIBLE /*| WS_SIZEBOX | WS_CAPTION*/,
|
|
CW_USEDEFAULT, CW_USEDEFAULT,
|
|
//CW_USEDEFAULT, CW_USEDEFAULT,
|
|
200,200,
|
|
NULL, NULL, hInst, NULL );
|
|
|
|
ShowWindow( window, nCmdShow );
|
|
UpdateWindow( window );
|
|
|
|
hAccelTable = LoadAccelerators( hInst, (LPCTSTR)IDC_NIOUP );
|
|
|
|
/* Create a libvlc structure */
|
|
i_ret = VLC_Create();
|
|
if( i_ret < 0 )
|
|
{
|
|
DestroyWindow( window );
|
|
return i_ret;
|
|
}
|
|
|
|
/* Initialize libvlc */
|
|
i_ret = VLC_Init( 0, i_argc, ppsz_argv );
|
|
if( i_ret < 0 )
|
|
{
|
|
VLC_Destroy( 0 );
|
|
DestroyWindow( window );
|
|
return i_ret;
|
|
}
|
|
|
|
/* Run libvlc, in non-blocking mode */
|
|
i_ret = VLC_Play( 0 );
|
|
|
|
/* Add a non-blocking interface and keep the return value */
|
|
i_ret = VLC_AddIntf( 0, NULL, VLC_FALSE );
|
|
|
|
while( GetMessage( &message, NULL, 0, 0 ) )
|
|
{
|
|
if( !TranslateAccelerator(message.hwnd, hAccelTable, &message) )
|
|
{
|
|
TranslateMessage( &message );
|
|
DispatchMessage( &message );
|
|
}
|
|
}
|
|
|
|
/* Kill the threads */
|
|
VLC_Die( 0 );
|
|
|
|
/* Finish the threads */
|
|
VLC_Stop( 0 );
|
|
|
|
/* Destroy the libvlc structure */
|
|
VLC_Destroy( 0 );
|
|
|
|
DestroyWindow( window );
|
|
|
|
return i_ret;
|
|
}
|
|
|
|
/*****************************************************************************
|
|
* Message handler for the About box.
|
|
*****************************************************************************/
|
|
static LRESULT CALLBACK About ( HWND hDlg, UINT message,
|
|
WPARAM wParam, LPARAM lParam)
|
|
{
|
|
RECT rt, rt1;
|
|
int DlgWidth, DlgHeight; // dialog width and height in pixel units
|
|
int NewPosX, NewPosY;
|
|
|
|
switch( message )
|
|
{
|
|
case WM_INITDIALOG:
|
|
/* trying to center the About dialog */
|
|
if( GetWindowRect( hDlg, &rt1 ) )
|
|
{
|
|
GetClientRect( GetParent(hDlg), &rt );
|
|
DlgWidth = rt1.right - rt1.left;
|
|
DlgHeight = rt1.bottom - rt1.top ;
|
|
NewPosX = ( rt.right - rt.left - DlgWidth ) / 2;
|
|
NewPosY = ( rt.bottom - rt.top - DlgHeight ) / 2;
|
|
|
|
/* if the About box is larger than the physical screen */
|
|
if( NewPosX < 0 ) NewPosX = 0;
|
|
if( NewPosY < 0 ) NewPosY = 0;
|
|
SetWindowPos( hDlg, 0, NewPosX, NewPosY,
|
|
0, 0, SWP_NOZORDER | SWP_NOSIZE );
|
|
}
|
|
return TRUE;
|
|
|
|
case WM_COMMAND:
|
|
if ((LOWORD(wParam) == IDOK) || (LOWORD(wParam) == IDCANCEL))
|
|
{
|
|
EndDialog(hDlg, LOWORD(wParam));
|
|
return TRUE;
|
|
}
|
|
break;
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
/*****************************************************************************
|
|
* Message handler for the main window
|
|
*****************************************************************************/
|
|
static long FAR PASCAL WndProc ( HWND hWnd, UINT message,
|
|
WPARAM wParam, LPARAM lParam )
|
|
{
|
|
HDC hdc;
|
|
int wmId, wmEvent;
|
|
int x, y;
|
|
PAINTSTRUCT ps;
|
|
|
|
switch( message )
|
|
{
|
|
case WM_LBUTTONDOWN:
|
|
x = LOWORD(lParam);
|
|
y = HIWORD(lParam);
|
|
hdc = GetDC(hWnd);
|
|
Rectangle(hdc, x-4, y-4, x+4, y+4);
|
|
ReleaseDC(hWnd, hdc);
|
|
break;
|
|
case WM_COMMAND:
|
|
wmId = LOWORD(wParam);
|
|
wmEvent = HIWORD(wParam);
|
|
// Parse the menu selections:
|
|
switch( wmId )
|
|
{
|
|
case IDM_HELP_ABOUT:
|
|
DialogBox( hInst, (LPCTSTR)IDD_ABOUTBOX,
|
|
hWnd, (DLGPROC)About );
|
|
break;
|
|
case IDM_PLOP:
|
|
/* Do random stuff */
|
|
break;
|
|
case IDM_FILE_EXIT:
|
|
DestroyWindow(hWnd);
|
|
break;
|
|
default:
|
|
return DefWindowProc( hWnd, message, wParam, lParam );
|
|
}
|
|
break;
|
|
case WM_CREATE:
|
|
hwndCB = CommandBar_Create(hInst, hWnd, 1);
|
|
CommandBar_InsertMenubar(hwndCB, hInst, IDM_MENU, 0);
|
|
//CommandBar_AddAdornments(hwndCB, 0, 0);
|
|
break;
|
|
case WM_PAINT:
|
|
{
|
|
RECT rt;
|
|
hdc = BeginPaint(hWnd, &ps);
|
|
GetClientRect(hWnd, &rt);
|
|
DrawText( hdc, L"VLC roulaize!", _tcslen(L"VLC roulaize!"), &rt,
|
|
DT_SINGLELINE | DT_VCENTER | DT_CENTER );
|
|
EndPaint(hWnd, &ps);
|
|
break;
|
|
}
|
|
case WM_DESTROY:
|
|
CommandBar_Destroy(hwndCB);
|
|
PostQuitMessage(0);
|
|
break;
|
|
default:
|
|
return DefWindowProc(hWnd, message, wParam, lParam);
|
|
}
|
|
return 0;
|
|
}
|
|
|