111 lines
3.7 KiB
C++
111 lines
3.7 KiB
C++
/****************************************************************************
|
|
* *
|
|
* Project 64 - A Nintendo 64 emulator. *
|
|
* http://www.pj64-emu.com/ *
|
|
* Copyright (C) 2012 Project64. All rights reserved. *
|
|
* *
|
|
* License: *
|
|
* GNU/GPLv2 http://www.gnu.org/licenses/gpl-2.0.html *
|
|
* *
|
|
****************************************************************************/
|
|
#pragma once
|
|
|
|
class CGfxPlugin; //Plugin that controls the rendering
|
|
class CAudioPlugin; //Plugin for audio, need the hwnd
|
|
class CControl_Plugin; //Controller needs hwnd to see if it is the focused window
|
|
class CBaseMenu; //Menu for the gui
|
|
class CN64System;
|
|
class CNotification;
|
|
class CriticalSection;
|
|
|
|
enum {
|
|
WM_HIDE_CUROSR = WM_USER + 10,
|
|
WM_MAKE_FOCUS = WM_USER + 17,
|
|
WM_INIATE_PLUGIN = WM_USER + 18,
|
|
WM_BORWSER_TOP = WM_USER + 40,
|
|
};
|
|
|
|
class CMainGui :
|
|
public CRomBrowser,
|
|
private CGuiSettings
|
|
{
|
|
friend CGfxPlugin;
|
|
friend CAudioPlugin;
|
|
friend CControl_Plugin;
|
|
|
|
CBaseMenu * m_Menu;
|
|
|
|
enum { StatusBarID = 400 };
|
|
|
|
WND_HANDLE m_hMainWindow, m_hStatusWnd;
|
|
bool m_hacked;
|
|
const bool m_bMainWindow;
|
|
DWORD m_InvalidExeMsg;
|
|
CriticalSection m_CS;
|
|
|
|
bool m_SaveMainWindowPos;
|
|
LONG m_SaveMainWindowTop;
|
|
LONG m_SaveMainWindowLeft;
|
|
|
|
bool m_SaveRomBrowserPos;
|
|
LONG m_SaveRomBrowserTop;
|
|
LONG m_SaveRomBrowserLeft;
|
|
|
|
bool RegisterWinClass ( void );
|
|
void ChangeWinSize ( long width, long height );
|
|
void Create ( const char * WindowTitle );
|
|
void CreateStatusBar ( void );
|
|
void Resize ( DWORD fwSizeType, WORD nWidth, WORD nHeight ); //responding to WM_SIZE
|
|
|
|
friend DWORD CALLBACK AboutBoxProc ( HWND, DWORD, DWORD, DWORD );
|
|
friend DWORD CALLBACK AboutIniBoxProc ( WND_HANDLE, DWORD, DWORD, DWORD );
|
|
static DWORD CALLBACK MainGui_Proc ( WND_HANDLE, DWORD, DWORD, DWORD );
|
|
|
|
friend void RomBowserEnabledChanged (CMainGui * Gui);
|
|
friend void RomBowserColoumnsChanged (CMainGui * Gui);
|
|
friend void RomBrowserRecursiveChanged (CMainGui * Gui);
|
|
|
|
public:
|
|
CMainGui ( bool bMainWindow, const char * WindowTitle = "" );
|
|
~CMainGui ( void );
|
|
|
|
//Message Processing
|
|
int ProcessAllMessages ( void );
|
|
bool ProcessGuiMessages ( void );
|
|
|
|
//debugging functions
|
|
void EnterLogOptions ( void );
|
|
|
|
//Get Information about the window
|
|
int Height ( void ); //Get the Height of the window
|
|
int Width ( void ); //Get the Width of the window
|
|
|
|
//Manipulate the state of the window
|
|
void SetPos ( int X, int Y ); //Move the window to this screen location
|
|
void Show ( bool ShowWindow ); //Show or Hide the current window
|
|
void MakeWindowOnTop ( bool OnTop );
|
|
void BringToTop ( void );
|
|
void Caption ( LPCSTR Caption ); //Set the caption of the window
|
|
void SaveWindowLoc ( void );
|
|
|
|
//Menu Function
|
|
void SetWindowMenu ( CBaseMenu * Menu );
|
|
void RefreshMenu ( void );
|
|
CBaseMenu * GetMenuClass ( void ) { return m_Menu; }
|
|
|
|
// Status bar
|
|
void SetStatusText ( int Panel,const char * Text );
|
|
void ShowStatusBar ( bool ShowBar );
|
|
|
|
//About Window
|
|
void AboutIniBox ( void );
|
|
void AboutBox ( void );
|
|
|
|
//Plugins
|
|
bool InitiatePlugins ( void );
|
|
|
|
//Get Window Handle
|
|
inline WND_HANDLE GetHandle ( void ) const { return m_hMainWindow; }
|
|
|
|
};
|