📄 ppkeycontrol.cpp
字号:
// PPKeyControl.cpp: implementation of the CPPKeyControl class.
//
//////////////////////////////////////////////////////////////////////
#include "PPKeyControl.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CPPKeyControl::CPPKeyControl()
{
}
CPPKeyControl::~CPPKeyControl()
{
}
CPPKeyControl* CPPKeyControl::CreateInstance(CPPGameDoc* pDoc)
{
// 创建新的CBControl实例
CPPKeyControl* pObj = new CPPKeyControl;
// 如果实例创建成功,调用初始化函数
if (pObj)
{
// 设置关联文档
pObj->SetDocument(pDoc);
// 初始化对象
if (!pObj->InitData())
{
pObj->Release();
pObj = NULL;
}
}
// 返回实例指针
return pObj;
}
bool CPPKeyControl::InitData()
{
for (int i =0; i < 7; i++)
m_nKeyPress[i] = 0;
m_nAnyKeyStatus = 0;
return true;
}
void CPPKeyControl::FreeData()
{
for (int i =0; i < 7; i++)
m_nKeyPress[i] = 0;
m_nAnyKeyStatus = 0;
}
void CPPKeyControl::Release()
{
FreeData();
if (this)
delete this;
}
uint16 CPPKeyControl::GetKeyHitCounts(EKEYCODE eKey)
{
int nCount = m_nKeyPress[eKey];
return nCount;
}
bool CPPKeyControl::HandleKeyPress(AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
// 只要有键,就记录状态
m_nAnyKeyStatus |= eCode;
switch ((AVKType)wParam)
{
// 0,1,3,7,9,*,#键缺省处理,不作任何响应
case AVK_0:
case AVK_1:
case AVK_3:
case AVK_7:
case AVK_9:
case AVK_STAR:
case AVK_POUND:
return TRUE;
// 2,向上键——标记向上
case AVK_2:
case AVK_UP:
SetKeyPress(EKEY_UP);
return TRUE;
// 8,向下键——标记向下
case AVK_8:
case AVK_DOWN:
SetKeyPress(EKEY_DOWN);
return TRUE;
// 4,向左键——标记向左
case AVK_4:
case AVK_LEFT:
SetKeyPress(EKEY_LEFT);
return TRUE;
// 6,向右键——标记向右
case AVK_6:
case AVK_RIGHT:
SetKeyPress(EKEY_RIGHT);
return TRUE;
// 5,选择键——标记确定、选择、FIRE
case AVK_5:
case AVK_SELECT:
SetKeyPress(EKEY_SELECT);
return TRUE;
// 左软键——标记左软键
case AVK_SOFT1:
SetKeyPress(EKEY_LEFTSOFT);
return TRUE;
// 右软键——标记右软键
case AVK_SOFT2:
SetKeyPress(EKEY_RIGHTSOFT);
return TRUE;
// 缺省标记没有处理
default:
break;
};
// 没有处理事件
return true;
}
boolean CPPKeyControl::IsAnyKeyPress()
{
boolean bRes = false;
bRes = (m_nAnyKeyStatus == 0) ? false : true;
m_nAnyKeyStatus = 0;
return bRes;
}
void CPPKeyControl::SetKeyPress(EKEYCODE eKey)
{
m_nKeyPress[eKey]++;
}
void CPPKeyControl::ReleaseKeyPress(EKEYCODE eKey, int nHitCount)
{
if (m_nKeyPress[eKey] > nHitCount)
m_nKeyPress[eKey] -= nHitCount;
else
m_nKeyPress[eKey] = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -