// retrieves a string that represents the name of a composite key
CuKeyStatus KeyStatus;
....
CuKeyNameTextEx KeyNameTextEx(KeyStatus);
wstring strKeyText = KeyNameTextEx;
// Assert( strKeyText == TEXT("Alt+Ctrl+Shift+D"));
// Assert( strKeyText == TEXT("Alt+Ctrl+D"));
// Assert( strKeyText == TEXT("Ctrl+Shift+D"));
// CuKeyNameTextEx.h
class CuKeyNameTextEx
{
wstring m_strKeyText;
public:
CuKeyNameTextEx(void);
CuKeyNameTextEx(CuKeyStatus &KeyStatus);
~CuKeyNameTextEx(void);
void SetKeyStatus(CuKeyStatus &KeyStatus);
operator wstring() const
{
return m_strKeyText;
};
BOOL IsMustAdd(bool l, bool r);
private:
wstring ProcessFunctionKey(CuKeyStatus &KeyStatus);
};
// CuKeyNameTextEx.cpp
CuKeyNameTextEx::CuKeyNameTextEx(void)
{
}
CuKeyNameTextEx::~CuKeyNameTextEx(void)
{
}
CuKeyNameTextEx::CuKeyNameTextEx(CuKeyStatus &KeyStatus)
{
SetKeyStatus(KeyStatus);
}
void CuKeyNameTextEx::SetKeyStatus(CuKeyStatus &KeyStatus)
{
if( !KeyStatus.m_dwScanCode )
return;
wstring strResult;
strResult = ProcessFunctionKey(KeyStatus);
CuKeyNameText KeyName(KeyStatus.m_dwScanCode);
wstring strKeyText = KeyName;
wstring strAdd = TEXT("+");
if( !strKeyText.empty() && !strResult.empty() )
strResult += strAdd;
strResult += strKeyText;
m_strKeyText = strResult;
}
wstring CuKeyNameTextEx::ProcessFunctionKey(CuKeyStatus &KeyStatus)
{
wstring strResult;
wstring strAlt = TEXT("Alt");
wstring strCtrl = TEXT("Ctrl");
wstring strShift = TEXT("Shift");
wstring strAdd = TEXT("+");
if( KeyStatus.m_bAlt )
strResult += strAlt;
if( KeyStatus.m_bAlt && KeyStatus.m_bCtrl )
strResult += strAdd;
if( KeyStatus.m_bCtrl )
strResult += strCtrl;
if( KeyStatus.m_bShift && (KeyStatus.m_bAlt || KeyStatus.m_bCtrl) )
strResult += strAdd;
if( KeyStatus.m_bShift )
strResult += strShift;
return strResult;
}
2010年1月1日 星期五
CuKeyNameTextEx - retrieves a string that represents the name of a composite key
訂閱:
張貼留言 (Atom)
將 CuKeyStatus 拉到外面的原因只有一個, 那個是要拿來儲存的!
回覆刪除