mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-28 16:49:58 -06:00
MusicMod: Prepare to fix the MusicMod build
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3505 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
228
Externals/MusicMod/Player/Src/Console.cpp
vendored
Normal file
228
Externals/MusicMod/Player/Src/Console.cpp
vendored
Normal file
@ -0,0 +1,228 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Plainamp, Open source Winamp core
|
||||
//
|
||||
// Copyright <20> 2005 Sebastian Pipping <webmaster@hartwork.org>
|
||||
//
|
||||
// --> http://www.hartwork.org
|
||||
//
|
||||
// This source code is released under the GNU General Public License (GPL).
|
||||
// See GPL.txt for details. Any non-GPL usage is strictly forbidden.
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
#include "Console.h"
|
||||
#include "Font.h"
|
||||
#include "Main.h"
|
||||
#include "Config.h"
|
||||
#include <time.h>
|
||||
|
||||
|
||||
|
||||
HWND WindowConsole = NULL; // extern
|
||||
int iNext = 0;
|
||||
|
||||
const int iMaxEntries = 10000;
|
||||
|
||||
|
||||
|
||||
WNDPROC WndprocConsoleBackup = NULL;
|
||||
LRESULT CALLBACK WndprocConsole( HWND hwnd, UINT message, WPARAM wp, LPARAM lp );
|
||||
|
||||
|
||||
|
||||
bool bConsoleVisible;
|
||||
WINDOWPLACEMENT WinPlaceConsole;
|
||||
|
||||
void WinPlaceConsoleCallback( ConfVar * var )
|
||||
{
|
||||
if( !IsWindow( WindowConsole ) ) return;
|
||||
|
||||
GetWindowPlacement( WindowConsole, &WinPlaceConsole );
|
||||
|
||||
// MSDN: If the window identified by the hWnd parameter
|
||||
// is maximized, the showCmd member is SW_SHOWMAXIMIZED.
|
||||
// If the window is minimized, showCmd is SW_SHOWMINIMIZED.
|
||||
// Otherwise, it is SW_SHOWNORMAL.
|
||||
if( !bConsoleVisible )
|
||||
{
|
||||
WinPlaceConsole.showCmd = SW_HIDE;
|
||||
}
|
||||
}
|
||||
|
||||
RECT rConsoleDefault = { 50, 400, 450, 700 };
|
||||
|
||||
ConfWinPlaceCallback cwpcWinPlaceConsole(
|
||||
&WinPlaceConsole,
|
||||
TEXT( "WinPlaceConsole" ),
|
||||
&rConsoleDefault,
|
||||
WinPlaceConsoleCallback
|
||||
);
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// Creates the console window.
|
||||
/// Size and visibility is used from config.
|
||||
///
|
||||
/// @return Success flag
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Console::Create()
|
||||
{
|
||||
WindowConsole = CreateWindowEx(
|
||||
WS_EX_TOOLWINDOW | // DWORD dwExStyle
|
||||
WS_EX_CLIENTEDGE, //
|
||||
TEXT( "LISTBOX" ), // LPCTSTR lpClassName
|
||||
TEXT( "Console" ), // LPCTSTR lpWindowName
|
||||
WS_VSCROLL | // DWORD dwStyle
|
||||
LBS_DISABLENOSCROLL | //
|
||||
LBS_EXTENDEDSEL | //
|
||||
LBS_HASSTRINGS | //
|
||||
LBS_NOTIFY | //
|
||||
LBS_NOINTEGRALHEIGHT | //
|
||||
WS_POPUP | //
|
||||
WS_OVERLAPPEDWINDOW, //
|
||||
rConsoleDefault.left, // int x
|
||||
rConsoleDefault.top, // int y
|
||||
rConsoleDefault.right - rConsoleDefault.left, // int nWidth
|
||||
rConsoleDefault.bottom - rConsoleDefault.top, // int nHeight
|
||||
WindowMain, // HWND hWndParent
|
||||
NULL, // HMENU hMenu
|
||||
g_hInstance, // HINSTANCE hInstance
|
||||
NULL // LPVOID lpParam
|
||||
);
|
||||
|
||||
if( !WindowConsole ) return false;
|
||||
|
||||
// A blank line at the bottom will give us more space
|
||||
SendMessage( WindowConsole, LB_INSERTSTRING, 0, ( LPARAM )TEXT( "" ) );
|
||||
|
||||
Font::Apply( WindowConsole );
|
||||
|
||||
bConsoleVisible = ( WinPlaceConsole.showCmd != SW_HIDE );
|
||||
SetWindowPlacement( WindowConsole, &WinPlaceConsole );
|
||||
|
||||
// Exchange window procedure
|
||||
WndprocConsoleBackup = ( WNDPROC )GetWindowLong( WindowConsole, GWL_WNDPROC );
|
||||
if( WndprocConsoleBackup != NULL )
|
||||
{
|
||||
SetWindowLong( WindowConsole, GWL_WNDPROC, ( LONG )WndprocConsole );
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// Destroys the console window.
|
||||
///
|
||||
/// @return Success flag
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Console::Destroy()
|
||||
{
|
||||
if( !WindowConsole ) return false;
|
||||
DestroyWindow( WindowConsole );
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// Pops up the console window.
|
||||
///
|
||||
/// @return Success flag
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Console::Popup()
|
||||
{
|
||||
if( !WindowConsole ) return false;
|
||||
if( !IsWindowVisible( WindowConsole ) )
|
||||
{
|
||||
ShowWindow( WindowConsole, SW_SHOW );
|
||||
}
|
||||
|
||||
SetActiveWindow( WindowConsole );
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// Adds a new entry at the end/bottom
|
||||
///
|
||||
/// @param szText Log entry
|
||||
/// @return Success flag
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
bool Console::Append( TCHAR * szText )
|
||||
{
|
||||
if( !WindowConsole ) return false;
|
||||
if( iNext > iMaxEntries - 1 )
|
||||
{
|
||||
SendMessage(
|
||||
WindowConsole,
|
||||
LB_DELETESTRING,
|
||||
0,
|
||||
0
|
||||
);
|
||||
iNext--;
|
||||
}
|
||||
|
||||
const int uTextLen = ( int )_tcslen( szText );
|
||||
TCHAR * szBuffer = new TCHAR[ 11 + uTextLen + 1 ];
|
||||
time_t now_time_t = time( NULL );
|
||||
struct tm * now_tm = localtime( &now_time_t );
|
||||
_tcsftime( szBuffer, 12, TEXT( "%H:%M:%S " ), now_tm );
|
||||
memcpy( szBuffer + 11, szText, uTextLen * sizeof( TCHAR ) );
|
||||
szBuffer[ 11 + uTextLen ] = TEXT( '\0' );
|
||||
|
||||
SendMessage( WindowConsole, LB_INSERTSTRING, iNext, ( LPARAM )szBuffer );
|
||||
SendMessage( WindowConsole, LB_SETSEL, FALSE, -1 );
|
||||
SendMessage( WindowConsole, LB_SETSEL, TRUE, iNext );
|
||||
SendMessage( WindowConsole, LB_SETTOPINDEX, iNext, 0 );
|
||||
iNext++;
|
||||
|
||||
delete [] szBuffer;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
LRESULT CALLBACK WndprocConsole( HWND hwnd, UINT message, WPARAM wp, LPARAM lp )
|
||||
{
|
||||
switch( message )
|
||||
{
|
||||
/*
|
||||
case WM_CTLCOLORLISTBOX:
|
||||
if( ( HWND )lp == WindowConsole )
|
||||
{
|
||||
SetBkColor (( HDC )wp, GetSysColor(COLOR_3DFACE));
|
||||
return ( LRESULT )GetSysColorBrush(COLOR_3DFACE);
|
||||
}
|
||||
break;
|
||||
*/
|
||||
|
||||
case WM_SYSCOMMAND:
|
||||
// Hide instead of closing
|
||||
if( ( wp & 0xFFF0 ) == SC_CLOSE )
|
||||
{
|
||||
ShowWindow( hwnd, SW_HIDE );
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_DESTROY:
|
||||
cwpcWinPlaceConsole.TriggerCallback();
|
||||
cwpcWinPlaceConsole.RemoveCallback();
|
||||
break;
|
||||
|
||||
case WM_SHOWWINDOW:
|
||||
bConsoleVisible = ( wp == TRUE );
|
||||
break;
|
||||
|
||||
}
|
||||
return CallWindowProc( WndprocConsoleBackup, hwnd, message, wp, lp );
|
||||
}
|
Reference in New Issue
Block a user