mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-07 17:29:36 +00:00
1
This commit is contained in:
@@ -0,0 +1,584 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
// CWMPEventDispatch.cpp : Implementation of the event dispatcher
|
||||
//
|
||||
|
||||
#include "CWMPEventDispatch.h"
|
||||
#include "CWMPHost.h"
|
||||
|
||||
extern HWND g_hBlackFadingWindow;
|
||||
extern CComPtr<IWMPPlayer> g_spWMPPlayer;
|
||||
extern CWMPHost* g_pFrame;
|
||||
extern double g_timeAtFadeStart;
|
||||
extern bool g_bFadeIn;
|
||||
|
||||
bool g_bFadeWindowTriggered = false;
|
||||
|
||||
|
||||
bool IsFullScreen();
|
||||
bool SetFullScreen( bool bWantToBeFullscreen );
|
||||
bool IsVideoPlaying();
|
||||
void PlayVideo( bool bPlay );
|
||||
bool ShowFadeWindow( bool bShow );
|
||||
void LogPlayerEvent( EventType_t e, float pos );
|
||||
void LogPlayerEvent( EventType_t e );
|
||||
|
||||
|
||||
HRESULT CWMPEventDispatch::Invoke(
|
||||
DISPID dispIdMember,
|
||||
REFIID riid,
|
||||
LCID lcid,
|
||||
WORD wFlags,
|
||||
DISPPARAMS FAR* pDispParams,
|
||||
VARIANT FAR* pVarResult,
|
||||
EXCEPINFO FAR* pExcepInfo,
|
||||
unsigned int FAR* puArgErr )
|
||||
{
|
||||
if (!pDispParams)
|
||||
return E_POINTER;
|
||||
|
||||
if (pDispParams->cNamedArgs != 0)
|
||||
return DISP_E_NONAMEDARGS;
|
||||
|
||||
HRESULT hr = DISP_E_MEMBERNOTFOUND;
|
||||
|
||||
switch (dispIdMember)
|
||||
{
|
||||
case DISPID_WMPCOREEVENT_OPENSTATECHANGE:
|
||||
OpenStateChange(pDispParams->rgvarg[0].lVal /* NewState */ );
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_PLAYSTATECHANGE:
|
||||
PlayStateChange(pDispParams->rgvarg[0].lVal /* NewState */);
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_AUDIOLANGUAGECHANGE:
|
||||
AudioLanguageChange(pDispParams->rgvarg[0].lVal /* LangID */);
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_STATUSCHANGE:
|
||||
StatusChange();
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_SCRIPTCOMMAND:
|
||||
ScriptCommand(pDispParams->rgvarg[1].bstrVal /* scType */, pDispParams->rgvarg[0].bstrVal /* Param */ );
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_NEWSTREAM:
|
||||
NewStream();
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_DISCONNECT:
|
||||
Disconnect(pDispParams->rgvarg[0].lVal /* Result */ );
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_BUFFERING:
|
||||
Buffering(pDispParams->rgvarg[0].boolVal /* Start */);
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_ERROR:
|
||||
Error();
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_WARNING:
|
||||
Warning(pDispParams->rgvarg[1].lVal /* WarningType */, pDispParams->rgvarg[0].lVal /* Param */, pDispParams->rgvarg[2].bstrVal /* Description */);
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_ENDOFSTREAM:
|
||||
EndOfStream(pDispParams->rgvarg[0].lVal /* Result */ );
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_POSITIONCHANGE:
|
||||
PositionChange(pDispParams->rgvarg[1].dblVal /* oldPosition */, pDispParams->rgvarg[0].dblVal /* newPosition */);
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_MARKERHIT:
|
||||
MarkerHit(pDispParams->rgvarg[0].lVal /* MarkerNum */);
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_DURATIONUNITCHANGE:
|
||||
DurationUnitChange(pDispParams->rgvarg[0].lVal /* NewDurationUnit */);
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_CDROMMEDIACHANGE:
|
||||
CdromMediaChange(pDispParams->rgvarg[0].lVal /* CdromNum */);
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_PLAYLISTCHANGE:
|
||||
PlaylistChange(pDispParams->rgvarg[1].pdispVal /* Playlist */, (WMPPlaylistChangeEventType) pDispParams->rgvarg[0].lVal /* change */);
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_CURRENTPLAYLISTCHANGE:
|
||||
CurrentPlaylistChange((WMPPlaylistChangeEventType) pDispParams->rgvarg[0].lVal /* change */);
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_CURRENTPLAYLISTITEMAVAILABLE:
|
||||
CurrentPlaylistItemAvailable(pDispParams->rgvarg[0].bstrVal /* bstrItemName */);
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_MEDIACHANGE:
|
||||
MediaChange(pDispParams->rgvarg[0].pdispVal /* Item */);
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_CURRENTMEDIAITEMAVAILABLE:
|
||||
CurrentMediaItemAvailable(pDispParams->rgvarg[0].bstrVal /* bstrItemName */);
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_CURRENTITEMCHANGE:
|
||||
CurrentItemChange(pDispParams->rgvarg[0].pdispVal /* pdispMedia */);
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_MEDIACOLLECTIONCHANGE:
|
||||
MediaCollectionChange();
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_MEDIACOLLECTIONATTRIBUTESTRINGADDED:
|
||||
MediaCollectionAttributeStringAdded(pDispParams->rgvarg[1].bstrVal /* bstrAttribName */, pDispParams->rgvarg[0].bstrVal /* bstrAttribVal */ );
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_MEDIACOLLECTIONATTRIBUTESTRINGREMOVED:
|
||||
MediaCollectionAttributeStringRemoved(pDispParams->rgvarg[1].bstrVal /* bstrAttribName */, pDispParams->rgvarg[0].bstrVal /* bstrAttribVal */ );
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_MEDIACOLLECTIONATTRIBUTESTRINGCHANGED:
|
||||
MediaCollectionAttributeStringChanged(pDispParams->rgvarg[2].bstrVal /* bstrAttribName */, pDispParams->rgvarg[1].bstrVal /* bstrOldAttribVal */, pDispParams->rgvarg[0].bstrVal /* bstrNewAttribVal */);
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_PLAYLISTCOLLECTIONCHANGE:
|
||||
PlaylistCollectionChange();
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_PLAYLISTCOLLECTIONPLAYLISTADDED:
|
||||
PlaylistCollectionPlaylistAdded(pDispParams->rgvarg[0].bstrVal /* bstrPlaylistName */ );
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_PLAYLISTCOLLECTIONPLAYLISTREMOVED:
|
||||
PlaylistCollectionPlaylistRemoved(pDispParams->rgvarg[0].bstrVal /* bstrPlaylistName */ );
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_PLAYLISTCOLLECTIONPLAYLISTSETASDELETED:
|
||||
PlaylistCollectionPlaylistSetAsDeleted(pDispParams->rgvarg[1].bstrVal /* bstrPlaylistName */, pDispParams->rgvarg[0].boolVal /* varfIsDeleted */);
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_MODECHANGE:
|
||||
ModeChange(pDispParams->rgvarg[1].bstrVal /* ModeName */, pDispParams->rgvarg[0].boolVal /* NewValue */);
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_MEDIAERROR:
|
||||
MediaError(pDispParams->rgvarg[0].pdispVal /* pMediaObject */);
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_OPENPLAYLISTSWITCH:
|
||||
OpenPlaylistSwitch(pDispParams->rgvarg[0].pdispVal /* pItem */);
|
||||
break;
|
||||
|
||||
case DISPID_WMPCOREEVENT_DOMAINCHANGE:
|
||||
DomainChange(pDispParams->rgvarg[0].bstrVal /* strDomain */);
|
||||
break;
|
||||
|
||||
case DISPID_WMPOCXEVENT_SWITCHEDTOPLAYERAPPLICATION:
|
||||
SwitchedToPlayerApplication();
|
||||
break;
|
||||
|
||||
case DISPID_WMPOCXEVENT_SWITCHEDTOCONTROL:
|
||||
SwitchedToControl();
|
||||
break;
|
||||
|
||||
case DISPID_WMPOCXEVENT_PLAYERDOCKEDSTATECHANGE:
|
||||
PlayerDockedStateChange();
|
||||
break;
|
||||
|
||||
case DISPID_WMPOCXEVENT_PLAYERRECONNECT:
|
||||
PlayerReconnect();
|
||||
break;
|
||||
|
||||
case DISPID_WMPOCXEVENT_CLICK:
|
||||
Click(pDispParams->rgvarg[3].iVal /* nButton */, pDispParams->rgvarg[2].iVal /* nShiftState */, pDispParams->rgvarg[1].lVal /* fX */, pDispParams->rgvarg[0].lVal /* fY */);
|
||||
break;
|
||||
|
||||
case DISPID_WMPOCXEVENT_DOUBLECLICK:
|
||||
DoubleClick(pDispParams->rgvarg[3].iVal /* nButton */, pDispParams->rgvarg[2].iVal /* nShiftState */, pDispParams->rgvarg[1].lVal /* fX */, pDispParams->rgvarg[0].lVal /* fY */);
|
||||
break;
|
||||
|
||||
case DISPID_WMPOCXEVENT_KEYDOWN:
|
||||
KeyDown(pDispParams->rgvarg[1].iVal /* nKeyCode */, pDispParams->rgvarg[0].iVal /* nShiftState */);
|
||||
break;
|
||||
|
||||
case DISPID_WMPOCXEVENT_KEYPRESS:
|
||||
KeyPress(pDispParams->rgvarg[0].iVal /* nKeyAscii */);
|
||||
break;
|
||||
|
||||
case DISPID_WMPOCXEVENT_KEYUP:
|
||||
KeyUp(pDispParams->rgvarg[1].iVal /* nKeyCode */, pDispParams->rgvarg[0].iVal /* nShiftState */);
|
||||
break;
|
||||
|
||||
case DISPID_WMPOCXEVENT_MOUSEDOWN:
|
||||
MouseDown(pDispParams->rgvarg[3].iVal /* nButton */, pDispParams->rgvarg[2].iVal /* nShiftState */, pDispParams->rgvarg[1].lVal /* fX */, pDispParams->rgvarg[0].lVal /* fY */);
|
||||
break;
|
||||
|
||||
case DISPID_WMPOCXEVENT_MOUSEMOVE:
|
||||
MouseMove(pDispParams->rgvarg[3].iVal /* nButton */, pDispParams->rgvarg[2].iVal /* nShiftState */, pDispParams->rgvarg[1].lVal /* fX */, pDispParams->rgvarg[0].lVal /* fY */);
|
||||
break;
|
||||
|
||||
case DISPID_WMPOCXEVENT_MOUSEUP:
|
||||
MouseUp(pDispParams->rgvarg[3].iVal /* nButton */, pDispParams->rgvarg[2].iVal /* nShiftState */, pDispParams->rgvarg[1].lVal /* fX */, pDispParams->rgvarg[0].lVal /* fY */);
|
||||
break;
|
||||
}
|
||||
|
||||
return( hr );
|
||||
}
|
||||
|
||||
// Sent when the control changes OpenState
|
||||
void CWMPEventDispatch::OpenStateChange(long NewState)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Sent when the control changes PlayState
|
||||
void CWMPEventDispatch::PlayStateChange(long NewState)
|
||||
{
|
||||
WMPPlayState playstate;
|
||||
if ( g_spWMPPlayer->get_playState( &playstate ) == S_OK )
|
||||
{
|
||||
switch ( playstate )
|
||||
{
|
||||
case wmppsPlaying:
|
||||
{
|
||||
static bool s_first = true;
|
||||
if ( s_first )
|
||||
{
|
||||
s_first = false;
|
||||
|
||||
LogPlayerEvent( ET_MEDIABEGIN );
|
||||
|
||||
SetFullScreen( true );
|
||||
ShowFadeWindow( false );
|
||||
}
|
||||
else
|
||||
{
|
||||
LogPlayerEvent( ET_PLAY );
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case wmppsPaused:
|
||||
LogPlayerEvent( ET_PAUSE );
|
||||
break;
|
||||
|
||||
case wmppsStopped:
|
||||
LogPlayerEvent( ET_STOP );
|
||||
break;
|
||||
|
||||
case wmppsMediaEnded:
|
||||
LogPlayerEvent( ET_MEDIAEND );
|
||||
|
||||
if ( IsFullScreen() && !g_bFadeWindowTriggered )
|
||||
{
|
||||
g_bFadeWindowTriggered = true;
|
||||
ShowFadeWindow( true );
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Sent when the audio language changes
|
||||
void CWMPEventDispatch::AudioLanguageChange(long LangID)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Sent when the status string changes
|
||||
void CWMPEventDispatch::StatusChange()
|
||||
{
|
||||
}
|
||||
|
||||
// Sent when a synchronized command or URL is received
|
||||
void CWMPEventDispatch::ScriptCommand(BSTR scType,BSTR Param)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Sent when a new stream is encountered (obsolete)
|
||||
void CWMPEventDispatch::NewStream()
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Sent when the control is disconnected from the server (obsolete)
|
||||
void CWMPEventDispatch:: Disconnect(long Result )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Sent when the control begins or ends buffering
|
||||
void CWMPEventDispatch:: Buffering(VARIANT_BOOL Start)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Sent when the control has an error condition
|
||||
void CWMPEventDispatch::Error()
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Sent when the control has an warning condition (obsolete)
|
||||
void CWMPEventDispatch::Warning(long WarningType, long Param, BSTR Description)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Sent when the media has reached end of stream
|
||||
void CWMPEventDispatch::EndOfStream(long Result)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Indicates that the current position of the movie has changed
|
||||
void CWMPEventDispatch::PositionChange(double oldPosition,double newPosition)
|
||||
{
|
||||
LogPlayerEvent( ET_SCRUBFROM, ( float )oldPosition );
|
||||
LogPlayerEvent( ET_SCRUBTO, ( float )newPosition );
|
||||
}
|
||||
|
||||
// Sent when a marker is reached
|
||||
void CWMPEventDispatch::MarkerHit(long MarkerNum )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Indicates that the unit used to express duration and position has changed
|
||||
void CWMPEventDispatch::DurationUnitChange(long NewDurationUnit)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Indicates that the CD ROM media has changed
|
||||
void CWMPEventDispatch::CdromMediaChange(long CdromNum)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Sent when a playlist changes
|
||||
void CWMPEventDispatch::PlaylistChange(IDispatch * Playlist,WMPPlaylistChangeEventType change)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Sent when the current playlist changes
|
||||
void CWMPEventDispatch::CurrentPlaylistChange(WMPPlaylistChangeEventType change )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Sent when a current playlist item becomes available
|
||||
void CWMPEventDispatch::CurrentPlaylistItemAvailable(BSTR bstrItemName)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Sent when a media object changes
|
||||
void CWMPEventDispatch::MediaChange(IDispatch * Item)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Sent when a current media item becomes available
|
||||
void CWMPEventDispatch::CurrentMediaItemAvailable(BSTR bstrItemName)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Sent when the item selection on the current playlist changes
|
||||
void CWMPEventDispatch::CurrentItemChange(IDispatch *pdispMedia)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Sent when the media collection needs to be requeried
|
||||
void CWMPEventDispatch::MediaCollectionChange()
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Sent when an attribute string is added in the media collection
|
||||
void CWMPEventDispatch::MediaCollectionAttributeStringAdded(BSTR bstrAttribName, BSTR bstrAttribVal)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Sent when an attribute string is removed from the media collection
|
||||
void CWMPEventDispatch::MediaCollectionAttributeStringRemoved(BSTR bstrAttribName, BSTR bstrAttribVal)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Sent when an attribute string is changed in the media collection
|
||||
void CWMPEventDispatch::MediaCollectionAttributeStringChanged(BSTR bstrAttribName, BSTR bstrOldAttribVal, BSTR bstrNewAttribVal)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Sent when playlist collection needs to be requeried
|
||||
void CWMPEventDispatch::PlaylistCollectionChange()
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Sent when a playlist is added to the playlist collection
|
||||
void CWMPEventDispatch::PlaylistCollectionPlaylistAdded(BSTR bstrPlaylistName)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Sent when a playlist is removed from the playlist collection
|
||||
void CWMPEventDispatch::PlaylistCollectionPlaylistRemoved(BSTR bstrPlaylistName)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Sent when a playlist has been set or reset as deleted
|
||||
void CWMPEventDispatch::PlaylistCollectionPlaylistSetAsDeleted(BSTR bstrPlaylistName, VARIANT_BOOL varfIsDeleted)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Playlist playback mode has changed
|
||||
void CWMPEventDispatch::ModeChange(BSTR ModeName, VARIANT_BOOL NewValue)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Sent when the media object has an error condition
|
||||
void CWMPEventDispatch::MediaError(IDispatch * pMediaObject)
|
||||
{
|
||||
while ( ShowCursor( TRUE ) < 0 )
|
||||
;
|
||||
|
||||
ShowWindow( g_hBlackFadingWindow, SW_HIDE );
|
||||
if ( g_pFrame )
|
||||
{
|
||||
g_pFrame->ShowWindow( SW_HIDE );
|
||||
}
|
||||
|
||||
CComPtr< IWMPMedia > spWMPMedia;
|
||||
if ( pMediaObject )
|
||||
{
|
||||
pMediaObject->QueryInterface( &spWMPMedia );
|
||||
}
|
||||
if ( spWMPMedia )
|
||||
{
|
||||
BSTR bstr;
|
||||
spWMPMedia->get_sourceURL( &bstr );
|
||||
char str[ 1024 ];
|
||||
sprintf( str, "Unable to open media: %s\n", CW2T( bstr ) );
|
||||
MessageBox( NULL, str, "Media Error", MB_OK | MB_ICONERROR );
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox( NULL, "Media Error", "Media Error", MB_OK | MB_ICONERROR );
|
||||
}
|
||||
|
||||
g_pFrame->PostMessage( WM_CLOSE );
|
||||
}
|
||||
|
||||
// Current playlist switch with no open state change
|
||||
void CWMPEventDispatch::OpenPlaylistSwitch(IDispatch *pItem)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Sent when the current DVD domain changes
|
||||
void CWMPEventDispatch::DomainChange(BSTR strDomain)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Sent when display switches to player application
|
||||
void CWMPEventDispatch::SwitchedToPlayerApplication()
|
||||
{
|
||||
}
|
||||
|
||||
// Sent when display switches to control
|
||||
void CWMPEventDispatch::SwitchedToControl()
|
||||
{
|
||||
}
|
||||
|
||||
// Sent when the player docks or undocks
|
||||
void CWMPEventDispatch::PlayerDockedStateChange()
|
||||
{
|
||||
}
|
||||
|
||||
// Sent when the OCX reconnects to the player
|
||||
void CWMPEventDispatch::PlayerReconnect()
|
||||
{
|
||||
}
|
||||
|
||||
// Occurs when a user clicks the mouse
|
||||
void CWMPEventDispatch::Click( short nButton, short nShiftState, long fX, long fY )
|
||||
{
|
||||
if ( IsFullScreen() )
|
||||
{
|
||||
SetFullScreen( false );
|
||||
}
|
||||
}
|
||||
|
||||
// Occurs when a user double-clicks the mouse
|
||||
void CWMPEventDispatch::DoubleClick( short nButton, short nShiftState, long fX, long fY )
|
||||
{
|
||||
// the controls are just drawn into the main window, wheras the video has its own window
|
||||
// this check allows us to only fullscreen on doubleclick within the video area
|
||||
POINT pt = { fX, fY };
|
||||
HWND hWnd = g_pFrame->ChildWindowFromPoint( pt );
|
||||
if ( ChildWindowFromPoint( hWnd, pt ) != hWnd )
|
||||
{
|
||||
SetFullScreen( !IsFullScreen() );
|
||||
}
|
||||
}
|
||||
|
||||
// Occurs when a key is pressed
|
||||
void CWMPEventDispatch::KeyDown( short nKeyCode, short nShiftState )
|
||||
{
|
||||
#if 1
|
||||
if ( !g_pFrame )
|
||||
return;
|
||||
|
||||
BOOL rval;
|
||||
if ( nShiftState & 4 ) // 4 is the alt keymask
|
||||
{
|
||||
g_pFrame->OnSysKeyDown( WM_KEYDOWN, nKeyCode, 0, rval );
|
||||
}
|
||||
else
|
||||
{
|
||||
g_pFrame->OnKeyDown( WM_KEYDOWN, nKeyCode, 0, rval );
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// Occurs when a key is pressed and released
|
||||
void CWMPEventDispatch::KeyPress( short nKeyAscii )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Occurs when a key is released
|
||||
void CWMPEventDispatch::KeyUp( short nKeyCode, short nShiftState )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Occurs when a mouse button is pressed
|
||||
void CWMPEventDispatch::MouseDown( short nButton, short nShiftState, long fX, long fY )
|
||||
{
|
||||
}
|
||||
|
||||
// Occurs when a mouse pointer is moved
|
||||
void CWMPEventDispatch::MouseMove( short nButton, short nShiftState, long fX, long fY )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Occurs when a mouse button is released
|
||||
void CWMPEventDispatch::MouseUp( short nButton, short nShiftState, long fX, long fY )
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,102 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
// CWMPEventDispatch.h : Declaration of the event dispatcher
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
// if these files aren't found, set your path to include the wmp sdk include directory
|
||||
// download the sdk from http://www.microsoft.com/windows/windowsmedia/mp10/sdk.aspx
|
||||
#include "wmpids.h"
|
||||
#include "wmp.h"
|
||||
|
||||
class CWMPEventDispatch:
|
||||
public CComObjectRootEx<CComSingleThreadModel>,
|
||||
public IWMPEvents,
|
||||
public _WMPOCXEvents
|
||||
{
|
||||
public:
|
||||
|
||||
BEGIN_COM_MAP(CWMPEventDispatch)
|
||||
COM_INTERFACE_ENTRY(_WMPOCXEvents)
|
||||
COM_INTERFACE_ENTRY(IWMPEvents)
|
||||
COM_INTERFACE_ENTRY(IDispatch)
|
||||
END_COM_MAP()
|
||||
|
||||
// IDispatch methods
|
||||
STDMETHOD(GetIDsOfNames)( REFIID riid,
|
||||
OLECHAR FAR *FAR *rgszNames,
|
||||
unsigned int cNames,
|
||||
LCID lcid,
|
||||
DISPID FAR *rgDispId )
|
||||
{ return( E_NOTIMPL ); }
|
||||
|
||||
STDMETHOD(GetTypeInfo)( unsigned int iTInfo,
|
||||
LCID lcid,
|
||||
ITypeInfo FAR *FAR *ppTInfo )
|
||||
{ return( E_NOTIMPL ); }
|
||||
|
||||
STDMETHOD(GetTypeInfoCount)( unsigned int FAR *pctinfo )
|
||||
{
|
||||
return( E_NOTIMPL );
|
||||
}
|
||||
|
||||
STDMETHOD(Invoke)( DISPID dispIdMember,
|
||||
REFIID riid,
|
||||
LCID lcid,
|
||||
WORD wFlags,
|
||||
DISPPARAMS FAR* pDispParams,
|
||||
VARIANT FAR* pVarResult,
|
||||
EXCEPINFO FAR* pExcepInfo,
|
||||
unsigned int FAR* puArgErr );
|
||||
|
||||
// IWMPEvents methods
|
||||
void STDMETHODCALLTYPE OpenStateChange( long NewState );
|
||||
void STDMETHODCALLTYPE PlayStateChange( long NewState );
|
||||
void STDMETHODCALLTYPE AudioLanguageChange( long LangID );
|
||||
void STDMETHODCALLTYPE StatusChange();
|
||||
void STDMETHODCALLTYPE ScriptCommand( BSTR scType, BSTR Param );
|
||||
void STDMETHODCALLTYPE NewStream();
|
||||
void STDMETHODCALLTYPE Disconnect( long Result );
|
||||
void STDMETHODCALLTYPE Buffering( VARIANT_BOOL Start );
|
||||
void STDMETHODCALLTYPE Error();
|
||||
void STDMETHODCALLTYPE Warning( long WarningType, long Param, BSTR Description );
|
||||
void STDMETHODCALLTYPE EndOfStream( long Result );
|
||||
void STDMETHODCALLTYPE PositionChange( double oldPosition, double newPosition);
|
||||
void STDMETHODCALLTYPE MarkerHit( long MarkerNum );
|
||||
void STDMETHODCALLTYPE DurationUnitChange( long NewDurationUnit );
|
||||
void STDMETHODCALLTYPE CdromMediaChange( long CdromNum );
|
||||
void STDMETHODCALLTYPE PlaylistChange( IDispatch * Playlist, WMPPlaylistChangeEventType change );
|
||||
void STDMETHODCALLTYPE CurrentPlaylistChange( WMPPlaylistChangeEventType change );
|
||||
void STDMETHODCALLTYPE CurrentPlaylistItemAvailable( BSTR bstrItemName );
|
||||
void STDMETHODCALLTYPE MediaChange( IDispatch * Item );
|
||||
void STDMETHODCALLTYPE CurrentMediaItemAvailable( BSTR bstrItemName );
|
||||
void STDMETHODCALLTYPE CurrentItemChange( IDispatch *pdispMedia);
|
||||
void STDMETHODCALLTYPE MediaCollectionChange();
|
||||
void STDMETHODCALLTYPE MediaCollectionAttributeStringAdded( BSTR bstrAttribName, BSTR bstrAttribVal );
|
||||
void STDMETHODCALLTYPE MediaCollectionAttributeStringRemoved( BSTR bstrAttribName, BSTR bstrAttribVal );
|
||||
void STDMETHODCALLTYPE MediaCollectionAttributeStringChanged( BSTR bstrAttribName, BSTR bstrOldAttribVal, BSTR bstrNewAttribVal);
|
||||
void STDMETHODCALLTYPE PlaylistCollectionChange();
|
||||
void STDMETHODCALLTYPE PlaylistCollectionPlaylistAdded( BSTR bstrPlaylistName);
|
||||
void STDMETHODCALLTYPE PlaylistCollectionPlaylistRemoved( BSTR bstrPlaylistName);
|
||||
void STDMETHODCALLTYPE PlaylistCollectionPlaylistSetAsDeleted( BSTR bstrPlaylistName, VARIANT_BOOL varfIsDeleted);
|
||||
void STDMETHODCALLTYPE ModeChange( BSTR ModeName, VARIANT_BOOL NewValue);
|
||||
void STDMETHODCALLTYPE MediaError( IDispatch * pMediaObject);
|
||||
void STDMETHODCALLTYPE OpenPlaylistSwitch( IDispatch *pItem );
|
||||
void STDMETHODCALLTYPE DomainChange( BSTR strDomain);
|
||||
void STDMETHODCALLTYPE SwitchedToPlayerApplication();
|
||||
void STDMETHODCALLTYPE SwitchedToControl();
|
||||
void STDMETHODCALLTYPE PlayerDockedStateChange();
|
||||
void STDMETHODCALLTYPE PlayerReconnect();
|
||||
void STDMETHODCALLTYPE Click( short nButton, short nShiftState, long fX, long fY );
|
||||
void STDMETHODCALLTYPE DoubleClick( short nButton, short nShiftState, long fX, long fY );
|
||||
void STDMETHODCALLTYPE KeyDown( short nKeyCode, short nShiftState );
|
||||
void STDMETHODCALLTYPE KeyPress( short nKeyAscii );
|
||||
void STDMETHODCALLTYPE KeyUp( short nKeyCode, short nShiftState );
|
||||
void STDMETHODCALLTYPE MouseDown( short nButton, short nShiftState, long fX, long fY );
|
||||
void STDMETHODCALLTYPE MouseMove( short nButton, short nShiftState, long fX, long fY );
|
||||
void STDMETHODCALLTYPE MouseUp( short nButton, short nShiftState, long fX, long fY );
|
||||
};
|
||||
|
||||
typedef CComObject<CWMPEventDispatch> CComWMPEventDispatch;
|
||||
@@ -0,0 +1,603 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
// CWMPHost.cpp : Implementation of the CWMPHost
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "CWMPHost.h"
|
||||
#include <cstdio>
|
||||
#include <assert.h>
|
||||
#include <string>
|
||||
|
||||
|
||||
extern HWND g_hBlackFadingWindow;
|
||||
extern CWMPHost*g_pFrame;
|
||||
extern LPTSTR g_lpCommandLine;
|
||||
extern bool g_bFrameCreated;
|
||||
extern double g_timeAtFadeStart;
|
||||
extern bool g_bFadeIn;
|
||||
extern bool g_bFadeWindowTriggered;
|
||||
extern std::string g_URL;
|
||||
|
||||
bool ShowFadeWindow( bool bShow );
|
||||
void LogPlayerEvent( EventType_t e, float pos );
|
||||
|
||||
|
||||
CComPtr<IWMPPlayer> g_spWMPPlayer;
|
||||
bool g_bWantToBeFullscreen = false;
|
||||
bool g_bPlayOnRestore = false;
|
||||
int g_desiredVideoScaleMode = ID_STRETCH_TO_FIT;
|
||||
|
||||
|
||||
#define MAX_STRING 1024
|
||||
|
||||
bool FAILMSG(HRESULT hr)
|
||||
{
|
||||
if (FAILED(hr))
|
||||
{
|
||||
TCHAR szError[MAX_STRING];
|
||||
|
||||
::wsprintf(szError, _T("Error code = %08X"), hr);
|
||||
::MessageBox(NULL, szError, _T("Error"), MB_OK | MB_ICONERROR);
|
||||
}
|
||||
|
||||
return FAILED(hr);
|
||||
}
|
||||
|
||||
void LogPlayerEvent( EventType_t e )
|
||||
{
|
||||
double dpos = 0.0f;
|
||||
|
||||
CComPtr<IWMPControls> spWMPControls;
|
||||
if ( g_spWMPPlayer )
|
||||
{
|
||||
g_spWMPPlayer->get_controls(&spWMPControls);
|
||||
if ( spWMPControls )
|
||||
{
|
||||
spWMPControls->get_currentPosition( &dpos );
|
||||
}
|
||||
}
|
||||
|
||||
LogPlayerEvent( e, ( float )dpos );
|
||||
}
|
||||
|
||||
bool IsStretchedToFit()
|
||||
{
|
||||
if ( !g_spWMPPlayer )
|
||||
return false;
|
||||
|
||||
CComPtr< IWMPPlayer2 > spWMPPlayer2;
|
||||
g_spWMPPlayer.QueryInterface( &spWMPPlayer2 );
|
||||
if ( !spWMPPlayer2 )
|
||||
return false;
|
||||
|
||||
VARIANT_BOOL vbStretchToFit = VARIANT_FALSE;
|
||||
spWMPPlayer2->get_stretchToFit( &vbStretchToFit );
|
||||
return vbStretchToFit == VARIANT_TRUE;
|
||||
}
|
||||
|
||||
bool SetVideoScaleMode( int videoScaleMode )
|
||||
{
|
||||
g_desiredVideoScaleMode = videoScaleMode;
|
||||
|
||||
if ( !g_spWMPPlayer )
|
||||
return false;
|
||||
|
||||
long width = 0, height = 0;
|
||||
CComPtr<IWMPMedia> spWMPMedia;
|
||||
g_spWMPPlayer->get_currentMedia( &spWMPMedia );
|
||||
if ( spWMPMedia )
|
||||
{
|
||||
spWMPMedia->get_imageSourceWidth ( &width );
|
||||
spWMPMedia->get_imageSourceHeight( &height );
|
||||
}
|
||||
|
||||
VARIANT_BOOL vbStretchToFit = VARIANT_FALSE;
|
||||
switch ( videoScaleMode )
|
||||
{
|
||||
case ID_HALF_SIZE:
|
||||
// TODO - set video player size
|
||||
break;
|
||||
case ID_FULL_SIZE:
|
||||
// TODO - set video player size
|
||||
break;
|
||||
case ID_DOUBLE_SIZE:
|
||||
// TODO - set video player size
|
||||
break;
|
||||
|
||||
case ID_STRETCH_TO_FIT:
|
||||
vbStretchToFit = VARIANT_TRUE;
|
||||
break;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
CComPtr< IWMPPlayer2 > spWMPPlayer2;
|
||||
g_spWMPPlayer.QueryInterface( &spWMPPlayer2 );
|
||||
if ( !spWMPPlayer2 )
|
||||
return false;
|
||||
|
||||
bool bStretchToFit = vbStretchToFit == VARIANT_TRUE;
|
||||
if ( bStretchToFit == IsStretchedToFit() )
|
||||
return true;
|
||||
|
||||
spWMPPlayer2->put_stretchToFit( vbStretchToFit );
|
||||
|
||||
return bStretchToFit == IsStretchedToFit();
|
||||
}
|
||||
|
||||
bool IsFullScreen()
|
||||
{
|
||||
if ( !g_spWMPPlayer )
|
||||
return false;
|
||||
|
||||
VARIANT_BOOL vbFullscreen = VARIANT_TRUE;
|
||||
g_spWMPPlayer->get_fullScreen( &vbFullscreen );
|
||||
return vbFullscreen == VARIANT_TRUE;
|
||||
}
|
||||
|
||||
bool SetFullScreen( bool bWantToBeFullscreen )
|
||||
{
|
||||
g_bWantToBeFullscreen = bWantToBeFullscreen;
|
||||
|
||||
if ( !g_spWMPPlayer )
|
||||
return false;
|
||||
|
||||
LogPlayerEvent( bWantToBeFullscreen ? ET_MAXIMIZE : ET_RESTORE );
|
||||
|
||||
bool bIsFullscreen = IsFullScreen();
|
||||
|
||||
CComPtr<IWMPPlayer2> spWMPPlayer2;
|
||||
HRESULT hr = g_spWMPPlayer.QueryInterface(&spWMPPlayer2);
|
||||
if ( hr != S_OK )
|
||||
{
|
||||
assert( spWMPPlayer2 == NULL ); // the MS documentation claims this shouldn't happen, but it does...
|
||||
spWMPPlayer2 = NULL;
|
||||
}
|
||||
|
||||
if ( spWMPPlayer2 )
|
||||
{
|
||||
VARIANT_BOOL vbStretch = VARIANT_TRUE;
|
||||
spWMPPlayer2->get_stretchToFit( &vbStretch );
|
||||
bool bStretch = vbStretch == VARIANT_TRUE;
|
||||
if ( bStretch != g_bWantToBeFullscreen )
|
||||
{
|
||||
bIsFullscreen = !g_bWantToBeFullscreen;
|
||||
}
|
||||
}
|
||||
|
||||
if ( g_bWantToBeFullscreen == bIsFullscreen )
|
||||
return true;
|
||||
|
||||
if ( g_bWantToBeFullscreen )
|
||||
{
|
||||
g_spWMPPlayer->put_uiMode(L"none");
|
||||
|
||||
g_spWMPPlayer->put_fullScreen(VARIANT_TRUE);
|
||||
|
||||
if ( spWMPPlayer2 )
|
||||
{
|
||||
spWMPPlayer2->put_stretchToFit( VARIANT_TRUE );
|
||||
}
|
||||
|
||||
while ( ShowCursor( FALSE ) >= 0 )
|
||||
;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_spWMPPlayer->put_fullScreen(VARIANT_FALSE);
|
||||
|
||||
g_spWMPPlayer->put_uiMode(L"full");
|
||||
|
||||
if ( spWMPPlayer2 )
|
||||
{
|
||||
spWMPPlayer2->put_stretchToFit( g_desiredVideoScaleMode == ID_STRETCH_TO_FIT ? VARIANT_TRUE : VARIANT_FALSE );
|
||||
}
|
||||
|
||||
g_pFrame->ShowWindow( SW_RESTORE );
|
||||
|
||||
while ( ShowCursor( TRUE ) < 0 )
|
||||
;
|
||||
}
|
||||
|
||||
bIsFullscreen = IsFullScreen();
|
||||
|
||||
if ( bIsFullscreen != g_bWantToBeFullscreen )
|
||||
{
|
||||
g_bWantToBeFullscreen = bIsFullscreen;
|
||||
OutputDebugString( "SetFullScreen FAILED!\n" );
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( spWMPPlayer2 )
|
||||
{
|
||||
if ( g_bWantToBeFullscreen )
|
||||
{
|
||||
VARIANT_BOOL vbStretch = VARIANT_TRUE;
|
||||
spWMPPlayer2->get_stretchToFit( &vbStretch );
|
||||
if ( vbStretch != VARIANT_TRUE )
|
||||
{
|
||||
OutputDebugString( "SetFullScreen FAILED to set stretchToFit!\n" );
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool IsVideoPlaying()
|
||||
{
|
||||
WMPPlayState playState;
|
||||
g_spWMPPlayer->get_playState(&playState);
|
||||
return playState == wmppsPlaying;
|
||||
}
|
||||
|
||||
void PlayVideo( bool bPlay )
|
||||
{
|
||||
CComPtr<IWMPControls> spWMPControls;
|
||||
g_spWMPPlayer->get_controls(&spWMPControls);
|
||||
if ( spWMPControls )
|
||||
{
|
||||
if ( bPlay )
|
||||
{
|
||||
spWMPControls->play();
|
||||
}
|
||||
else
|
||||
{
|
||||
spWMPControls->pause();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CWMPHost
|
||||
|
||||
LRESULT CWMPHost::OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
AtlAxWinInit();
|
||||
CComPtr<IAxWinHostWindow> spHost;
|
||||
CComPtr<IConnectionPointContainer> spConnectionContainer;
|
||||
CComWMPEventDispatch *pEventListener = NULL;
|
||||
CComPtr<IWMPEvents> spEventListener;
|
||||
HRESULT hr;
|
||||
RECT rcClient;
|
||||
|
||||
m_dwAdviseCookie = 0;
|
||||
m_hPopupMenu = 0;
|
||||
|
||||
// create window
|
||||
|
||||
GetClientRect(&rcClient);
|
||||
m_wndView.Create(m_hWnd, rcClient, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN, WS_EX_CLIENTEDGE);
|
||||
if (NULL == m_wndView.m_hWnd)
|
||||
goto FAILURE;
|
||||
|
||||
// load OCX in window
|
||||
|
||||
hr = m_wndView.QueryHost(&spHost);
|
||||
if (FAILMSG(hr))
|
||||
goto FAILURE;
|
||||
|
||||
hr = spHost->CreateControl(CComBSTR(_T("{6BF52A52-394A-11d3-B153-00C04F79FAA6}")), m_wndView, 0);
|
||||
if (FAILMSG(hr))
|
||||
goto FAILURE;
|
||||
|
||||
hr = m_wndView.QueryControl(&g_spWMPPlayer);
|
||||
if (FAILMSG(hr))
|
||||
goto FAILURE;
|
||||
|
||||
// start listening to events
|
||||
|
||||
hr = CComWMPEventDispatch::CreateInstance(&pEventListener);
|
||||
spEventListener = pEventListener;
|
||||
if (FAILMSG(hr))
|
||||
goto FAILURE;
|
||||
|
||||
hr = g_spWMPPlayer->QueryInterface(&spConnectionContainer);
|
||||
if (FAILMSG(hr))
|
||||
goto FAILURE;
|
||||
|
||||
// See if OCX supports the IWMPEvents interface
|
||||
hr = spConnectionContainer->FindConnectionPoint(__uuidof(IWMPEvents), &m_spConnectionPoint);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
// If not, try the _WMPOCXEvents interface, which will use IDispatch
|
||||
hr = spConnectionContainer->FindConnectionPoint(__uuidof(_WMPOCXEvents), &m_spConnectionPoint);
|
||||
if (FAILMSG(hr))
|
||||
goto FAILURE;
|
||||
}
|
||||
|
||||
hr = m_spConnectionPoint->Advise(spEventListener, &m_dwAdviseCookie);
|
||||
if (FAILMSG(hr))
|
||||
goto FAILURE;
|
||||
|
||||
IWMPSettings *spWMPSettings;
|
||||
g_spWMPPlayer->get_settings( &spWMPSettings );
|
||||
if ( spWMPSettings )
|
||||
{
|
||||
spWMPSettings->put_volume( 100 );
|
||||
}
|
||||
|
||||
g_spWMPPlayer->put_enableContextMenu( VARIANT_FALSE );
|
||||
|
||||
// set the url of the movie
|
||||
hr = g_spWMPPlayer->put_URL( CT2W( g_URL.c_str() ) );
|
||||
if (FAILED(hr))
|
||||
OutputDebugString( "put_URL failed\n" );
|
||||
|
||||
return 0;
|
||||
|
||||
FAILURE:
|
||||
OutputDebugString( "CWMPHost::OnCreate FAILED!\n" );
|
||||
DestroyWindow();
|
||||
if ( g_hBlackFadingWindow )
|
||||
{
|
||||
::DestroyWindow( g_hBlackFadingWindow );
|
||||
}
|
||||
// ::PostQuitMessage(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CWMPHost::OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
LogPlayerEvent( ET_CLOSE );
|
||||
|
||||
DestroyWindow();
|
||||
if ( g_hBlackFadingWindow )
|
||||
{
|
||||
::DestroyWindow( g_hBlackFadingWindow );
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CWMPHost::OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
// stop listening to events
|
||||
if (m_spConnectionPoint)
|
||||
{
|
||||
if (0 != m_dwAdviseCookie)
|
||||
m_spConnectionPoint->Unadvise(m_dwAdviseCookie);
|
||||
m_spConnectionPoint.Release();
|
||||
}
|
||||
|
||||
// close the OCX
|
||||
if (g_spWMPPlayer)
|
||||
{
|
||||
g_spWMPPlayer->close();
|
||||
g_spWMPPlayer.Release();
|
||||
}
|
||||
|
||||
m_hWnd = NULL;
|
||||
g_bFrameCreated = false;
|
||||
|
||||
bHandled = FALSE;
|
||||
return 1;
|
||||
}
|
||||
|
||||
LRESULT CWMPHost::OnErase(UINT /* uMsg */, WPARAM /* wParam */, LPARAM /* lParam */, BOOL& bHandled)
|
||||
{
|
||||
if ( g_bWantToBeFullscreen && !IsFullScreen() )
|
||||
{
|
||||
g_pFrame->BringWindowToTop();
|
||||
SetFullScreen( false );
|
||||
}
|
||||
|
||||
bHandled = TRUE;
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CWMPHost::OnSize(UINT /* uMsg */, WPARAM wParam, LPARAM lParam, BOOL& /* lResult */)
|
||||
{
|
||||
if ( wParam == SIZE_MAXIMIZED )
|
||||
{
|
||||
SetFullScreen( true );
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( wParam == SIZE_MINIMIZED )
|
||||
{
|
||||
LogPlayerEvent( ET_MINIMIZE );
|
||||
if ( IsVideoPlaying() )
|
||||
{
|
||||
g_bPlayOnRestore = true;
|
||||
PlayVideo( false );
|
||||
}
|
||||
}
|
||||
else if ( wParam == SIZE_RESTORED )
|
||||
{
|
||||
LogPlayerEvent( ET_RESTORE );
|
||||
}
|
||||
|
||||
RECT rcClient;
|
||||
GetClientRect(&rcClient);
|
||||
m_wndView.MoveWindow(rcClient.left, rcClient.top, rcClient.right-rcClient.left, rcClient.bottom-rcClient.top);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CWMPHost::OnContextMenu(UINT /* uMsg */, WPARAM /* wParam */, LPARAM lParam, BOOL& /* lResult */)
|
||||
{
|
||||
if ( !m_hPopupMenu )
|
||||
{
|
||||
m_hPopupMenu = CreatePopupMenu();
|
||||
// AppendMenu( m_hPopupMenu, MF_STRING, ID_HALF_SIZE, "Zoom 50%" );
|
||||
AppendMenu( m_hPopupMenu, MF_STRING, ID_FULL_SIZE, "Zoom 100%" );
|
||||
// AppendMenu( m_hPopupMenu, MF_STRING, ID_DOUBLE_SIZE, "Zoom 200%" );
|
||||
AppendMenu( m_hPopupMenu, MF_STRING, ID_STRETCH_TO_FIT, "Stretch to fit window" );
|
||||
}
|
||||
|
||||
int x = GET_X_LPARAM( lParam );
|
||||
int y = GET_Y_LPARAM( lParam );
|
||||
TrackPopupMenu( m_hPopupMenu, TPM_LEFTALIGN | TPM_TOPALIGN, x, y, 0, m_hWnd, NULL );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CWMPHost::OnClick(UINT /* uMsg */, WPARAM /* wParam */, LPARAM /* lParam */, BOOL& /* lResult */)
|
||||
{
|
||||
if ( IsFullScreen() )
|
||||
{
|
||||
SetFullScreen( false );
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
LRESULT CWMPHost::OnLeftDoubleClick(UINT /* uMsg */, WPARAM /* wParam */, LPARAM /* lParam */, BOOL& /* lResult */)
|
||||
{
|
||||
SetFullScreen( !IsFullScreen() );
|
||||
return 1;
|
||||
}
|
||||
|
||||
LRESULT CWMPHost::OnSysKeyDown(UINT /* uMsg */, WPARAM wParam, LPARAM /* lParam */, BOOL& /* lResult */)
|
||||
{
|
||||
switch ( wParam )
|
||||
{
|
||||
case VK_RETURN:
|
||||
SetFullScreen( !IsFullScreen() );
|
||||
break;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
LRESULT CWMPHost::OnKeyDown(UINT /* uMsg */, WPARAM wParam, LPARAM /* lParam */, BOOL& /* lResult */)
|
||||
{
|
||||
switch ( wParam )
|
||||
{
|
||||
case VK_SPACE:
|
||||
PlayVideo( !IsVideoPlaying() );
|
||||
break;
|
||||
|
||||
case VK_LEFT:
|
||||
case VK_RIGHT:
|
||||
{
|
||||
CComPtr<IWMPControls> spWMPControls;
|
||||
g_spWMPPlayer->get_controls(&spWMPControls);
|
||||
if ( !spWMPControls )
|
||||
break;
|
||||
|
||||
CComPtr<IWMPControls2> spWMPControls2;
|
||||
spWMPControls.QueryInterface(&spWMPControls2);
|
||||
if ( !spWMPControls2 )
|
||||
break;
|
||||
|
||||
spWMPControls2->step( wParam == VK_LEFT ? -1 : 1 );
|
||||
|
||||
LogPlayerEvent( wParam == VK_LEFT ? ET_STEPBCK : ET_STEPFWD );
|
||||
}
|
||||
break;
|
||||
|
||||
case VK_UP:
|
||||
case VK_DOWN:
|
||||
{
|
||||
CComPtr<IWMPControls> spWMPControls;
|
||||
g_spWMPPlayer->get_controls(&spWMPControls);
|
||||
if ( !spWMPControls )
|
||||
break;
|
||||
|
||||
double curpos = 0.0f;
|
||||
if ( spWMPControls->get_currentPosition( &curpos ) != S_OK )
|
||||
break;
|
||||
|
||||
curpos += wParam == VK_UP ? -5.0f : 5.0f;
|
||||
|
||||
spWMPControls->put_currentPosition( curpos );
|
||||
if ( !IsVideoPlaying() )
|
||||
{
|
||||
spWMPControls->play();
|
||||
spWMPControls->pause();
|
||||
}
|
||||
|
||||
LogPlayerEvent( wParam == VK_UP ? ET_JUMPBCK : ET_JUMPFWD );
|
||||
}
|
||||
break;
|
||||
|
||||
case VK_HOME:
|
||||
{
|
||||
CComPtr<IWMPControls> spWMPControls;
|
||||
g_spWMPPlayer->get_controls(&spWMPControls);
|
||||
if ( !spWMPControls )
|
||||
break;
|
||||
|
||||
spWMPControls->put_currentPosition( 0.0f );
|
||||
if ( !IsVideoPlaying() )
|
||||
{
|
||||
spWMPControls->play();
|
||||
spWMPControls->pause();
|
||||
}
|
||||
|
||||
LogPlayerEvent( ET_JUMPHOME );
|
||||
}
|
||||
break;
|
||||
|
||||
case VK_END:
|
||||
{
|
||||
CComPtr<IWMPMedia> spWMPMedia;
|
||||
g_spWMPPlayer->get_currentMedia( &spWMPMedia );
|
||||
if ( !spWMPMedia )
|
||||
break;
|
||||
|
||||
CComPtr<IWMPControls> spWMPControls;
|
||||
g_spWMPPlayer->get_controls(&spWMPControls);
|
||||
if ( !spWMPControls )
|
||||
break;
|
||||
|
||||
double duration = 0.0f;
|
||||
if ( spWMPMedia->get_duration( &duration ) != S_OK )
|
||||
break;
|
||||
|
||||
spWMPControls->put_currentPosition( duration - 0.050 ); // back a little more than a frame - this avoids triggering the end fade
|
||||
spWMPControls->play();
|
||||
spWMPControls->pause();
|
||||
|
||||
LogPlayerEvent( ET_JUMPEND );
|
||||
}
|
||||
break;
|
||||
|
||||
case VK_ESCAPE:
|
||||
if ( IsFullScreen() && !g_bFadeWindowTriggered )
|
||||
{
|
||||
CComPtr<IWMPControls> spWMPControls;
|
||||
g_spWMPPlayer->get_controls(&spWMPControls);
|
||||
if ( spWMPControls )
|
||||
{
|
||||
spWMPControls->stop();
|
||||
}
|
||||
|
||||
LogPlayerEvent( ET_FADEOUT );
|
||||
|
||||
g_bFadeWindowTriggered = true;
|
||||
ShowFadeWindow( true );
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CWMPHost::OnNCActivate(UINT /* uMsg */, WPARAM wParam, LPARAM /* lParam */, BOOL& /* lResult */ )
|
||||
{
|
||||
if ( wParam )
|
||||
{
|
||||
if ( g_bWantToBeFullscreen )
|
||||
{
|
||||
SetFullScreen( true );
|
||||
}
|
||||
if ( g_bPlayOnRestore )
|
||||
{
|
||||
g_bPlayOnRestore = false;
|
||||
PlayVideo( true );
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
LRESULT CWMPHost::OnVideoScale(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
|
||||
{
|
||||
SetVideoScaleMode( wID );
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
// CWMPHost.h : Declaration of the CWMPHost
|
||||
//
|
||||
|
||||
#include "resource.h" // main symbols
|
||||
#include <oledlg.h>
|
||||
|
||||
// if this file isn't found, set your path to include the wmp sdk include directory
|
||||
// download the sdk from http://www.microsoft.com/windows/windowsmedia/mp10/sdk.aspx
|
||||
#include "wmp.h"
|
||||
#include "CWMPEventDispatch.h"
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CWMPHost
|
||||
|
||||
class CWMPHost : public CWindowImpl< CWMPHost, CWindow, CWinTraits< WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, WS_EX_APPWINDOW | WS_EX_WINDOWEDGE > >
|
||||
{
|
||||
public:
|
||||
DECLARE_WND_CLASS_EX(NULL, 0, 0)
|
||||
|
||||
BEGIN_MSG_MAP(CWMPHost)
|
||||
MESSAGE_HANDLER(WM_CREATE, OnCreate)
|
||||
MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
|
||||
MESSAGE_HANDLER(WM_CLOSE, OnClose)
|
||||
MESSAGE_HANDLER(WM_SIZE, OnSize)
|
||||
MESSAGE_HANDLER(WM_CONTEXTMENU, OnContextMenu)
|
||||
MESSAGE_HANDLER(WM_LBUTTONDOWN, OnClick)
|
||||
MESSAGE_HANDLER(WM_MBUTTONDOWN, OnClick)
|
||||
MESSAGE_HANDLER(WM_RBUTTONDOWN, OnClick)
|
||||
MESSAGE_HANDLER(WM_LBUTTONDBLCLK, OnLeftDoubleClick)
|
||||
MESSAGE_HANDLER(WM_KEYDOWN, OnKeyDown)
|
||||
MESSAGE_HANDLER(WM_SYSKEYDOWN, OnSysKeyDown)
|
||||
MESSAGE_HANDLER(WM_ERASEBKGND, OnErase)
|
||||
MESSAGE_HANDLER(WM_NCACTIVATE, OnNCActivate)
|
||||
|
||||
COMMAND_ID_HANDLER(ID_HALF_SIZE, OnVideoScale)
|
||||
COMMAND_ID_HANDLER(ID_FULL_SIZE, OnVideoScale)
|
||||
COMMAND_ID_HANDLER(ID_DOUBLE_SIZE, OnVideoScale)
|
||||
COMMAND_ID_HANDLER(ID_STRETCH_TO_FIT, OnVideoScale)
|
||||
END_MSG_MAP()
|
||||
|
||||
LRESULT OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnErase(UINT /* uMsg */, WPARAM /* wParam */, LPARAM /* lParam */, BOOL& bHandled);
|
||||
LRESULT OnSize(UINT /* uMsg */, WPARAM /* wParam */, LPARAM /* lParam */, BOOL& /* lResult */);
|
||||
LRESULT OnContextMenu(UINT /* uMsg */, WPARAM /* wParam */, LPARAM /* lParam */, BOOL& /* lResult */);
|
||||
LRESULT OnClick(UINT /* uMsg */, WPARAM /* wParam */, LPARAM /* lParam */, BOOL& /* lResult */);
|
||||
LRESULT OnLeftDoubleClick(UINT /* uMsg */, WPARAM /* wParam */, LPARAM /* lParam */, BOOL& /* lResult */);
|
||||
LRESULT OnSysKeyDown(UINT /* uMsg */, WPARAM wParam, LPARAM /* lParam */, BOOL& /* lResult */);
|
||||
LRESULT OnKeyDown(UINT /* uMsg */, WPARAM wParam, LPARAM /* lParam */, BOOL& /* lResult */);
|
||||
LRESULT OnNCActivate(UINT /* uMsg */, WPARAM wParam, LPARAM /* lParam */, BOOL& /* lResult */);
|
||||
|
||||
LRESULT OnVideoScale(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
|
||||
|
||||
CAxWindow m_wndView;
|
||||
CComPtr<IConnectionPoint> m_spConnectionPoint;
|
||||
DWORD m_dwAdviseCookie;
|
||||
HMENU m_hPopupMenu;
|
||||
};
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// event logging - this should really be in its own smp.h or something...
|
||||
|
||||
enum EventType_t
|
||||
{
|
||||
ET_APPLAUNCH,
|
||||
ET_APPEXIT,
|
||||
ET_CLOSE,
|
||||
ET_FADEOUT,
|
||||
|
||||
ET_MEDIABEGIN,
|
||||
ET_MEDIAEND,
|
||||
|
||||
ET_JUMPHOME,
|
||||
ET_JUMPEND,
|
||||
|
||||
ET_PLAY,
|
||||
ET_PAUSE,
|
||||
ET_STOP,
|
||||
ET_SCRUBFROM,
|
||||
ET_SCRUBTO,
|
||||
ET_STEPFWD,
|
||||
ET_STEPBCK,
|
||||
ET_JUMPFWD,
|
||||
ET_JUMPBCK,
|
||||
ET_REPEAT,
|
||||
|
||||
ET_MAXIMIZE,
|
||||
ET_MINIMIZE,
|
||||
ET_RESTORE,
|
||||
};
|
||||
@@ -0,0 +1,65 @@
|
||||
//========= Public Domain Code ================================================
|
||||
//
|
||||
// Purpose: Header file for the C++ ICE encryption class.
|
||||
// Taken from public domain code, as written by Matthew Kwan - July 1996
|
||||
// http://www.darkside.com.au/ice/
|
||||
//=============================================================================
|
||||
|
||||
#ifndef _IceKey_H
|
||||
#define _IceKey_H
|
||||
|
||||
/*
|
||||
The IceKey class is used for encrypting and decrypting 64-bit blocks of data
|
||||
with the ICE (Information Concealment Engine) encryption algorithm.
|
||||
|
||||
The constructor creates a new IceKey object that can be used to encrypt and decrypt data.
|
||||
The level of encryption determines the size of the key, and hence its speed.
|
||||
Level 0 uses the Thin-ICE variant, which is an 8-round cipher taking an 8-byte key.
|
||||
This is the fastest option, and is generally considered to be at least as secure as DES,
|
||||
although it is not yet certain whether it is as secure as its key size.
|
||||
|
||||
For levels n greater than zero, a 16n-round cipher is used, taking 8n-byte keys.
|
||||
Although not as fast as level 0, these are very very secure.
|
||||
|
||||
Before an IceKey can be used to encrypt data, its key schedule must be set with the set() member function.
|
||||
The length of the key required is determined by the level, as described above.
|
||||
|
||||
The member functions encrypt() and decrypt() encrypt and decrypt respectively data
|
||||
in blocks of eight chracters, using the specified key.
|
||||
|
||||
Two functions keySize() and blockSize() are provided
|
||||
which return the key and block size respectively, measured in bytes.
|
||||
The key size is determined by the level, while the block size is always 8.
|
||||
|
||||
The destructor zeroes out and frees up all memory associated with the key.
|
||||
*/
|
||||
|
||||
class IceSubkey;
|
||||
|
||||
class IceKey {
|
||||
public:
|
||||
IceKey (int n);
|
||||
~IceKey ();
|
||||
|
||||
void set (const unsigned char *key);
|
||||
|
||||
void encrypt (const unsigned char *plaintext,
|
||||
unsigned char *ciphertext) const;
|
||||
|
||||
void decrypt (const unsigned char *ciphertext,
|
||||
unsigned char *plaintext) const;
|
||||
|
||||
int keySize () const;
|
||||
|
||||
int blockSize () const;
|
||||
|
||||
private:
|
||||
void scheduleBuild (unsigned short *k, int n,
|
||||
const int *keyrot);
|
||||
|
||||
int _size;
|
||||
int _rounds;
|
||||
IceSubkey *_keysched;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,392 @@
|
||||
//========= Public Domain Code ================================================
|
||||
//
|
||||
// Purpose: C++ implementation of the ICE encryption algorithm.
|
||||
// Taken from public domain code, as written by Matthew Kwan - July 1996
|
||||
// http://www.darkside.com.au/ice/
|
||||
//=============================================================================
|
||||
|
||||
#include "IceKey.H"
|
||||
|
||||
#pragma warning(disable: 4244)
|
||||
|
||||
|
||||
/* Structure of a single round subkey */
|
||||
class IceSubkey {
|
||||
public:
|
||||
unsigned long val[3];
|
||||
};
|
||||
|
||||
|
||||
/* The S-boxes */
|
||||
static unsigned long ice_sbox[4][1024];
|
||||
static int ice_sboxes_initialised = 0;
|
||||
|
||||
|
||||
/* Modulo values for the S-boxes */
|
||||
static const int ice_smod[4][4] = {
|
||||
{333, 313, 505, 369},
|
||||
{379, 375, 319, 391},
|
||||
{361, 445, 451, 397},
|
||||
{397, 425, 395, 505}};
|
||||
|
||||
/* XOR values for the S-boxes */
|
||||
static const int ice_sxor[4][4] = {
|
||||
{0x83, 0x85, 0x9b, 0xcd},
|
||||
{0xcc, 0xa7, 0xad, 0x41},
|
||||
{0x4b, 0x2e, 0xd4, 0x33},
|
||||
{0xea, 0xcb, 0x2e, 0x04}};
|
||||
|
||||
/* Permutation values for the P-box */
|
||||
static const unsigned long ice_pbox[32] = {
|
||||
0x00000001, 0x00000080, 0x00000400, 0x00002000,
|
||||
0x00080000, 0x00200000, 0x01000000, 0x40000000,
|
||||
0x00000008, 0x00000020, 0x00000100, 0x00004000,
|
||||
0x00010000, 0x00800000, 0x04000000, 0x20000000,
|
||||
0x00000004, 0x00000010, 0x00000200, 0x00008000,
|
||||
0x00020000, 0x00400000, 0x08000000, 0x10000000,
|
||||
0x00000002, 0x00000040, 0x00000800, 0x00001000,
|
||||
0x00040000, 0x00100000, 0x02000000, 0x80000000};
|
||||
|
||||
/* The key rotation schedule */
|
||||
static const int ice_keyrot[16] = {
|
||||
0, 1, 2, 3, 2, 1, 3, 0,
|
||||
1, 3, 2, 0, 3, 1, 0, 2};
|
||||
|
||||
|
||||
/*
|
||||
* 8-bit Galois Field multiplication of a by b, modulo m.
|
||||
* Just like arithmetic multiplication, except that additions and
|
||||
* subtractions are replaced by XOR.
|
||||
*/
|
||||
|
||||
static unsigned int
|
||||
gf_mult (
|
||||
register unsigned int a,
|
||||
register unsigned int b,
|
||||
register unsigned int m
|
||||
) {
|
||||
register unsigned int res = 0;
|
||||
|
||||
while (b) {
|
||||
if (b & 1)
|
||||
res ^= a;
|
||||
|
||||
a <<= 1;
|
||||
b >>= 1;
|
||||
|
||||
if (a >= 256)
|
||||
a ^= m;
|
||||
}
|
||||
|
||||
return (res);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Galois Field exponentiation.
|
||||
* Raise the base to the power of 7, modulo m.
|
||||
*/
|
||||
|
||||
static unsigned long
|
||||
gf_exp7 (
|
||||
register unsigned int b,
|
||||
unsigned int m
|
||||
) {
|
||||
register unsigned int x;
|
||||
|
||||
if (b == 0)
|
||||
return (0);
|
||||
|
||||
x = gf_mult (b, b, m);
|
||||
x = gf_mult (b, x, m);
|
||||
x = gf_mult (x, x, m);
|
||||
return (gf_mult (b, x, m));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Carry out the ICE 32-bit P-box permutation.
|
||||
*/
|
||||
|
||||
static unsigned long
|
||||
ice_perm32 (
|
||||
register unsigned long x
|
||||
) {
|
||||
register unsigned long res = 0;
|
||||
register const unsigned long *pbox = ice_pbox;
|
||||
|
||||
while (x) {
|
||||
if (x & 1)
|
||||
res |= *pbox;
|
||||
pbox++;
|
||||
x >>= 1;
|
||||
}
|
||||
|
||||
return (res);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Initialise the ICE S-boxes.
|
||||
* This only has to be done once.
|
||||
*/
|
||||
|
||||
static void
|
||||
ice_sboxes_init (void)
|
||||
{
|
||||
register int i;
|
||||
|
||||
for (i=0; i<1024; i++) {
|
||||
int col = (i >> 1) & 0xff;
|
||||
int row = (i & 0x1) | ((i & 0x200) >> 8);
|
||||
unsigned long x;
|
||||
|
||||
x = gf_exp7 (col ^ ice_sxor[0][row], ice_smod[0][row]) << 24;
|
||||
ice_sbox[0][i] = ice_perm32 (x);
|
||||
|
||||
x = gf_exp7 (col ^ ice_sxor[1][row], ice_smod[1][row]) << 16;
|
||||
ice_sbox[1][i] = ice_perm32 (x);
|
||||
|
||||
x = gf_exp7 (col ^ ice_sxor[2][row], ice_smod[2][row]) << 8;
|
||||
ice_sbox[2][i] = ice_perm32 (x);
|
||||
|
||||
x = gf_exp7 (col ^ ice_sxor[3][row], ice_smod[3][row]);
|
||||
ice_sbox[3][i] = ice_perm32 (x);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Create a new ICE key.
|
||||
*/
|
||||
|
||||
IceKey::IceKey (int n)
|
||||
{
|
||||
if (!ice_sboxes_initialised) {
|
||||
ice_sboxes_init ();
|
||||
ice_sboxes_initialised = 1;
|
||||
}
|
||||
|
||||
if (n < 1) {
|
||||
_size = 1;
|
||||
_rounds = 8;
|
||||
} else {
|
||||
_size = n;
|
||||
_rounds = n * 16;
|
||||
}
|
||||
|
||||
_keysched = new IceSubkey[_rounds];
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Destroy an ICE key.
|
||||
*/
|
||||
|
||||
IceKey::~IceKey ()
|
||||
{
|
||||
int i, j;
|
||||
|
||||
for (i=0; i<_rounds; i++)
|
||||
for (j=0; j<3; j++)
|
||||
_keysched[i].val[j] = 0;
|
||||
|
||||
_rounds = _size = 0;
|
||||
|
||||
delete[] _keysched;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* The single round ICE f function.
|
||||
*/
|
||||
|
||||
static unsigned long
|
||||
ice_f (
|
||||
register unsigned long p,
|
||||
const IceSubkey *sk
|
||||
) {
|
||||
unsigned long tl, tr; /* Expanded 40-bit values */
|
||||
unsigned long al, ar; /* Salted expanded 40-bit values */
|
||||
|
||||
/* Left half expansion */
|
||||
tl = ((p >> 16) & 0x3ff) | (((p >> 14) | (p << 18)) & 0xffc00);
|
||||
|
||||
/* Right half expansion */
|
||||
tr = (p & 0x3ff) | ((p << 2) & 0xffc00);
|
||||
|
||||
/* Perform the salt permutation */
|
||||
// al = (tr & sk->val[2]) | (tl & ~sk->val[2]);
|
||||
// ar = (tl & sk->val[2]) | (tr & ~sk->val[2]);
|
||||
al = sk->val[2] & (tl ^ tr);
|
||||
ar = al ^ tr;
|
||||
al ^= tl;
|
||||
|
||||
al ^= sk->val[0]; /* XOR with the subkey */
|
||||
ar ^= sk->val[1];
|
||||
|
||||
/* S-box lookup and permutation */
|
||||
return (ice_sbox[0][al >> 10] | ice_sbox[1][al & 0x3ff]
|
||||
| ice_sbox[2][ar >> 10] | ice_sbox[3][ar & 0x3ff]);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Encrypt a block of 8 bytes of data with the given ICE key.
|
||||
*/
|
||||
|
||||
void
|
||||
IceKey::encrypt (
|
||||
const unsigned char *ptext,
|
||||
unsigned char *ctext
|
||||
) const
|
||||
{
|
||||
register int i;
|
||||
register unsigned long l, r;
|
||||
|
||||
l = (((unsigned long) ptext[0]) << 24)
|
||||
| (((unsigned long) ptext[1]) << 16)
|
||||
| (((unsigned long) ptext[2]) << 8) | ptext[3];
|
||||
r = (((unsigned long) ptext[4]) << 24)
|
||||
| (((unsigned long) ptext[5]) << 16)
|
||||
| (((unsigned long) ptext[6]) << 8) | ptext[7];
|
||||
|
||||
for (i = 0; i < _rounds; i += 2) {
|
||||
l ^= ice_f (r, &_keysched[i]);
|
||||
r ^= ice_f (l, &_keysched[i + 1]);
|
||||
}
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
ctext[3 - i] = r & 0xff;
|
||||
ctext[7 - i] = l & 0xff;
|
||||
|
||||
r >>= 8;
|
||||
l >>= 8;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Decrypt a block of 8 bytes of data with the given ICE key.
|
||||
*/
|
||||
|
||||
void
|
||||
IceKey::decrypt (
|
||||
const unsigned char *ctext,
|
||||
unsigned char *ptext
|
||||
) const
|
||||
{
|
||||
register int i;
|
||||
register unsigned long l, r;
|
||||
|
||||
l = (((unsigned long) ctext[0]) << 24)
|
||||
| (((unsigned long) ctext[1]) << 16)
|
||||
| (((unsigned long) ctext[2]) << 8) | ctext[3];
|
||||
r = (((unsigned long) ctext[4]) << 24)
|
||||
| (((unsigned long) ctext[5]) << 16)
|
||||
| (((unsigned long) ctext[6]) << 8) | ctext[7];
|
||||
|
||||
for (i = _rounds - 1; i > 0; i -= 2) {
|
||||
l ^= ice_f (r, &_keysched[i]);
|
||||
r ^= ice_f (l, &_keysched[i - 1]);
|
||||
}
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
ptext[3 - i] = r & 0xff;
|
||||
ptext[7 - i] = l & 0xff;
|
||||
|
||||
r >>= 8;
|
||||
l >>= 8;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Set 8 rounds [n, n+7] of the key schedule of an ICE key.
|
||||
*/
|
||||
|
||||
void
|
||||
IceKey::scheduleBuild (
|
||||
unsigned short *kb,
|
||||
int n,
|
||||
const int *keyrot
|
||||
) {
|
||||
int i;
|
||||
|
||||
for (i=0; i<8; i++) {
|
||||
register int j;
|
||||
register int kr = keyrot[i];
|
||||
IceSubkey *isk = &_keysched[n + i];
|
||||
|
||||
for (j=0; j<3; j++)
|
||||
isk->val[j] = 0;
|
||||
|
||||
for (j=0; j<15; j++) {
|
||||
register int k;
|
||||
unsigned long *curr_sk = &isk->val[j % 3];
|
||||
|
||||
for (k=0; k<4; k++) {
|
||||
unsigned short *curr_kb = &kb[(kr + k) & 3];
|
||||
register int bit = *curr_kb & 1;
|
||||
|
||||
*curr_sk = (*curr_sk << 1) | bit;
|
||||
*curr_kb = (*curr_kb >> 1) | ((bit ^ 1) << 15);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Set the key schedule of an ICE key.
|
||||
*/
|
||||
|
||||
void
|
||||
IceKey::set (
|
||||
const unsigned char *key
|
||||
) {
|
||||
int i;
|
||||
|
||||
if (_rounds == 8) {
|
||||
unsigned short kb[4];
|
||||
|
||||
for (i=0; i<4; i++)
|
||||
kb[3 - i] = (key[i*2] << 8) | key[i*2 + 1];
|
||||
|
||||
scheduleBuild (kb, 0, ice_keyrot);
|
||||
return;
|
||||
}
|
||||
|
||||
for (i=0; i<_size; i++) {
|
||||
int j;
|
||||
unsigned short kb[4];
|
||||
|
||||
for (j=0; j<4; j++)
|
||||
kb[3 - j] = (key[i*8 + j*2] << 8) | key[i*8 + j*2 + 1];
|
||||
|
||||
scheduleBuild (kb, i*8, ice_keyrot);
|
||||
scheduleBuild (kb, _rounds - 8 - i*8, &ice_keyrot[8]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Return the key size, in bytes.
|
||||
*/
|
||||
|
||||
int
|
||||
IceKey::keySize () const
|
||||
{
|
||||
return (_size * 8);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Return the block size, in bytes.
|
||||
*/
|
||||
|
||||
int
|
||||
IceKey::blockSize () const
|
||||
{
|
||||
return (8);
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
// stdafx.h : include file for standard system include files,
|
||||
// or project specific include files that are used frequently,
|
||||
// but are changed infrequently
|
||||
//
|
||||
// This is a part of the Active Template Library.
|
||||
// Copyright (C) 1996-1998 Microsoft Corporation
|
||||
// All rights reserved.
|
||||
//
|
||||
// This source code is only intended as a supplement to the
|
||||
// Active Template Library Reference and related
|
||||
// electronic documentation provided with the library.
|
||||
// See these sources for detailed information regarding the
|
||||
// Active Template Library product.
|
||||
|
||||
#if !defined(AFX_STDAFX_H__48C9E972_76B0_11D1_B293_0040053089AE__INCLUDED_)
|
||||
#define AFX_STDAFX_H__48C9E972_76B0_11D1_B293_0040053089AE__INCLUDED_
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
|
||||
#ifndef STRICT
|
||||
#define STRICT
|
||||
#endif
|
||||
|
||||
#ifndef _WIN32_WINNT
|
||||
#define _WIN32_WINNT 0x0501
|
||||
#endif
|
||||
#define _ATL_APARTMENT_THREADED
|
||||
|
||||
|
||||
#include <atlbase.h>
|
||||
|
||||
extern CComModule _Module;
|
||||
|
||||
#include <atlcom.h>
|
||||
#include <atlhost.h>
|
||||
#include <atlctl.h>
|
||||
#include <afxres.h>
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
|
||||
|
||||
#endif // !defined(AFX_STDAFX_H__48C9E972_76B0_11D1_B293_0040053089AE__INCLUDED)
|
||||
@@ -0,0 +1,62 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//{{NO_DEPENDENCIES}}
|
||||
// Microsoft Visual C++ generated include file.
|
||||
// Used by smp.rc
|
||||
//
|
||||
#define IDS_PROJNAME 100
|
||||
#define IDR_SMP 100
|
||||
#define IDD_FILEOPEN_DIALOG 201
|
||||
#define IDC_FILEOPEN_EDIT 201
|
||||
#define IDR_MENU1 202
|
||||
#define IDC_FILEOPEN_BROWSE 202
|
||||
#define IDC_STRING_EDIT 203
|
||||
#define IDI_ICON1 204
|
||||
#define IDC_BOOLEAN_TRUE 204
|
||||
#define IDD_STRING_DIALOG 205
|
||||
#define IDC_BOOLEAN_FALSE 205
|
||||
#define IDD_BOOLEAN_DIALOG 206
|
||||
#define IDI_ICON 207
|
||||
#define ID_WMPCORE 32800
|
||||
#define ID_WMPCORE_CLOSE 32801
|
||||
#define ID_WMPCORE_URL 32802
|
||||
#define ID_WMPCORE_OPENSTATE 32803
|
||||
#define ID_WMPCORE_PLAYSTATE 32804
|
||||
#define ID_WMPCORE_CONTROLS 32805
|
||||
#define ID_WMPCORE_SETTINGS 32806
|
||||
#define ID_WMPCORE_CURRENTMEDIA 32807
|
||||
#define ID_WMPCORE_MEDIACOLLECTION 32808
|
||||
#define ID_WMPCORE_PLAYLISTCOLLECTION 32809
|
||||
#define ID_WMPCORE_VERSIONINFO 32810
|
||||
#define ID_WMPCORE_LAUNCHURL 32811
|
||||
#define ID_WMPCORE_NETWORK 32812
|
||||
#define ID_WMPCORE_CURRENTPLAYLIST 32813
|
||||
#define ID_WMPCORE_CDROMCOLLECTION 32814
|
||||
#define ID_WMPCORE_CLOSEDCAPTION 32815
|
||||
#define ID_WMPCORE_ISONLINE 32816
|
||||
#define ID_WMPCORE_ERROR 32817
|
||||
#define ID_WMPCORE_STATUS 32818
|
||||
#define ID_WMPCORE2 32819
|
||||
#define ID_WMPCORE2_DVD 32820
|
||||
#define ID_WMPPLAYER 32900
|
||||
#define ID_WMPPLAYER_ENABLED 32901
|
||||
#define ID_WMPPLAYER_FULLSCREEN 32902
|
||||
#define ID_WMPPLAYER_ENABLECONTEXTMENU 32903
|
||||
#define ID_WMPPLAYER_UIMODE 32904
|
||||
#define ID_WMPPLAYER2 32905
|
||||
#define ID_WMPPLAYER2_STRETCHTOFIT 32906
|
||||
|
||||
#define ID_HALF_SIZE 33000
|
||||
#define ID_FULL_SIZE 33001
|
||||
#define ID_DOUBLE_SIZE 33002
|
||||
#define ID_STRETCH_TO_FIT 33003
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 208
|
||||
#define _APS_NEXT_COMMAND_VALUE 32907
|
||||
#define _APS_NEXT_CONTROL_VALUE 205
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
||||
+1441
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
After Width: | Height: | Size: 2.9 KiB |
@@ -0,0 +1,228 @@
|
||||
// Microsoft Visual C++ generated resource script.
|
||||
//
|
||||
#include "resource.h"
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#include "afxres.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// English (U.S.) resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
#pragma code_page(1252)
|
||||
#endif //_WIN32
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE
|
||||
BEGIN
|
||||
"#include ""afxres.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE
|
||||
BEGIN
|
||||
"\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Version
|
||||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 1,0,0,1
|
||||
PRODUCTVERSION 1,0,0,1
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS 0x4L
|
||||
FILETYPE 0x1L
|
||||
FILESUBTYPE 0x0L
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904B0"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "Valve"
|
||||
VALUE "FileDescription", "Steam Media Player"
|
||||
VALUE "FileVersion", "1, 0, 0, 1"
|
||||
VALUE "InternalName", "Steam Media Player"
|
||||
VALUE "LegalCopyright", "Copyright 2005"
|
||||
VALUE "OriginalFilename", "smp.exe"
|
||||
VALUE "ProductName", "Steam Media Player"
|
||||
VALUE "ProductVersion", "1, 0, 0, 1"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 1200
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Menu
|
||||
//
|
||||
|
||||
IDR_MENU1 MENU
|
||||
BEGIN
|
||||
POPUP "&File"
|
||||
BEGIN
|
||||
MENUITEM "&Open URL", ID_FILE_OPEN
|
||||
MENUITEM "E&xit", ID_APP_EXIT
|
||||
END
|
||||
POPUP "Interfaces"
|
||||
BEGIN
|
||||
MENUITEM "IWMPCore", ID_WMPCORE, INACTIVE
|
||||
MENUITEM " close", ID_WMPCORE_CLOSE
|
||||
MENUITEM " URL", ID_WMPCORE_URL
|
||||
MENUITEM " openState", ID_WMPCORE_OPENSTATE
|
||||
MENUITEM " playState", ID_WMPCORE_PLAYSTATE
|
||||
MENUITEM " controls", ID_WMPCORE_CONTROLS
|
||||
MENUITEM " settings", ID_WMPCORE_SETTINGS
|
||||
MENUITEM " currentMedia", ID_WMPCORE_CURRENTMEDIA
|
||||
MENUITEM " mediaCollection", ID_WMPCORE_MEDIACOLLECTION
|
||||
MENUITEM " playlistCollection", ID_WMPCORE_PLAYLISTCOLLECTION
|
||||
|
||||
MENUITEM " versionInfo", ID_WMPCORE_VERSIONINFO
|
||||
MENUITEM " launchURL", ID_WMPCORE_LAUNCHURL
|
||||
MENUITEM " network", ID_WMPCORE_NETWORK
|
||||
MENUITEM " currentPlaylist", ID_WMPCORE_CURRENTPLAYLIST
|
||||
MENUITEM " cdromCollection", ID_WMPCORE_CDROMCOLLECTION
|
||||
MENUITEM " closedCaption", ID_WMPCORE_CLOSEDCAPTION
|
||||
MENUITEM " isOnline", ID_WMPCORE_ISONLINE
|
||||
MENUITEM " error", ID_WMPCORE_ERROR
|
||||
MENUITEM " status", ID_WMPCORE_STATUS
|
||||
MENUITEM "IWMPCore2", ID_WMPCORE2, INACTIVE
|
||||
MENUITEM " dvd", ID_WMPCORE2_DVD
|
||||
MENUITEM "IWMPlayer", ID_WMPPLAYER, INACTIVE
|
||||
MENUITEM " enabled", ID_WMPPLAYER_ENABLED
|
||||
MENUITEM " fullScreen", ID_WMPPLAYER_FULLSCREEN
|
||||
MENUITEM " enableContextMenu", ID_WMPPLAYER_ENABLECONTEXTMENU
|
||||
|
||||
MENUITEM " uiMode", ID_WMPPLAYER_UIMODE
|
||||
MENUITEM "IWMPlayer2", ID_WMPPLAYER2, INACTIVE
|
||||
MENUITEM " stretchToFit", ID_WMPPLAYER2_STRETCHTOFIT
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
IDD_FILEOPEN_DIALOG DIALOGEX 0, 0, 274, 74
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Open URL"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x1
|
||||
BEGIN
|
||||
EDITTEXT IDC_FILEOPEN_EDIT,7,25,235,14,ES_AUTOHSCROLL | WS_GROUP
|
||||
PUSHBUTTON "...",IDC_FILEOPEN_BROWSE,246,26,21,14,0,
|
||||
WS_EX_CLIENTEDGE
|
||||
DEFPUSHBUTTON "OK",IDOK,160,53,50,14
|
||||
PUSHBUTTON "Cancel",IDCANCEL,217,53,50,14
|
||||
LTEXT "Enter URL to play:",IDC_STATIC,7,7,59,8
|
||||
END
|
||||
|
||||
IDD_STRING_DIALOG DIALOG 0, 0, 244, 50
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Property"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "OK",IDOK,123,29,50,14
|
||||
PUSHBUTTON "Cancel",IDCANCEL,183,29,50,14
|
||||
EDITTEXT IDC_STRING_EDIT,7,7,226,13,ES_AUTOHSCROLL
|
||||
END
|
||||
|
||||
IDD_BOOLEAN_DIALOG DIALOG 0, 0, 125, 58
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Boolean"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "OK",IDOK,7,37,50,14
|
||||
PUSHBUTTON "Cancel",IDCANCEL,68,37,50,14
|
||||
CONTROL "VARIANT_TRUE",IDC_BOOLEAN_TRUE,"Button",
|
||||
BS_AUTORADIOBUTTON,7,7,85,10
|
||||
CONTROL "VARIANT_FALSE",IDC_BOOLEAN_FALSE,"Button",
|
||||
BS_AUTORADIOBUTTON,7,21,85,10
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// DESIGNINFO
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
GUIDELINES DESIGNINFO
|
||||
BEGIN
|
||||
IDD_STRING_DIALOG, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 237
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 43
|
||||
END
|
||||
|
||||
IDD_BOOLEAN_DIALOG, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 118
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 51
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Icon
|
||||
//
|
||||
|
||||
// Icon with lowest ID value placed first to ensure application icon
|
||||
// remains consistent on all systems.
|
||||
IDI_ICON ICON "smp.ico"
|
||||
#endif // English (U.S.) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 8.00
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "smp", "smp.vcproj", "{F2E998F8-1482-4A51-A70C-C3B225A7A201}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfiguration) = preSolution
|
||||
Debug = Debug
|
||||
Release = Release
|
||||
Release MinDependency = Release MinDependency
|
||||
Release MinSize = Release MinSize
|
||||
Unicode Debug = Unicode Debug
|
||||
Unicode Release MinDependency = Unicode Release MinDependency
|
||||
Unicode Release MinSize = Unicode Release MinSize
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfiguration) = postSolution
|
||||
{F2E998F8-1482-4A51-A70C-C3B225A7A201}.Debug.ActiveCfg = Debug|Win32
|
||||
{F2E998F8-1482-4A51-A70C-C3B225A7A201}.Debug.Build.0 = Debug|Win32
|
||||
{F2E998F8-1482-4A51-A70C-C3B225A7A201}.Release.ActiveCfg = Release MinSize|Win32
|
||||
{F2E998F8-1482-4A51-A70C-C3B225A7A201}.Release.Build.0 = Release MinSize|Win32
|
||||
{F2E998F8-1482-4A51-A70C-C3B225A7A201}.Release MinDependency.ActiveCfg = Release MinDependency|Win32
|
||||
{F2E998F8-1482-4A51-A70C-C3B225A7A201}.Release MinDependency.Build.0 = Release MinDependency|Win32
|
||||
{F2E998F8-1482-4A51-A70C-C3B225A7A201}.Release MinSize.ActiveCfg = Release MinSize|Win32
|
||||
{F2E998F8-1482-4A51-A70C-C3B225A7A201}.Release MinSize.Build.0 = Release MinSize|Win32
|
||||
{F2E998F8-1482-4A51-A70C-C3B225A7A201}.Unicode Debug.ActiveCfg = Unicode Debug|Win32
|
||||
{F2E998F8-1482-4A51-A70C-C3B225A7A201}.Unicode Debug.Build.0 = Unicode Debug|Win32
|
||||
{F2E998F8-1482-4A51-A70C-C3B225A7A201}.Unicode Release MinDependency.ActiveCfg = Unicode Release MinDependency|Win32
|
||||
{F2E998F8-1482-4A51-A70C-C3B225A7A201}.Unicode Release MinDependency.Build.0 = Unicode Release MinDependency|Win32
|
||||
{F2E998F8-1482-4A51-A70C-C3B225A7A201}.Unicode Release MinSize.ActiveCfg = Unicode Release MinSize|Win32
|
||||
{F2E998F8-1482-4A51-A70C-C3B225A7A201}.Unicode Release MinSize.Build.0 = Unicode Release MinSize|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityAddIns) = postSolution
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -0,0 +1,625 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="smp"
|
||||
ProjectGUID="{6ACEBE96-D4A4-439D-881A-A3DD1F6FEB89}"
|
||||
RootNamespace="smp"
|
||||
SccProjectName=""
|
||||
SccLocalPath=""
|
||||
Keyword="AtlProj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Unicode Release MinSize|Win32"
|
||||
OutputDirectory=".\ReleaseUMinSize"
|
||||
IntermediateDirectory=".\ReleaseUMinSize"
|
||||
ConfigurationType="1"
|
||||
UseOfMFC="0"
|
||||
UseOfATL="2"
|
||||
ATLMinimizesCRunTimeLibraryUsage="TRUE"
|
||||
CharacterSet="1">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="1"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories=".;..\..\common;..\..\dx8sdk\include;..\WMPSDK10\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
|
||||
StringPooling="TRUE"
|
||||
ExceptionHandling="TRUE"
|
||||
RuntimeLibrary="5"
|
||||
EnableFunctionLevelLinking="TRUE"
|
||||
ForceConformanceInForLoopScope="TRUE"
|
||||
UsePrecompiledHeader="2"
|
||||
PrecompiledHeaderFile=".\ReleaseUMinSize/smp.pch"
|
||||
AssemblerListingLocation=".\ReleaseUMinSize/"
|
||||
ObjectFile=".\ReleaseUMinSize/"
|
||||
ProgramDataBaseFileName=".\ReleaseUMinSize/"
|
||||
WarningLevel="3"
|
||||
SuppressStartupBanner="TRUE"
|
||||
CompileAs="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="odbc32.lib odbccp32.lib comctl32.lib Msimg32.lib ws2_32.lib rpcrt4.lib ..\..\dx8sdk\lib\d3d8.lib"
|
||||
OutputFile=".\ReleaseUMinSize/smp.exe"
|
||||
LinkIncremental="1"
|
||||
SuppressStartupBanner="TRUE"
|
||||
IgnoreAllDefaultLibraries="FALSE"
|
||||
ProgramDatabaseFile=".\ReleaseUMinSize/smp.pdb"
|
||||
SubSystem="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TypeLibraryName=".\ReleaseUMinSize/smp.tlb"
|
||||
HeaderFileName=""/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="NDEBUG"
|
||||
Culture="1033"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release MinDependency|Win32"
|
||||
OutputDirectory=".\ReleaseMinDependency"
|
||||
IntermediateDirectory=".\ReleaseMinDependency"
|
||||
ConfigurationType="1"
|
||||
UseOfMFC="0"
|
||||
UseOfATL="1"
|
||||
ATLMinimizesCRunTimeLibraryUsage="TRUE"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="1"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories=".;..\..\common;..\..\dx8sdk\include;..\WMPSDK10\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
|
||||
StringPooling="TRUE"
|
||||
ExceptionHandling="TRUE"
|
||||
RuntimeLibrary="5"
|
||||
EnableFunctionLevelLinking="TRUE"
|
||||
ForceConformanceInForLoopScope="TRUE"
|
||||
UsePrecompiledHeader="2"
|
||||
PrecompiledHeaderFile=".\ReleaseMinDependency/smp.pch"
|
||||
AssemblerListingLocation=".\ReleaseMinDependency/"
|
||||
ObjectFile=".\ReleaseMinDependency/"
|
||||
ProgramDataBaseFileName=".\ReleaseMinDependency/"
|
||||
WarningLevel="3"
|
||||
SuppressStartupBanner="TRUE"
|
||||
CompileAs="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="odbc32.lib odbccp32.lib comctl32.lib Msimg32.lib ws2_32.lib rpcrt4.lib psapi.lib ..\..\dx8sdk\lib\d3d8.lib"
|
||||
OutputFile=".\ReleaseMinDependency/smp.exe"
|
||||
LinkIncremental="1"
|
||||
SuppressStartupBanner="TRUE"
|
||||
IgnoreAllDefaultLibraries="FALSE"
|
||||
IgnoreDefaultLibraryNames=""
|
||||
ProgramDatabaseFile=".\ReleaseMinDependency/smp.pdb"
|
||||
SubSystem="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TypeLibraryName=".\ReleaseMinDependency/smp.tlb"
|
||||
HeaderFileName=""/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="NDEBUG"
|
||||
Culture="1033"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Unicode Release MinDependency|Win32"
|
||||
OutputDirectory=".\ReleaseUMinDependency"
|
||||
IntermediateDirectory=".\ReleaseUMinDependency"
|
||||
ConfigurationType="1"
|
||||
UseOfMFC="0"
|
||||
UseOfATL="1"
|
||||
ATLMinimizesCRunTimeLibraryUsage="TRUE"
|
||||
CharacterSet="1">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="1"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories=".;..\..\common;..\..\dx8sdk\include;..\WMPSDK10\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
|
||||
StringPooling="TRUE"
|
||||
ExceptionHandling="TRUE"
|
||||
RuntimeLibrary="5"
|
||||
EnableFunctionLevelLinking="TRUE"
|
||||
ForceConformanceInForLoopScope="TRUE"
|
||||
UsePrecompiledHeader="2"
|
||||
PrecompiledHeaderFile=".\ReleaseUMinDependency/smp.pch"
|
||||
AssemblerListingLocation=".\ReleaseUMinDependency/"
|
||||
ObjectFile=".\ReleaseUMinDependency/"
|
||||
ProgramDataBaseFileName=".\ReleaseUMinDependency/"
|
||||
WarningLevel="3"
|
||||
SuppressStartupBanner="TRUE"
|
||||
CompileAs="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="odbc32.lib odbccp32.lib comctl32.lib Msimg32.lib ws2_32.lib rpcrt4.lib ..\..\dx8sdk\lib\d3d8.lib"
|
||||
OutputFile=".\ReleaseUMinDependency/smp.exe"
|
||||
LinkIncremental="1"
|
||||
SuppressStartupBanner="TRUE"
|
||||
IgnoreAllDefaultLibraries="FALSE"
|
||||
ProgramDatabaseFile=".\ReleaseUMinDependency/smp.pdb"
|
||||
SubSystem="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TypeLibraryName=".\ReleaseUMinDependency/smp.tlb"
|
||||
HeaderFileName=""/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="NDEBUG"
|
||||
Culture="1033"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Unicode Debug|Win32"
|
||||
OutputDirectory=".\DebugU"
|
||||
IntermediateDirectory=".\DebugU"
|
||||
ConfigurationType="1"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="FALSE"
|
||||
CharacterSet="1">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=".;..\..\common;..\..\dx8sdk\include;..\WMPSDK10\include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
|
||||
ExceptionHandling="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="5"
|
||||
ForceConformanceInForLoopScope="TRUE"
|
||||
UsePrecompiledHeader="2"
|
||||
PrecompiledHeaderThrough="stdafx.h"
|
||||
PrecompiledHeaderFile=".\DebugU/smp.pch"
|
||||
AssemblerListingLocation=".\DebugU/"
|
||||
ObjectFile=".\DebugU/"
|
||||
ProgramDataBaseFileName=".\DebugU/"
|
||||
WarningLevel="3"
|
||||
SuppressStartupBanner="TRUE"
|
||||
DebugInformationFormat="4"
|
||||
CompileAs="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="odbc32.lib odbccp32.lib comctl32.lib Msimg32.lib ws2_32.lib rpcrt4.lib ..\..\dx8sdk\lib\d3d8.lib"
|
||||
OutputFile=".\DebugU/smp.exe"
|
||||
LinkIncremental="1"
|
||||
SuppressStartupBanner="TRUE"
|
||||
IgnoreAllDefaultLibraries="FALSE"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile=".\DebugU/smp.pdb"
|
||||
SubSystem="2"
|
||||
EntryPointSymbol="wWinMainCRTStartup"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TypeLibraryName=".\DebugU/smp.tlb"
|
||||
HeaderFileName=""/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
Culture="1033"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release MinSize|Win32"
|
||||
OutputDirectory=".\ReleaseMinSize"
|
||||
IntermediateDirectory=".\ReleaseMinSize"
|
||||
ConfigurationType="1"
|
||||
UseOfMFC="0"
|
||||
UseOfATL="2"
|
||||
ATLMinimizesCRunTimeLibraryUsage="TRUE"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="1"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories=".;..\..\common;..\..\dx8sdk\include;..\WMPSDK10\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
|
||||
StringPooling="TRUE"
|
||||
ExceptionHandling="TRUE"
|
||||
RuntimeLibrary="5"
|
||||
EnableFunctionLevelLinking="TRUE"
|
||||
ForceConformanceInForLoopScope="TRUE"
|
||||
UsePrecompiledHeader="2"
|
||||
PrecompiledHeaderFile=".\ReleaseMinSize/smp.pch"
|
||||
AssemblerListingLocation=".\ReleaseMinSize/"
|
||||
ObjectFile=".\ReleaseMinSize/"
|
||||
ProgramDataBaseFileName=".\ReleaseMinSize/"
|
||||
WarningLevel="3"
|
||||
SuppressStartupBanner="TRUE"
|
||||
CompileAs="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="odbc32.lib odbccp32.lib comctl32.lib Msimg32.lib ws2_32.lib rpcrt4.lib psapi.lib ..\..\dx8sdk\lib\d3d8.lib"
|
||||
OutputFile=".\ReleaseMinSize/smp.exe"
|
||||
LinkIncremental="1"
|
||||
SuppressStartupBanner="TRUE"
|
||||
IgnoreAllDefaultLibraries="FALSE"
|
||||
ProgramDatabaseFile=".\ReleaseMinSize/smp.pdb"
|
||||
SubSystem="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TypeLibraryName=".\ReleaseMinSize/smp.tlb"
|
||||
HeaderFileName=""/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="NDEBUG"
|
||||
Culture="1033"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory=".\Debug"
|
||||
IntermediateDirectory=".\Debug"
|
||||
ConfigurationType="1"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="FALSE"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=".;..\..\common;..\..\dx8sdk\include;..\WMPSDK10\include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
|
||||
ExceptionHandling="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
ForceConformanceInForLoopScope="TRUE"
|
||||
UsePrecompiledHeader="2"
|
||||
PrecompiledHeaderFile=".\Debug/smp.pch"
|
||||
AssemblerListingLocation=".\Debug/"
|
||||
ObjectFile=".\Debug/"
|
||||
ProgramDataBaseFileName=".\Debug/"
|
||||
WarningLevel="3"
|
||||
SuppressStartupBanner="TRUE"
|
||||
DebugInformationFormat="4"
|
||||
CompileAs="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="odbc32.lib odbccp32.lib comctl32.lib Msimg32.lib ws2_32.lib rpcrt4.lib psapi.lib ..\..\dx8sdk\lib\d3d8.lib"
|
||||
OutputFile=".\Debug/smp.exe"
|
||||
LinkIncremental="1"
|
||||
SuppressStartupBanner="TRUE"
|
||||
IgnoreAllDefaultLibraries="FALSE"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile=".\Debug/smp.pdb"
|
||||
SubSystem="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TypeLibraryName=".\Debug/smp.tlb"
|
||||
HeaderFileName=""/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
Culture="1033"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
|
||||
<File
|
||||
RelativePath="CWMPEventDispatch.cpp">
|
||||
<FileConfiguration
|
||||
Name="Unicode Release MinSize|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="1"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_UNICODE;_ATL_DLL;_ATL_MIN_CRT;$(NoInherit)"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release MinDependency|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="1"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Unicode Release MinDependency|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="1"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_UNICODE;_ATL_STATIC_REGISTRY;_ATL_MIN_CRT;$(NoInherit)"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Unicode Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_UNICODE;$(NoInherit)"
|
||||
BasicRuntimeChecks="3"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release MinSize|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="1"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
BasicRuntimeChecks="3"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="CWMPHost.cpp">
|
||||
<FileConfiguration
|
||||
Name="Unicode Release MinSize|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="1"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_UNICODE;_ATL_DLL;_ATL_MIN_CRT;$(NoInherit)"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release MinDependency|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="1"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Unicode Release MinDependency|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="1"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_UNICODE;_ATL_STATIC_REGISTRY;_ATL_MIN_CRT;$(NoInherit)"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Unicode Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_UNICODE;$(NoInherit)"
|
||||
BasicRuntimeChecks="3"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release MinSize|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="1"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
BasicRuntimeChecks="3"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\IceKey.cpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="smp.cpp">
|
||||
<FileConfiguration
|
||||
Name="Unicode Release MinSize|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="1"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_UNICODE;_ATL_DLL;_ATL_MIN_CRT;$(NoInherit)"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release MinDependency|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="1"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Unicode Release MinDependency|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="1"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_UNICODE;_ATL_STATIC_REGISTRY;_ATL_MIN_CRT;$(NoInherit)"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Unicode Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_UNICODE;$(NoInherit)"
|
||||
BasicRuntimeChecks="3"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release MinSize|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="1"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
BasicRuntimeChecks="3"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl">
|
||||
<File
|
||||
RelativePath=".\IceKey.H">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="Resource.h">
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\StdAfx.h">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Resource Files"
|
||||
Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
|
||||
<File
|
||||
RelativePath=".\smp.ico">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="smp.rc">
|
||||
<FileConfiguration
|
||||
Name="Unicode Release MinSize|Win32">
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="NDEBUG;$(NoInherit)"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Unicode Release MinDependency|Win32">
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="NDEBUG;$(NoInherit)"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Unicode Debug|Win32">
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="_DEBUG;$(NoInherit)"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Library Files"
|
||||
Filter="">
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
Reference in New Issue
Block a user