Added items remotely

D:\Projects\VisualBoy Advance-M-1.8.0 source\src\win32\AccelEditor.cpp
D:\Projects\VisualBoy Advance-M-1.8.0 source\src\win32\CmdAccelOb.cpp
D:\Projects\VisualBoy Advance-M-1.8.0 source\src\win32\Direct3D.cpp
D:\Projects\VisualBoy Advance-M-1.8.0 source\src\win32\MainWnd.cpp
D:\Projects\VisualBoy Advance-M-1.8.0 source\src\win32\OpenGL.cpp
D:\Projects\VisualBoy Advance-M-1.8.0 source\src\win32\VBA.cpp
D:\Projects\VisualBoy Advance-M-1.8.0 source\src\win32\VBA.h
D:\Projects\VisualBoy Advance-M-1.8.0 source\src\win32\VBA.rc


git-svn-id: https://svn.code.sf.net/p/vbam/code/trunk@428 a31d4220-a93d-0410-bf67-fe4944624d44
This commit is contained in:
squall_leonhart69r 2008-02-29 04:03:07 +00:00
parent 6769e79df8
commit 57d6e2053b
1 changed files with 527 additions and 0 deletions

527
src/win32/CmdAccelOb.cpp Normal file
View File

@ -0,0 +1,527 @@
////////////////////////////////////////////////////////////////////////////////
// Copyright (C) 1998 by Thierry Maurel
// All rights reserved
//
// Distribute freely, except: don't remove my name from the source or
// documentation (don't take credit for my work), mark your changes (don't
// get me blamed for your possible bugs), don't alter or remove this
// notice.
// No warrantee of any kind, express or implied, is included with this
// software; use at your own risk, responsibility for damages (if any) to
// anyone resulting from the use of this software rests entirely with the
// user.
//
// Send bug reports, bug fixes, enhancements, requests, flames, etc., and
// I'll try to keep a version up to date. I can be reached as follows:
// tmaurel@caramail.com (or tmaurel@hol.fr)
//
////////////////////////////////////////////////////////////////////////////////
// File : CmdAccelOb.cpp
// Project : AccelsEditor
////////////////////////////////////////////////////////////////////////////////
// Version : 1.0 * Author : T.Maurel
// Date : 17.08.98
//
// Remarks :
//
////////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "CmdAccelOb.h"
////////////////////////////////////////////////////////////////////////
//
//
MAPVIRTKEYS mapVirtKeys[] = {
{VK_LBUTTON, "VK_LBUTTON"},
{VK_RBUTTON, "VK_RBUTTON"},
{VK_CANCEL, "VK_CANCEL"},
{VK_MBUTTON, "VK_MBUTTON"},
{VK_BACK, "BACK"},
{VK_TAB, "TAB"},
{VK_CLEAR, "VK_CLEAR"},
{VK_RETURN, "RETURN"},
{VK_SHIFT, "SHIFT"},
{VK_CONTROL, "CONTROL"},
{VK_MENU, "MENU"},
{VK_PAUSE, "PAUSE"},
{VK_CAPITAL, "CAPITAL"},
{VK_ESCAPE, "ESCAPE"},
{VK_SPACE, "SPACE"},
{VK_PRIOR, "PRIOR"},
{VK_NEXT, "NEXT"},
{VK_END, "END"},
{VK_HOME, "HOME"},
{VK_LEFT, "LEFT"},
{VK_UP, "UP"},
{VK_RIGHT, "RIGHT"},
{VK_DOWN, "DOWN"},
{VK_SELECT, "VK_SELECT"},
{VK_PRINT, "PRINT"},
{VK_EXECUTE, "EXECUTE"},
{VK_SNAPSHOT, "SNAPSHOT"},
{VK_INSERT, "INSERT"},
{VK_DELETE, "DELETE"},
{VK_HELP, "VK_HELP"},
{WORD('0'), "0"},
{WORD('1'), "1"},
{WORD('2'), "2"},
{WORD('3'), "3"},
{WORD('4'), "4"},
{WORD('5'), "5"},
{WORD('6'), "6"},
{WORD('7'), "7"},
{WORD('8'), "8"},
{WORD('9'), "9"},
{WORD('A'), "A"},
{WORD('B'), "B"},
{WORD('C'), "C"},
{WORD('D'), "D"},
{WORD('E'), "E"},
{WORD('F'), "F"},
{WORD('G'), "G"},
{WORD('H'), "H"},
{WORD('I'), "I"},
{WORD('J'), "J"},
{WORD('K'), "K"},
{WORD('L'), "L"},
{WORD('M'), "M"},
{WORD('N'), "N"},
{WORD('O'), "O"},
{WORD('P'), "P"},
{WORD('Q'), "Q"},
{WORD('R'), "R"},
{WORD('S'), "S"},
{WORD('T'), "T"},
{WORD('U'), "U"},
{WORD('V'), "V"},
{WORD('W'), "W"},
{WORD('X'), "X"},
{WORD('Y'), "Y"},
{WORD('Z'), "Z"},
{VK_LWIN, "VK_LWIN"},
{VK_RWIN, "VK_RWIN"},
{VK_APPS, "VK_APPS"},
{VK_NUMPAD0, "NUMPAD0"},
{VK_NUMPAD1, "NUMPAD1"},
{VK_NUMPAD2, "NUMPAD2"},
{VK_NUMPAD3, "NUMPAD3"},
{VK_NUMPAD4, "NUMPAD4"},
{VK_NUMPAD5, "NUMPAD5"},
{VK_NUMPAD6, "NUMPAD6"},
{VK_NUMPAD7, "NUMPAD7"},
{VK_NUMPAD8, "NUMPAD8"},
{VK_NUMPAD9, "NUMPAD9"},
{VK_MULTIPLY, "MULTIPLY"},
{VK_ADD, "ADD"},
{VK_SEPARATOR, "SEPARATOR"},
{VK_SUBTRACT, "SUBTRACT"},
{VK_DECIMAL, "DECIMAL"},
{VK_DIVIDE, "DIVIDE"},
{VK_F1, "F1"},
{VK_F2, "F2"},
{VK_F3, "F3"},
{VK_F4, "F4"},
{VK_F5, "F5"},
{VK_F6, "F6"},
{VK_F7, "F7"},
{VK_F8, "F8"},
{VK_F9, "F9"},
{VK_F10, "F10"},
{VK_F11, "F11"},
{VK_F12, "F12"},
{VK_F13, "F13"},
{VK_F14, "F14"},
{VK_F15, "F15"},
{VK_F16, "F16"},
{VK_F17, "F17"},
{VK_F18, "F18"},
{VK_F19, "F19"},
{VK_F20, "F20"},
{VK_F21, "F21"},
{VK_F22, "F22"},
{VK_F23, "F23"},
{VK_F24, "F24"},
{VK_NUMLOCK, "NUMLOCK"},
{VK_SCROLL, "VK_SCROLL"},
{VK_ATTN, "VK_ATTN"},
{VK_CRSEL, "VK_CRSEL"},
{VK_EXSEL, "VK_EXSEL"},
{VK_EREOF, "VK_EREOF"},
{VK_PLAY, "VK_PLAY"},
{VK_ZOOM, "VK_ZOOM"},
{VK_NONAME, "VK_NONAME"},
{VK_PA1, "VK_PA1"},
{VK_OEM_CLEAR, "VK_OEM_CLEAR"},
};
////////////////////////////////////////////////////////////////////////
//
//
MAPVIRTKEYS mapVirtSysKeys[] = {
{FCONTROL, "Ctrl"},
{FALT, "Alt"},
{FSHIFT, "Shift"},
};
////////////////////////////////////////////////////////////////////////
// helper fct for external access
////////////////////////////////////////////////////////////////////////
//
//
TCHAR* mapVirtKeysStringFromWORD(WORD wKey)
{
for (int index = 0; index < sizeof(mapVirtKeys)/sizeof(mapVirtKeys[0]); index++) {
if (mapVirtKeys[index].wKey == wKey)
return mapVirtKeys[index].szKey;
}
return NULL;
}
////////////////////////////////////////////////////////////////////////
//
#define DEFAULT_ACCEL 0x01
#define USER_ACCEL 0x02
////////////////////////////////////////////////////////////////////////
//
////////////////////////////////////////////////////////////////////////
//
//
CAccelsOb::CAccelsOb()
{
m_cVirt = 0;
m_wKey = 0;
m_bLocked = false;
}
////////////////////////////////////////////////////////////////////////
//
//
CAccelsOb::CAccelsOb(CAccelsOb* pFrom)
{
ASSERT(pFrom != NULL);
m_cVirt = pFrom->m_cVirt;
m_wKey = pFrom->m_wKey;
m_bLocked = pFrom->m_bLocked;
}
////////////////////////////////////////////////////////////////////////
//
//
CAccelsOb::CAccelsOb(BYTE cVirt, WORD wKey, bool bLocked)
{
m_cVirt = cVirt;
m_wKey = wKey;
m_bLocked = bLocked;
}
////////////////////////////////////////////////////////////////////////
//
//
CAccelsOb::CAccelsOb(LPACCEL pACCEL)
{
ASSERT(pACCEL != NULL);
m_cVirt = pACCEL->fVirt;
m_wKey = pACCEL->key;
m_bLocked = false;
}
////////////////////////////////////////////////////////////////////////
//
//
CAccelsOb& CAccelsOb::operator=(const CAccelsOb& from)
{
m_cVirt = from.m_cVirt;
m_wKey = from.m_wKey;
m_bLocked = from.m_bLocked;
return *this;
}
////////////////////////////////////////////////////////////////////////
//
////////////////////////////////////////////////////////////////////////
//
//
void CAccelsOb::GetString(CString& szBuffer)
{
szBuffer = "";
// in case of the object is not assigned, we avoid error messages
if (m_wKey == 0)
return;
// modifiers part
int i;
for (i = 0; i < sizetable(mapVirtSysKeys); i++) {
if (m_cVirt & mapVirtSysKeys[i].wKey) {
szBuffer += mapVirtSysKeys[i].szKey;
szBuffer += "+";
}
}
// and virtual key part
for (i = 0; i < sizetable(mapVirtKeys); i++) {
if (m_wKey == mapVirtKeys[i].wKey) {
szBuffer += mapVirtKeys[i].szKey;
return;
}
}
AfxMessageBox("Internal error : (CAccelsOb::GetString) m_wKey invalid");
}
////////////////////////////////////////////////////////////////////////
//
//
bool CAccelsOb::IsEqual(WORD wKey, bool bCtrl, bool bAlt, bool bShift)
{
// CString szTemp;
// GetString(szTemp);
bool m_bCtrl = (m_cVirt & FCONTROL) ? true : false;
bool bRet = (bCtrl == m_bCtrl);
bool m_bAlt = (m_cVirt & FALT) ? true : false;
bRet &= (bAlt == m_bAlt);
bool m_bShift = (m_cVirt & FSHIFT) ? true : false;
bRet &= (bShift == m_bShift);
bRet &= static_cast<bool>(m_wKey == wKey);
return bRet;
}
////////////////////////////////////////////////////////////////////////
//
//
DWORD CAccelsOb::GetData()
{
BYTE cLocalCodes = 0;
if (m_bLocked)
cLocalCodes = DEFAULT_ACCEL;
else
cLocalCodes = USER_ACCEL;
WORD bCodes = MAKEWORD(m_cVirt, cLocalCodes);
return MAKELONG(m_wKey, bCodes);
}
////////////////////////////////////////////////////////////////////////
//
//
bool CAccelsOb::SetData(DWORD dwDatas)
{
m_wKey = LOWORD(dwDatas);
WORD bCodes = HIWORD(dwDatas);
m_cVirt = LOBYTE(bCodes);
BYTE cLocalCodes = HIBYTE(bCodes);
m_bLocked = static_cast<bool>(cLocalCodes == DEFAULT_ACCEL);
return true;
}
////////////////////////////////////////////////////////////////////////
//
#ifdef _DEBUG
////////////////////////////////////////////////////////////////////////
//
//
void CAccelsOb::AssertValid() const
{
CObject::AssertValid();
}
////////////////////////////////////////////////////////////////////////
//
//
void CAccelsOb::Dump(CDumpContext& dc) const
{
dc << "\t\t";
CObject::Dump(dc);
dc << "\t\tlocked=" << m_bLocked << ", cVirt=" << m_cVirt << ", wKey=" << m_wKey << "\n\n";
}
#endif
////////////////////////////////////////////////////////////////////////
//
////////////////////////////////////////////////////////////////////////
//
//
CCmdAccelOb::CCmdAccelOb()
{
}
////////////////////////////////////////////////////////////////////////
//
//
CCmdAccelOb::CCmdAccelOb(WORD wIDCommand, LPCTSTR szCommand)
{
ASSERT(szCommand != NULL);
m_wIDCommand = wIDCommand;
m_szCommand = szCommand;
}
////////////////////////////////////////////////////////////////////////
//
//
CCmdAccelOb::CCmdAccelOb(BYTE cVirt, WORD wIDCommand, WORD wKey, LPCTSTR szCommand, bool bLocked)
{
ASSERT(szCommand != NULL);
m_wIDCommand = wIDCommand;
m_szCommand = szCommand;
CAccelsOb* pAccel = DEBUG_NEW CAccelsOb(cVirt, wKey, bLocked);
ASSERT(pAccel != NULL);
m_Accels.AddTail(pAccel);
}
////////////////////////////////////////////////////////////////////////
//
//
CCmdAccelOb::~CCmdAccelOb()
{
POSITION pos = m_Accels.GetHeadPosition();
while (pos != NULL)
delete m_Accels.GetNext(pos);
m_Accels.RemoveAll();
}
////////////////////////////////////////////////////////////////////////
//
////////////////////////////////////////////////////////////////////////
//
//
void CCmdAccelOb::Add(BYTE cVirt, WORD wKey, bool bLocked)
{
CAccelsOb* pAccel = DEBUG_NEW CAccelsOb(cVirt, wKey, bLocked);
ASSERT(pAccel != NULL);
m_Accels.AddTail(pAccel);
}
////////////////////////////////////////////////////////////////////////
//
//
void CCmdAccelOb::Add(CAccelsOb* pAccel)
{
ASSERT(pAccel != NULL);
m_Accels.AddTail(pAccel);
}
////////////////////////////////////////////////////////////////////////
//
//
CCmdAccelOb& CCmdAccelOb::operator=(const CCmdAccelOb& from)
{
Reset();
m_wIDCommand = from.m_wIDCommand;
m_szCommand = from.m_szCommand;
CAccelsOb* pAccel;
POSITION pos = from.m_Accels.GetHeadPosition();
while (pos != NULL) {
pAccel = DEBUG_NEW CAccelsOb(from.m_Accels.GetNext(pos));
ASSERT(pAccel != NULL);
m_Accels.AddTail(pAccel);
}
return *this;
}
////////////////////////////////////////////////////////////////////////
//
//
void CCmdAccelOb::DeleteUserAccels()
{
CAccelsOb* pAccel;
POSITION prevPos;
POSITION pos = m_Accels.GetHeadPosition();
while (pos != NULL) {
prevPos = pos;
pAccel = m_Accels.GetNext(pos);
if (!pAccel->m_bLocked) {
delete pAccel;
m_Accels.RemoveAt(prevPos);
}
}
}
////////////////////////////////////////////////////////////////////////
//
//
void CCmdAccelOb::Reset()
{
m_wIDCommand = 0;
m_szCommand = "Empty command";
CAccelsOb* pAccel;
POSITION pos = m_Accels.GetHeadPosition();
while (pos != NULL) {
pAccel = m_Accels.GetNext(pos);
delete pAccel;
}
}
////////////////////////////////////////////////////////////////////////
//
#ifdef _DEBUG
////////////////////////////////////////////////////////////////////////
//
//
void CCmdAccelOb::AssertValid() const
{
// call base class function first
CObject::AssertValid();
}
////////////////////////////////////////////////////////////////////////
//
//
void CCmdAccelOb::Dump( CDumpContext& dc ) const
{
// call base class function first
dc << "\t";
CObject::Dump( dc );
// now do the stuff for our specific class
dc << "\tIDCommand = " << m_wIDCommand;
dc << "\n\tszCommand = " << m_szCommand;
dc << "\n\tAccelerators = {\n";
CAccelsOb* pAccel;
POSITION pos = m_Accels.GetHeadPosition();
while (pos != NULL) {
pAccel = m_Accels.GetNext(pos);
dc << pAccel;
}
dc << "\t}\n";
}
#endif