/*
* $Id$
*
* (C) 2003-2006 Gabest
* (C) 2006-2010 see AUTHORS
*
* This file is part of mplayerc.
*
* Mplayerc is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* Mplayerc is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*
*/
#include "stdafx.h"
#include "mplayerc.h"
#include "PPageAccelTbl.h"
struct APP_COMMAND
{
UINT appcmd;
LPCTSTR cmdname;
};
APP_COMMAND g_CommandList[] =
{
{0, _T("")},
{APPCOMMAND_BROWSER_BACKWARD, _T("BROWSER_BACKWARD")},
{APPCOMMAND_BROWSER_FORWARD, _T("BROWSER_FORWARD")},
{APPCOMMAND_BROWSER_REFRESH, _T("BROWSER_REFRESH")},
{APPCOMMAND_BROWSER_STOP, _T("BROWSER_STOP")},
{APPCOMMAND_BROWSER_SEARCH, _T("BROWSER_SEARCH")},
{APPCOMMAND_BROWSER_FAVORITES, _T("BROWSER_FAVORITES")},
{APPCOMMAND_BROWSER_HOME, _T("BROWSER_HOME")},
{APPCOMMAND_VOLUME_MUTE, _T("VOLUME_MUTE")},
{APPCOMMAND_VOLUME_DOWN, _T("VOLUME_DOWN")},
{APPCOMMAND_VOLUME_UP, _T("VOLUME_UP")},
{APPCOMMAND_MEDIA_NEXTTRACK, _T("MEDIA_NEXTTRACK")},
{APPCOMMAND_MEDIA_PREVIOUSTRACK, _T("MEDIA_PREVIOUSTRACK")},
{APPCOMMAND_MEDIA_STOP, _T("MEDIA_STOP")},
{APPCOMMAND_MEDIA_PLAY_PAUSE, _T("MEDIA_PLAY_PAUSE")},
{APPCOMMAND_LAUNCH_MAIL, _T("LAUNCH_MAIL")},
{APPCOMMAND_LAUNCH_MEDIA_SELECT, _T("LAUNCH_MEDIA_SELECT")},
{APPCOMMAND_LAUNCH_APP1, _T("LAUNCH_APP1")},
{APPCOMMAND_LAUNCH_APP2, _T("LAUNCH_APP2")},
{APPCOMMAND_BASS_DOWN, _T("BASS_DOWN")},
{APPCOMMAND_BASS_BOOST, _T("BASS_BOOST")},
{APPCOMMAND_BASS_UP, _T("BASS_UP")},
{APPCOMMAND_TREBLE_DOWN, _T("TREBLE_DOWN")},
{APPCOMMAND_TREBLE_UP, _T("TREBLE_UP")},
{APPCOMMAND_MICROPHONE_VOLUME_MUTE, _T("MICROPHONE_VOLUME_MUTE")},
{APPCOMMAND_MICROPHONE_VOLUME_DOWN, _T("MICROPHONE_VOLUME_DOWN")},
{APPCOMMAND_MICROPHONE_VOLUME_UP, _T("MICROPHONE_VOLUME_UP")},
{APPCOMMAND_HELP, _T("HELP")},
{APPCOMMAND_FIND, _T("FIND")},
{APPCOMMAND_NEW, _T("NEW")},
{APPCOMMAND_OPEN, _T("OPEN")},
{APPCOMMAND_CLOSE, _T("CLOSE")},
{APPCOMMAND_SAVE, _T("SAVE")},
{APPCOMMAND_PRINT, _T("PRINT")},
{APPCOMMAND_UNDO, _T("UNDO")},
{APPCOMMAND_REDO, _T("REDO")},
{APPCOMMAND_COPY, _T("COPY")},
{APPCOMMAND_CUT, _T("CUT")},
{APPCOMMAND_PASTE, _T("PASTE")},
{APPCOMMAND_REPLY_TO_MAIL, _T("REPLY_TO_MAIL")},
{APPCOMMAND_FORWARD_MAIL, _T("FORWARD_MAIL")},
{APPCOMMAND_SEND_MAIL, _T("SEND_MAIL")},
{APPCOMMAND_SPELL_CHECK, _T("SPELL_CHECK")},
{APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE, _T("DICTATE_OR_COMMAND_CONTROL_TOGGLE")},
{APPCOMMAND_MIC_ON_OFF_TOGGLE, _T("MIC_ON_OFF_TOGGLE")},
{APPCOMMAND_CORRECTION_LIST, _T("CORRECTION_LIST")},
{APPCOMMAND_MEDIA_PLAY, _T("MEDIA_PLAY")},
{APPCOMMAND_MEDIA_PAUSE, _T("MEDIA_PAUSE")},
{APPCOMMAND_MEDIA_RECORD, _T("MEDIA_RECORD")},
{APPCOMMAND_MEDIA_FAST_FORWARD, _T("MEDIA_FAST_FORWARD")},
{APPCOMMAND_MEDIA_REWIND, _T("MEDIA_REWIND")},
{APPCOMMAND_MEDIA_CHANNEL_UP, _T("MEDIA_CHANNEL_UP")},
{APPCOMMAND_MEDIA_CHANNEL_DOWN, _T("MEDIA_CHANNEL_DOWN")},
{APPCOMMAND_DELETE, _T("DELETE")},
{APPCOMMAND_DWM_FLIP3D, _T("DWM_FLIP3D")},
{MCE_DETAILS, _T("MCE_DETAILS")},
{MCE_GUIDE, _T("MCE_GUIDE")},
{MCE_TVJUMP, _T("MCE_TVJUMP")},
{MCE_STANDBY, _T("MCE_STANDBY")},
{MCE_OEM1, _T("MCE_OEM1")},
{MCE_OEM2, _T("MCE_OEM2")},
{MCE_MYTV, _T("MCE_MYTV")},
{MCE_MYVIDEOS, _T("MCE_MYVIDEOS")},
{MCE_MYPICTURES, _T("MCE_MYPICTURES")},
{MCE_MYMUSIC, _T("MCE_MYMUSIC")},
{MCE_RECORDEDTV, _T("MCE_RECORDEDTV")},
{MCE_DVDANGLE, _T("MCE_DVDANGLE")},
{MCE_DVDAUDIO, _T("MCE_DVDAUDIO")},
{MCE_DVDMENU, _T("MCE_DVDMENU")},
{MCE_DVDSUBTITLE, _T("MCE_DVDSUBTITLE")},
{MCE_RED, _T("MCE_RED")},
{MCE_GREEN, _T("MCE_GREEN")},
{MCE_YELLOW, _T("MCE_YELLOW")},
{MCE_BLUE, _T("MCE_BLUE")},
{MCE_MEDIA_NEXTTRACK, _T("MCE_MEDIA_NEXTTRACK")},
{MCE_MEDIA_PREVIOUSTRACK, _T("MCE_MEDIA_PREVIOUSTRACK")}
};
// CPPageAccelTbl dialog
IMPLEMENT_DYNAMIC(CPPageAccelTbl, CPPageBase)
CPPageAccelTbl::CPPageAccelTbl()
: CPPageBase(CPPageAccelTbl::IDD, CPPageAccelTbl::IDD)
, m_list(0)
, m_counter(0)
, m_fWinLirc(FALSE)
, m_WinLircLink(_T("http://winlirc.sourceforge.net/"))
, m_fUIce(FALSE)
, m_UIceLink(_T("http://www.mediatexx.com/"))
, m_fGlobalMedia(FALSE)
{
}
CPPageAccelTbl::~CPPageAccelTbl()
{
}
BOOL CPPageAccelTbl::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN
&& (pMsg->hwnd == m_WinLircEdit.m_hWnd || pMsg->hwnd == m_UIceEdit.m_hWnd))
{
OnApply();
return TRUE;
}
return __super::PreTranslateMessage(pMsg);
}
void CPPageAccelTbl::SetupList()
{
for(int row = 0; row < m_list.GetItemCount(); row++)
{
wmcmd& wc = m_wmcmds.GetAt((POSITION)m_list.GetItemData(row));
CString mod = MakeAccelModLabel(wc.fVirt);
m_list.SetItemText(row, COL_MOD, mod);
CString key = MakeAccelVkeyLabel(wc.key, wc.fVirt&FVIRTKEY);
m_list.SetItemText(row, COL_KEY, key);
CString type = (wc.fVirt&FVIRTKEY)?_T("VIRTKEY"):_T("ASCII");
m_list.SetItemText(row, COL_TYPE, type);
CString id;
id.Format(_T("%d"), wc.cmd);
m_list.SetItemText(row, COL_ID, id);
m_list.SetItemText(row, COL_MOUSE, MakeMouseButtonLabel(wc.mouse));
m_list.SetItemText(row, COL_APPCMD, MakeAppCommandLabel(wc.appcmd));
m_list.SetItemText(row, COL_RMCMD, CString(wc.rmcmd));
CString repcnt;
repcnt.Format(_T("%d"), wc.rmrepcnt);
m_list.SetItemText(row, COL_RMREPCNT, repcnt);
}
}
CString CPPageAccelTbl::MakeAccelModLabel(BYTE fVirt)
{
CString str;
if(fVirt&FCONTROL)
{
if(!str.IsEmpty()) str += _T(" + ");
str += _T("Ctrl");
}
if(fVirt&FALT)
{
if(!str.IsEmpty()) str += _T(" + ");
str += _T("Alt");
}
if(fVirt&FSHIFT)
{
if(!str.IsEmpty()) str += _T(" + ");
str += _T("Shift");
}
if(str.IsEmpty()) str = ResStr(IDS_AG_NONE);
return(str);
}
CString CPPageAccelTbl::MakeAccelVkeyLabel(WORD key, bool fVirtKey)
{
// Reference page for Virtual-Key Codes: http://msdn.microsoft.com/en-us/library/ms645540
CString str;
switch(key)
{
case VK_LBUTTON:
str = _T("VK_LBUTTON");
break;
case VK_RBUTTON:
str = _T("VK_RBUTTON");
break;
case VK_CANCEL:
str = _T("VK_CANCEL");
break;
case VK_MBUTTON:
str = _T("VK_MBUTTON");
break;
case VK_XBUTTON1:
str = _T("VK_XBUTTON1");
break;
case VK_XBUTTON2:
str = _T("VK_XBUTTON2");
break;
case VK_BACK:
str = _T("VK_BACK");
break;
case VK_TAB:
str = _T("VK_TAB");
break;
case VK_CLEAR:
str = _T("VK_CLEAR");
break;
case VK_RETURN:
str = _T("VK_RETURN");
break;
case VK_SHIFT:
str = _T("VK_SHIFT");
break;
case VK_CONTROL:
str = _T("VK_CONTROL");
break;
case VK_MENU:
str = _T("VK_MENU");
break;
case VK_PAUSE:
str = _T("VK_PAUSE");
break;
case VK_CAPITAL:
str = _T("VK_CAPITAL");
break;
// case VK_KANA: str = _T("VK_KANA"); break;
// case VK_HANGEUL: str = _T("VK_HANGEUL"); break;
case VK_HANGUL:
str = _T("VK_HANGUL");
break;
case VK_JUNJA:
str = _T("VK_JUNJA");
break;
case VK_FINAL:
str = _T("VK_FINAL");
break;
// case VK_HANJA: str = _T("VK_HANJA"); break;
case VK_KANJI:
str = _T("VK_KANJI");
break;
case VK_ESCAPE:
str = _T("VK_ESCAPE");
break;
case VK_CONVERT:
str = _T("VK_CONVERT");
break;
case VK_NONCONVERT:
str = _T("VK_NONCONVERT");
break;
case VK_ACCEPT:
str = _T("VK_ACCEPT");
break;
case VK_MODECHANGE:
str = _T("VK_MODECHANGE");
break;
case VK_SPACE:
str = _T("VK_SPACE");
break;
case VK_PRIOR:
str = _T("VK_PRIOR");
break;
case VK_NEXT:
str = _T("VK_NEXT");
break;
case VK_END:
str = _T("VK_END");
break;
case VK_HOME:
str = _T("VK_HOME");
break;
case VK_LEFT:
str = _T("VK_LEFT");
break;
case VK_UP:
str = _T("VK_UP");
break;
case VK_RIGHT:
str = _T("VK_RIGHT");
break;
case VK_DOWN:
str = _T("VK_DOWN");
break;
case VK_SELECT:
str = _T("VK_SELECT");
break;
case VK_PRINT:
str = _T("VK_PRINT");
break;
case VK_EXECUTE:
str = _T("VK_EXECUTE");
break;
case VK_SNAPSHOT:
str = _T("VK_SNAPSHOT");
break;
case VK_INSERT:
str = _T("VK_INSERT");
break;
case VK_DELETE:
str = _T("VK_DELETE");
break;
case VK_HELP:
str = _T("VK_HELP");
break;
case VK_LWIN:
str = _T("VK_LWIN");
break;
case VK_RWIN:
str = _T("VK_RWIN");
break;
case VK_APPS:
str = _T("VK_APPS");
break;
case VK_SLEEP:
str = _T("VK_SLEEP");
break;
case VK_NUMPAD0:
str = _T("VK_NUMPAD0");
break;
case VK_NUMPAD1:
str = _T("VK_NUMPAD1");
break;
case VK_NUMPAD2:
str = _T("VK_NUMPAD2");
break;
case VK_NUMPAD3:
str = _T("VK_NUMPAD3");
break;
case VK_NUMPAD4:
str = _T("VK_NUMPAD4");
break;
case VK_NUMPAD5:
str = _T("VK_NUMPAD5");
break;
case VK_NUMPAD6:
str = _T("VK_NUMPAD6");
break;
case VK_NUMPAD7:
str = _T("VK_NUMPAD7");
break;
case VK_NUMPAD8:
str = _T("VK_NUMPAD8");
break;
case VK_NUMPAD9:
str = _T("VK_NUMPAD9");
break;
case VK_MULTIPLY:
str = _T("VK_MULTIPLY");
break;
case VK_ADD:
str = _T("VK_ADD");
break;
case VK_SEPARATOR:
str = _T("VK_SEPARATOR");
break;
case VK_SUBTRACT:
str = _T("VK_SUBTRACT");
break;
case VK_DECIMAL:
str = _T("VK_DECIMAL");
break;
case VK_DIVIDE:
str = _T("VK_DIVIDE");
break;
case VK_F1:
str = _T("VK_F1");
break;
case VK_F2:
str = _T("VK_F2");
break;
case VK_F3:
str = _T("VK_F3");
break;
case VK_F4:
str = _T("VK_F4");
break;
case VK_F5:
str = _T("VK_F5");
break;
case VK_F6:
str = _T("VK_F6");
break;
case VK_F7:
str = _T("VK_F7");
break;
case VK_F8:
str = _T("VK_F8");
break;
case VK_F9:
str = _T("VK_F9");
break;
case VK_F10:
str = _T("VK_F10");
break;
case VK_F11:
str = _T("VK_F11");
break;
case VK_F12:
str = _T("VK_F12");
break;
case VK_F13:
str = _T("VK_F13");
break;
case VK_F14:
str = _T("VK_F14");
break;
case VK_F15:
str = _T("VK_F15");
break;
case VK_F16:
str = _T("VK_F16");
break;
case VK_F17:
str = _T("VK_F17");
break;
case VK_F18:
str = _T("VK_F18");
break;
case VK_F19:
str = _T("VK_F19");
break;
case VK_F20:
str = _T("VK_F20");
break;
case VK_F21:
str = _T("VK_F21");
break;
case VK_F22:
str = _T("VK_F22");
break;
case VK_F23:
str = _T("VK_F23");
break;
case VK_F24:
str = _T("VK_F24");
break;
case VK_NUMLOCK:
str = _T("VK_NUMLOCK");
break;
case VK_SCROLL:
str = _T("VK_SCROLL");
break;
// case VK_OEM_NEC_EQUAL: str = _T("VK_OEM_NEC_EQUAL"); break;
case VK_OEM_FJ_JISHO:
str = _T("VK_OEM_FJ_JISHO");
break;
case VK_OEM_FJ_MASSHOU:
str = _T("VK_OEM_FJ_MASSHOU");
break;
case VK_OEM_FJ_TOUROKU:
str = _T("VK_OEM_FJ_TOUROKU");
break;
case VK_OEM_FJ_LOYA:
str = _T("VK_OEM_FJ_LOYA");
break;
case VK_OEM_FJ_ROYA:
str = _T("VK_OEM_FJ_ROYA");
break;
case VK_LSHIFT:
str = _T("VK_LSHIFT");
break;
case VK_RSHIFT:
str = _T("VK_RSHIFT");
break;
case VK_LCONTROL:
str = _T("VK_LCONTROL");
break;
case VK_RCONTROL:
str = _T("VK_RCONTROL");
break;
case VK_LMENU:
str = _T("VK_LMENU");
break;
case VK_RMENU:
str = _T("VK_RMENU");
break;
case VK_BROWSER_BACK:
str = _T("VK_BROWSER_BACK");
break;
case VK_BROWSER_FORWARD:
str = _T("VK_BROWSER_FORWARD");
break;
case VK_BROWSER_REFRESH:
str = _T("VK_BROWSER_REFRESH");
break;
case VK_BROWSER_STOP:
str = _T("VK_BROWSER_STOP");
break;
case VK_BROWSER_SEARCH:
str = _T("VK_BROWSER_SEARCH");
break;
case VK_BROWSER_FAVORITES:
str = _T("VK_BROWSER_FAVORITES");
break;
case VK_BROWSER_HOME:
str = _T("VK_BROWSER_HOME");
break;
case VK_VOLUME_MUTE:
str = _T("VK_VOLUME_MUTE");
break;
case VK_VOLUME_DOWN:
str = _T("VK_VOLUME_DOWN");
break;
case VK_VOLUME_UP:
str = _T("VK_VOLUME_UP");
break;
case VK_MEDIA_NEXT_TRACK:
str = _T("VK_MEDIA_NEXT_TRACK");
break;
case VK_MEDIA_PREV_TRACK:
str = _T("VK_MEDIA_PREV_TRACK");
break;
case VK_MEDIA_STOP:
str = _T("VK_MEDIA_STOP");
break;
case VK_MEDIA_PLAY_PAUSE:
str = _T("VK_MEDIA_PLAY_PAUSE");
break;
case VK_LAUNCH_MAIL:
str = _T("VK_LAUNCH_MAIL");
break;
case VK_LAUNCH_MEDIA_SELECT:
str = _T("VK_LAUNCH_MEDIA_SELECT");
break;
case VK_LAUNCH_APP1:
str = _T("VK_LAUNCH_APP1");
break;
case VK_LAUNCH_APP2:
str = _T("VK_LAUNCH_APP2");
break;
case VK_OEM_1:
str = _T("VK_OEM_1");
break;
case VK_OEM_PLUS:
str = _T("VK_OEM_PLUS");
break;
case VK_OEM_COMMA:
str = _T("VK_OEM_COMMA");
break;
case VK_OEM_MINUS:
str = _T("VK_OEM_MINUS");
break;
case VK_OEM_PERIOD:
str = _T("VK_OEM_PERIOD");
break;
case VK_OEM_2:
str = _T("VK_OEM_2");
break;
case VK_OEM_3:
str = _T("VK_OEM_3");
break;
case VK_OEM_4:
str = _T("VK_OEM_4");
break;
case VK_OEM_5:
str = _T("VK_OEM_5");
break;
case VK_OEM_6:
str = _T("VK_OEM_6");
break;
case VK_OEM_7:
str = _T("VK_OEM_7");
break;
case VK_OEM_8:
str = _T("VK_OEM_8");
break;
case VK_OEM_AX:
str = _T("VK_OEM_AX");
break;
case VK_OEM_102:
str = _T("VK_OEM_102");
break;
case VK_ICO_HELP:
str = _T("VK_ICO_HELP");
break;
case VK_ICO_00:
str = _T("VK_ICO_00");
break;
case VK_PROCESSKEY:
str = _T("VK_PROCESSKEY");
break;
case VK_ICO_CLEAR:
str = _T("VK_ICO_CLEAR");
break;
case VK_PACKET:
str = _T("VK_PACKET");
break;
case VK_OEM_RESET:
str = _T("VK_OEM_RESET");
break;
case VK_OEM_JUMP:
str = _T("VK_OEM_JUMP");
break;
case VK_OEM_PA1:
str = _T("VK_OEM_PA1");
break;
case VK_OEM_PA2:
str = _T("VK_OEM_PA2");
break;
case VK_OEM_PA3:
str = _T("VK_OEM_PA3");
break;
case VK_OEM_WSCTRL:
str = _T("VK_OEM_WSCTRL");
break;
case VK_OEM_CUSEL:
str = _T("VK_OEM_CUSEL");
break;
case VK_OEM_ATTN:
str = _T("VK_OEM_ATTN");
break;
case VK_OEM_FINISH:
str = _T("VK_OEM_FINISH");
break;
case VK_OEM_COPY:
str = _T("VK_OEM_COPY");
break;
case VK_OEM_AUTO:
str = _T("VK_OEM_AUTO");
break;
case VK_OEM_ENLW:
str = _T("VK_OEM_ENLW");
break;
case VK_OEM_BACKTAB:
str = _T("VK_OEM_BACKTAB");
break;
case VK_ATTN:
str = _T("VK_ATTN");
break;
case VK_CRSEL:
str = _T("VK_CRSEL");
break;
case VK_EXSEL:
str = _T("VK_EXSEL");
break;
case VK_EREOF:
str = _T("VK_EREOF");
break;
case VK_PLAY:
str = _T("VK_PLAY");
break;
case VK_ZOOM:
str = _T("VK_ZOOM");
break;
case VK_NONAME:
str = _T("VK_NONAME");
break;
case VK_PA1:
str = _T("VK_PA1");
break;
case VK_OEM_CLEAR:
str = _T("VK_OEM_CLEAR");
break;
case 0x07:
case 0x0E:
case 0x0F:
case 0x16:
case 0x1A:
case 0x3A:
case 0x3B:
case 0x3C:
case 0x3D:
case 0x3E:
case 0x3F:
case 0x40:
str.Format(_T("Undefined (0x%02x)"), (TCHAR)key);
break;
case 0x0A:
case 0x0B:
case 0x5E:
case 0xB8:
case 0xB9:
case 0xC1:
case 0xC2:
case 0xC3:
case 0xC4:
case 0xC5:
case 0xC6:
case 0xC7:
case 0xC8:
case 0xC9:
case 0xCA:
case 0xCB:
case 0xCC:
case 0xCD:
case 0xCE:
case 0xCF:
case 0xD0:
case 0xD1:
case 0xD2:
case 0xD3:
case 0xD4:
case 0xD5:
case 0xD6:
case 0xD7:
case 0xE0:
str.Format(_T("Reserved (0x%02x)"), (TCHAR)key);
break;
case 0x88:
case 0x89:
case 0x8A:
case 0x8B:
case 0x8C:
case 0x8D:
case 0x8E:
case 0x8F:
case 0x97:
case 0x98:
case 0x99:
case 0x9A:
case 0x9B:
case 0x9C:
case 0x9D:
case 0x9E:
case 0x9F:
case 0xD8:
case 0xD9:
case 0xDA:
case 0xE8:
str.Format(_T("Unassigned (0x%02x)"), (TCHAR)key);
break;
case 0xFF:
str = _T("Multimedia keys");
break;
default:
// if('0' <= key && key <= '9' || 'A' <= key && key <= 'Z')
str.Format(_T("%c"), (TCHAR)key);
break;
}
return(str);
}
CString CPPageAccelTbl::MakeAccelShortcutLabel(UINT id)
{
CList& wmcmds = AfxGetAppSettings().wmcmds;
POSITION pos = wmcmds.GetHeadPosition();
while(pos)
{
ACCEL& a = wmcmds.GetNext(pos);
if(a.cmd == id)
return(MakeAccelShortcutLabel(a));
}
return(_T(""));
}
CString CPPageAccelTbl::MakeAccelShortcutLabel(ACCEL& a)
{
// Reference page for Virtual-Key Codes: http://msdn.microsoft.com/en-us/library/ms645540
CString str;
switch(a.key)
{
case VK_LBUTTON:
str = _T("LBtn");
break;
case VK_RBUTTON:
str = _T("RBtn");
break;
case VK_CANCEL:
str = _T("Cancel");
break;
case VK_MBUTTON:
str = _T("MBtn");
break;
case VK_XBUTTON1:
str = _T("X1Btn");
break;
case VK_XBUTTON2:
str = _T("X2Btn");
break;
case VK_BACK:
str = _T("Back");
break;
case VK_TAB:
str = _T("Tab");
break;
case VK_CLEAR:
str = _T("Clear");
break;
case VK_RETURN:
str = _T("Return");
break;
case VK_SHIFT:
str = _T("Shift");
break;
case VK_CONTROL:
str = _T("Ctrl");
break;
case VK_MENU:
str = _T("Alt");
break;
case VK_PAUSE:
str = _T("Pause");
break;
case VK_CAPITAL:
str = _T("Capital");
break;
// case VK_KANA: str = _T("Kana"); break;
// case VK_HANGEUL: str = _T("Hangeul"); break;
case VK_HANGUL:
str = _T("Hangul");
break;
case VK_JUNJA:
str = _T("Junja");
break;
case VK_FINAL:
str = _T("Final");
break;
// case VK_HANJA: str = _T("Hanja"); break;
case VK_KANJI:
str = _T("Kanji");
break;
case VK_ESCAPE:
str = _T("Escape");
break;
case VK_CONVERT:
str = _T("Convert");
break;
case VK_NONCONVERT:
str = _T("Non Convert");
break;
case VK_ACCEPT:
str = _T("Accept");
break;
case VK_MODECHANGE:
str = _T("Mode Change");
break;
case VK_SPACE:
str = _T("Space");
break;
case VK_PRIOR:
str = _T("PgUp");
break;
case VK_NEXT:
str = _T("PgDn");
break;
case VK_END:
str = _T("End");
break;
case VK_HOME:
str = _T("Home");
break;
case VK_LEFT:
str = _T("Left");
break;
case VK_UP:
str = _T("Up");
break;
case VK_RIGHT:
str = _T("Right");
break;
case VK_DOWN:
str = _T("Down");
break;
case VK_SELECT:
str = _T("Select");
break;
case VK_PRINT:
str = _T("Print");
break;
case VK_EXECUTE:
str = _T("Execute");
break;
case VK_SNAPSHOT:
str = _T("Snapshot");
break;
case VK_INSERT:
str = _T("Insert");
break;
case VK_DELETE:
str = _T("Delete");
break;
case VK_HELP:
str = _T("Help");
break;
case VK_LWIN:
str = _T("LWin");
break;
case VK_RWIN:
str = _T("RWin");
break;
case VK_APPS:
str = _T("Apps");
break;
case VK_SLEEP:
str = _T("Sleep");
break;
case VK_NUMPAD0:
str = _T("Numpad 0");
break;
case VK_NUMPAD1:
str = _T("Numpad 1");
break;
case VK_NUMPAD2:
str = _T("Numpad 2");
break;
case VK_NUMPAD3:
str = _T("Numpad 3");
break;
case VK_NUMPAD4:
str = _T("Numpad 4");
break;
case VK_NUMPAD5:
str = _T("Numpad 5");
break;
case VK_NUMPAD6:
str = _T("Numpad 6");
break;
case VK_NUMPAD7:
str = _T("Numpad 7");
break;
case VK_NUMPAD8:
str = _T("Numpad 8");
break;
case VK_NUMPAD9:
str = _T("Numpad 9");
break;
case VK_MULTIPLY:
str = _T("Multiply");
break;
case VK_ADD:
str = _T("Add");
break;
case VK_SEPARATOR:
str = _T("Separator");
break;
case VK_SUBTRACT:
str = _T("Subtract");
break;
case VK_DECIMAL:
str = _T("Decimal");
break;
case VK_DIVIDE:
str = _T("Divide");
break;
case VK_F1:
str = _T("F1");
break;
case VK_F2:
str = _T("F2");
break;
case VK_F3:
str = _T("F3");
break;
case VK_F4:
str = _T("F4");
break;
case VK_F5:
str = _T("F5");
break;
case VK_F6:
str = _T("F6");
break;
case VK_F7:
str = _T("F7");
break;
case VK_F8:
str = _T("F8");
break;
case VK_F9:
str = _T("F9");
break;
case VK_F10:
str = _T("F10");
break;
case VK_F11:
str = _T("F11");
break;
case VK_F12:
str = _T("F12");
break;
case VK_F13:
str = _T("F13");
break;
case VK_F14:
str = _T("F14");
break;
case VK_F15:
str = _T("F15");
break;
case VK_F16:
str = _T("F16");
break;
case VK_F17:
str = _T("F17");
break;
case VK_F18:
str = _T("F18");
break;
case VK_F19:
str = _T("F19");
break;
case VK_F20:
str = _T("F20");
break;
case VK_F21:
str = _T("F21");
break;
case VK_F22:
str = _T("F22");
break;
case VK_F23:
str = _T("F23");
break;
case VK_F24:
str = _T("F24");
break;
case VK_NUMLOCK:
str = _T("Numlock");
break;
case VK_SCROLL:
str = _T("Scroll");
break;
// case VK_OEM_NEC_EQUAL: str = _T("OEM NEC Equal"); break;
case VK_OEM_FJ_JISHO:
str = _T("OEM FJ Jisho");
break;
case VK_OEM_FJ_MASSHOU:
str = _T("OEM FJ Msshou");
break;
case VK_OEM_FJ_TOUROKU:
str = _T("OEM FJ Touroku");
break;
case VK_OEM_FJ_LOYA:
str = _T("OEM FJ Loya");
break;
case VK_OEM_FJ_ROYA:
str = _T("OEM FJ Roya");
break;
case VK_LSHIFT:
str = _T("LShift");
break;
case VK_RSHIFT:
str = _T("RShift");
break;
case VK_LCONTROL:
str = _T("LCtrl");
break;
case VK_RCONTROL:
str = _T("RCtrl");
break;
case VK_LMENU:
str = _T("LAlt");
break;
case VK_RMENU:
str = _T("RAlt");
break;
case VK_BROWSER_BACK:
str = _T("Browser Back");
break;
case VK_BROWSER_FORWARD:
str = _T("Browser Forward");
break;
case VK_BROWSER_REFRESH:
str = _T("Browser Refresh");
break;
case VK_BROWSER_STOP:
str = _T("Browser Stop");
break;
case VK_BROWSER_SEARCH:
str = _T("Browser Search");
break;
case VK_BROWSER_FAVORITES:
str = _T("Browser Favorites");
break;
case VK_BROWSER_HOME:
str = _T("Browser Home");
break;
case VK_VOLUME_MUTE:
str = _T("Volume Mute");
break;
case VK_VOLUME_DOWN:
str = _T("Volume Down");
break;
case VK_VOLUME_UP:
str = _T("Volume Up");
break;
case VK_MEDIA_NEXT_TRACK:
str = _T("Media Next Track");
break;
case VK_MEDIA_PREV_TRACK:
str = _T("Media Prev Track");
break;
case VK_MEDIA_STOP:
str = _T("Media Stop");
break;
case VK_MEDIA_PLAY_PAUSE:
str = _T("Media Play/Pause");
break;
case VK_LAUNCH_MAIL:
str = _T("Launch Mail");
break;
case VK_LAUNCH_MEDIA_SELECT:
str = _T("Launch Media Select");
break;
case VK_LAUNCH_APP1:
str = _T("Launch App1");
break;
case VK_LAUNCH_APP2:
str = _T("Launch App2");
break;
case VK_OEM_1:
str = _T("OEM 1");
break;
case VK_OEM_PLUS:
str = _T("Plus");
break;
case VK_OEM_COMMA:
str = _T("Comma");
break;
case VK_OEM_MINUS:
str = _T("Minus");
break;
case VK_OEM_PERIOD:
str = _T("Period");
break;
case VK_OEM_2:
str = _T("OEM 2");
break;
case VK_OEM_3:
str = _T("OEM 3");
break;
case VK_OEM_4:
str = _T("OEM 4");
break;
case VK_OEM_5:
str = _T("OEM 5");
break;
case VK_OEM_6:
str = _T("OEM 6");
break;
case VK_OEM_7:
str = _T("OEM 7");
break;
case VK_OEM_8:
str = _T("OEM 8");
break;
case VK_OEM_AX:
str = _T("OEM AX");
break;
case VK_OEM_102:
str = _T("OEM 102");
break;
case VK_ICO_HELP:
str = _T("ICO Help");
break;
case VK_ICO_00:
str = _T("ICO 00");
break;
case VK_PROCESSKEY:
str = _T("Process Key");
break;
case VK_ICO_CLEAR:
str = _T("ICO Clear");
break;
case VK_PACKET:
str = _T("Packet");
break;
case VK_OEM_RESET:
str = _T("OEM Reset");
break;
case VK_OEM_JUMP:
str = _T("OEM Jump");
break;
case VK_OEM_PA1:
str = _T("OEM PA1");
break;
case VK_OEM_PA2:
str = _T("OEM PA2");
break;
case VK_OEM_PA3:
str = _T("OEM PA3");
break;
case VK_OEM_WSCTRL:
str = _T("OEM WSCtrl");
break;
case VK_OEM_CUSEL:
str = _T("OEM CUSEL");
break;
case VK_OEM_ATTN:
str = _T("OEM ATTN");
break;
case VK_OEM_FINISH:
str = _T("OEM Finish");
break;
case VK_OEM_COPY:
str = _T("OEM Copy");
break;
case VK_OEM_AUTO:
str = _T("OEM Auto");
break;
case VK_OEM_ENLW:
str = _T("OEM ENLW");
break;
case VK_OEM_BACKTAB:
str = _T("OEM Backtab");
break;
case VK_ATTN:
str = _T("ATTN");
break;
case VK_CRSEL:
str = _T("CRSEL");
break;
case VK_EXSEL:
str = _T("EXSEL");
break;
case VK_EREOF:
str = _T("EREOF");
break;
case VK_PLAY:
str = _T("Play");
break;
case VK_ZOOM:
str = _T("Zoom");
break;
case VK_NONAME:
str = _T("Noname");
break;
case VK_PA1:
str = _T("PA1");
break;
case VK_OEM_CLEAR:
str = _T("OEM Clear");
break;
case 0x07:
case 0x0E:
case 0x0F:
case 0x16:
case 0x1A:
case 0x3A:
case 0x3B:
case 0x3C:
case 0x3D:
case 0x3E:
case 0x3F:
case 0x40:
str.Format(_T("Undefined (0x%02x)"), (TCHAR)a.key);
break;
case 0x0A:
case 0x0B:
case 0x5E:
case 0xB8:
case 0xB9:
case 0xC1:
case 0xC2:
case 0xC3:
case 0xC4:
case 0xC5:
case 0xC6:
case 0xC7:
case 0xC8:
case 0xC9:
case 0xCA:
case 0xCB:
case 0xCC:
case 0xCD:
case 0xCE:
case 0xCF:
case 0xD0:
case 0xD1:
case 0xD2:
case 0xD3:
case 0xD4:
case 0xD5:
case 0xD6:
case 0xD7:
case 0xE0:
str.Format(_T("Reserved (0x%02x)"), (TCHAR)a.key);
break;
case 0x88:
case 0x89:
case 0x8A:
case 0x8B:
case 0x8C:
case 0x8D:
case 0x8E:
case 0x8F:
case 0x97:
case 0x98:
case 0x99:
case 0x9A:
case 0x9B:
case 0x9C:
case 0x9D:
case 0x9E:
case 0x9F:
case 0xD8:
case 0xD9:
case 0xDA:
case 0xE8:
str.Format(_T("Unassigned (0x%02x)"), (TCHAR)a.key);
break;
case 0xFF:
str = _T("Multimedia keys");
break;
default:
// if('0' <= a.key && a.key <= '9' || 'A' <= a.key && a.key <= 'Z')
str.Format(_T("%c"), (TCHAR)a.key);
break;
}
if(a.fVirt&(FCONTROL|FALT|FSHIFT))
str = MakeAccelModLabel(a.fVirt) + _T(" + ") + str;
str.Replace(_T(" + "), _T("+"));
return(str);
}
CString CPPageAccelTbl::MakeMouseButtonLabel(UINT mouse)
{
CString ret;
switch(mouse)
{
case wmcmd::NONE:
default:
ret = ResStr(IDS_AG_NONE);
break;
case wmcmd::LDOWN:
ret = _T("Left Down");
break;
case wmcmd::LUP:
ret = _T("Left Up");
break;
case wmcmd::LDBLCLK:
ret = _T("Left DblClk");
break;
case wmcmd::MDOWN:
ret = _T("Middle Down");
break;
case wmcmd::MUP:
ret = _T("Middle Up");
break;
case wmcmd::MDBLCLK:
ret = _T("Middle DblClk");
break;
case wmcmd::RDOWN:
ret = _T("Right Down");
break;
case wmcmd::RUP:
ret = _T("Right Up");
break;
case wmcmd::RDBLCLK:
ret = _T("Right DblClk");
break;
case wmcmd::X1DOWN:
ret = _T("X1 Down");
break;
case wmcmd::X1UP:
ret = _T("X1 Up");
break;
case wmcmd::X1DBLCLK:
ret = _T("X1 DblClk");
break;
case wmcmd::X2DOWN:
ret = _T("X2 Down");
break;
case wmcmd::X2UP:
ret = _T("X2 Up");
break;
case wmcmd::X2DBLCLK:
ret = _T("X2 DblClk");
break;
case wmcmd::WUP:
ret = _T("Wheel Up");
break;
case wmcmd::WDOWN:
ret = _T("Wheel Down");
break;
}
return ret;
}
CString CPPageAccelTbl::MakeAppCommandLabel(UINT id)
{
for (int i=0; iGetItemCount(); i < j; i++)
pList->SetItemState(i, LVIS_SELECTED, LVIS_SELECTED);
return 0;
}
}
return CallWindowProc(OldControlProc, control, message, wParam, lParam); // call control's own windowproc
}
BOOL CPPageAccelTbl::OnInitDialog()
{
__super::OnInitDialog();
AppSettings& s = AfxGetAppSettings();
m_wmcmds.RemoveAll();
m_wmcmds.AddTail(&s.wmcmds);
m_fWinLirc = s.fWinLirc;
m_WinLircAddr = s.WinLircAddr;
m_fUIce = s.fUIce;
m_UIceAddr = s.UIceAddr;
m_fGlobalMedia = s.fGlobalMedia;
UpdateData(FALSE);
CRect r;
GetDlgItem(IDC_PLACEHOLDER)->GetWindowRect(r);
ScreenToClient(r);
m_list.CreateEx(
WS_EX_CLIENTEDGE,
WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN|WS_TABSTOP|LVS_REPORT|LVS_AUTOARRANGE|LVS_SHOWSELALWAYS,
r, this, IDC_LIST1);
m_list.SetExtendedStyle(m_list.GetExtendedStyle()|LVS_EX_FULLROWSELECT|LVS_EX_DOUBLEBUFFER);
for(int i = 0, j = m_list.GetHeaderCtrl()->GetItemCount(); i < j; i++) m_list.DeleteColumn(0);
m_list.InsertColumn(COL_CMD, ResStr(IDS_AG_COMMAND), LVCFMT_LEFT, 80);
m_list.InsertColumn(COL_MOD, _T("Modifier"), LVCFMT_LEFT, 40);
m_list.InsertColumn(COL_KEY, ResStr(IDS_AG_KEY), LVCFMT_LEFT, 40);
m_list.InsertColumn(COL_TYPE, ResStr(IDS_AG_TYPE), LVCFMT_LEFT, 40);
m_list.InsertColumn(COL_ID, _T("ID"), LVCFMT_LEFT, 40);
m_list.InsertColumn(COL_MOUSE, ResStr(IDS_AG_MOUSE), LVCFMT_LEFT, 80);
m_list.InsertColumn(COL_APPCMD, ResStr(IDS_AG_APP_COMMAND), LVCFMT_LEFT, 120);
m_list.InsertColumn(COL_RMCMD, _T("RemoteCmd"), LVCFMT_LEFT, 80);
m_list.InsertColumn(COL_RMREPCNT, _T("RepCnt"), LVCFMT_CENTER, 60);
POSITION pos = m_wmcmds.GetHeadPosition();
for(int i = 0; pos; i++)
{
int row = m_list.InsertItem(m_list.GetItemCount(), m_wmcmds.GetAt(pos).GetName(), COL_CMD);
m_list.SetItemData(row, (DWORD_PTR)pos);
m_wmcmds.GetNext(pos);
}
SetupList();
m_list.SetColumnWidth(COL_CMD, LVSCW_AUTOSIZE);
m_list.SetColumnWidth(COL_MOD, LVSCW_AUTOSIZE);
m_list.SetColumnWidth(COL_KEY, LVSCW_AUTOSIZE);
m_list.SetColumnWidth(COL_TYPE, LVSCW_AUTOSIZE);
m_list.SetColumnWidth(COL_ID, LVSCW_AUTOSIZE_USEHEADER);
// subclass the keylist control
OldControlProc = (WNDPROC) SetWindowLongPtr(m_list.m_hWnd, GWLP_WNDPROC, (LONG_PTR) ControlProc);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
BOOL CPPageAccelTbl::OnApply()
{
AfxGetMyApp()->UnregisterHotkeys();
UpdateData();
AppSettings& s = AfxGetAppSettings();
s.wmcmds.RemoveAll();
s.wmcmds.AddTail(&m_wmcmds);
CAtlArray pAccel;
pAccel.SetCount(m_wmcmds.GetCount());
POSITION pos = m_wmcmds.GetHeadPosition();
for(int i = 0; pos; i++) pAccel[i] = m_wmcmds.GetNext(pos);
if(s.hAccel) DestroyAcceleratorTable(s.hAccel);
s.hAccel = CreateAcceleratorTable(pAccel.GetData(), pAccel.GetCount());
GetParentFrame()->m_hAccelTable = s.hAccel;
s.fWinLirc = !!m_fWinLirc;
s.WinLircAddr = m_WinLircAddr;
if(s.fWinLirc) s.WinLircClient.Connect(m_WinLircAddr);
s.fUIce = !!m_fUIce;
s.UIceAddr = m_UIceAddr;
if(s.fUIce) s.UIceClient.Connect(m_UIceAddr);
s.fGlobalMedia = !!m_fGlobalMedia;
AfxGetMyApp()->RegisterHotkeys();
return __super::OnApply();
}
void CPPageAccelTbl::OnBnClickedButton1()
{
m_list.SetFocus();
for(int i = 0, j = m_list.GetItemCount(); i < j; i++)
{
m_list.SetItemState(i, LVIS_SELECTED, LVIS_SELECTED);
}
}
void CPPageAccelTbl::OnBnClickedButton2()
{
m_list.SetFocus();
POSITION pos = m_list.GetFirstSelectedItemPosition();
if(!pos) return;
while(pos)
{
int ni = m_list.GetNextSelectedItem(pos);
POSITION pi = (POSITION)m_list.GetItemData(ni);
wmcmd& wc = m_wmcmds.GetAt(pi);
wc.Restore();
}
SetupList();
SetModified();
}
void CPPageAccelTbl::OnBeginlabeleditList(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
LV_ITEM* pItem = &pDispInfo->item;
*pResult = FALSE;
if(pItem->iItem < 0)
return;
if(pItem->iSubItem == COL_MOD || pItem->iSubItem == COL_KEY || pItem->iSubItem == COL_TYPE
|| pItem->iSubItem == COL_MOUSE || pItem->iSubItem == COL_APPCMD
|| pItem->iSubItem == COL_RMCMD || pItem->iSubItem == COL_RMREPCNT)
{
*pResult = TRUE;
}
}
static BYTE s_mods[] = {0,FALT,FCONTROL,FSHIFT,FCONTROL|FALT,FCONTROL|FSHIFT,FALT|FSHIFT,FCONTROL|FALT|FSHIFT};
void CPPageAccelTbl::OnDolabeleditList(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
LV_ITEM* pItem = &pDispInfo->item;
if(pItem->iItem < 0)
{
*pResult = FALSE;
return;
}
*pResult = TRUE;
wmcmd& wc = m_wmcmds.GetAt((POSITION)m_list.GetItemData(pItem->iItem));
ACCEL& a = wc;
CAtlList sl;
int nSel = -1;
switch(pItem->iSubItem)
{
case COL_MOD:
for(int i = 0; i < countof(s_mods); i++)
{
sl.AddTail(MakeAccelModLabel(s_mods[i]));
if((a.fVirt&~3) == s_mods[i]) nSel = i;
}
m_list.ShowInPlaceComboBox(pItem->iItem, pItem->iSubItem, sl, nSel);
break;
case COL_KEY:
for(int i = 0; i < 256; i++)
{
sl.AddTail(MakeAccelVkeyLabel(i, a.fVirt&FVIRTKEY));
if(a.key == i) nSel = i;
}
m_list.ShowInPlaceComboBox(pItem->iItem, pItem->iSubItem, sl, nSel);
break;
case COL_TYPE:
sl.AddTail(_T("VIRTKEY"));
sl.AddTail(_T("ASCII"));
nSel = !(a.fVirt&FVIRTKEY);
m_list.ShowInPlaceComboBox(pItem->iItem, pItem->iSubItem, sl, nSel);
break;
case COL_MOUSE:
for(UINT i = 0; i < wmcmd::LAST; i++)
{
sl.AddTail(MakeMouseButtonLabel(i));
if(wc.mouse == i) nSel = i;
}
m_list.ShowInPlaceComboBox(pItem->iItem, pItem->iSubItem, sl, nSel);
break;
case COL_APPCMD:
for(int i = 0; i < countof(g_CommandList); i++)
{
sl.AddTail(g_CommandList[i].cmdname);
if(wc.appcmd == g_CommandList[i].appcmd) nSel = i;
}
m_list.ShowInPlaceComboBox(pItem->iItem, pItem->iSubItem, sl, nSel);
break;
case COL_RMCMD:
m_list.ShowInPlaceEdit(pItem->iItem, pItem->iSubItem);
break;
case COL_RMREPCNT:
m_list.ShowInPlaceEdit(pItem->iItem, pItem->iSubItem);
break;
default:
*pResult = FALSE;
break;
}
}
void CPPageAccelTbl::OnEndlabeleditList(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
LV_ITEM* pItem = &pDispInfo->item;
*pResult = FALSE;
if(!m_list.m_fInPlaceDirty)
return;
if(pItem->iItem < 0)
return;
wmcmd& wc = m_wmcmds.GetAt((POSITION)m_list.GetItemData(pItem->iItem));
switch(pItem->iSubItem)
{
case COL_MOD:
if(pItem->lParam >= 0 && pItem->lParam < countof(s_mods))
{
wc.fVirt = (wc.fVirt&3) | (s_mods[pItem->lParam]&~3);
m_list.SetItemText(pItem->iItem, COL_MOD, pItem->pszText);
*pResult = TRUE;
}
break;
case COL_KEY:
{
int i = pItem->lParam;
if(i >= 0 && i < 256)
{
wc.key = (WORD)i;
m_list.SetItemText(pItem->iItem, COL_KEY, pItem->pszText);
*pResult = TRUE;
}
}
break;
case COL_TYPE:
{
int i = pItem->lParam;
if(i >= 0 && i < 2)
{
wc.fVirt = (wc.fVirt&~FVIRTKEY) | (i == 0 ? FVIRTKEY : 0);
m_list.SetItemText(pItem->iItem, COL_KEY, MakeAccelVkeyLabel(wc.key, wc.fVirt&FVIRTKEY));
m_list.SetItemText(pItem->iItem, COL_TYPE, (wc.fVirt&FVIRTKEY)?_T("VIRTKEY"):_T("ASCII"));
*pResult = TRUE;
}
}
break;
case COL_APPCMD:
{
int i = pItem->lParam;
if(i >= 0 && i < countof(g_CommandList))
{
wc.appcmd = g_CommandList[i].appcmd;
m_list.SetItemText(pItem->iItem, COL_APPCMD, pItem->pszText);
*pResult = TRUE;
}
}
break;
case COL_MOUSE:
wc.mouse = pItem->lParam;
m_list.SetItemText(pItem->iItem, COL_MOUSE, pItem->pszText);
break;
case COL_RMCMD:
wc.rmcmd = CStringA(CString(pItem->pszText)).Trim();
wc.rmcmd.Replace(' ', '_');
m_list.SetItemText(pItem->iItem, pItem->iSubItem, CString(wc.rmcmd));
*pResult = TRUE;
break;
case COL_RMREPCNT:
CString str = CString(pItem->pszText).Trim();
wc.rmrepcnt = _tcstol(str, NULL, 10);
str.Format(_T("%d"), wc.rmrepcnt);
m_list.SetItemText(pItem->iItem, pItem->iSubItem, str);
*pResult = TRUE;
break;
}
if(*pResult)
SetModified();
}
void CPPageAccelTbl::OnTimer(UINT_PTR nIDEvent)
{
UpdateData();
if(m_fWinLirc)
{
CString addr;
m_WinLircEdit.GetWindowText(addr);
AfxGetAppSettings().WinLircClient.Connect(addr);
}
m_WinLircEdit.Invalidate();
if(m_fUIce)
{
CString addr;
m_UIceEdit.GetWindowText(addr);
AfxGetAppSettings().UIceClient.Connect(addr);
}
m_UIceEdit.Invalidate();
m_counter++;
__super::OnTimer(nIDEvent);
}
HBRUSH CPPageAccelTbl::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = __super::OnCtlColor(pDC, pWnd, nCtlColor);
int status = -1;
if(*pWnd == m_WinLircEdit)
status = AfxGetAppSettings().WinLircClient.GetStatus();
else if(*pWnd == m_UIceEdit)
status = AfxGetAppSettings().UIceClient.GetStatus();
if(status == 0 || status == 2 && (m_counter&1))
pDC->SetTextColor(0x0000ff);
else if(status == 1)
pDC->SetTextColor(0x008000);
return hbr;
}
BOOL CPPageAccelTbl::OnSetActive()
{
SetTimer(1, 1000, NULL);
return CPPageBase::OnSetActive();
}
BOOL CPPageAccelTbl::OnKillActive()
{
KillTimer(1);
return CPPageBase::OnKillActive();
}