ciderpress/util/MyEdit.cpp

73 lines
1.9 KiB
C++

/*
* CiderPress
* Copyright (C) 2007 by faddenSoft, LLC. All Rights Reserved.
* See the file LICENSE for distribution terms.
*/
/*
* Support for MyEdit class.
*/
#include "StdAfx.h"
#include "MyEdit.h"
//BEGIN_MESSAGE_MAP(MyBitmapButton, CButton)
// ON_WM_SYSCOLORCHANGE()
//END_MESSAGE_MAP()
/*
* Replace an edit control in a dialog with ourselves.
*
* Returns TRUE on success, FALSE on failure.
*/
BOOL MyEdit::ReplaceDlgCtrl(CDialog* pDialog, int editID)
{
CWnd* pWnd = pDialog->GetDlgItem(editID);
if (pWnd == NULL)
return FALSE;
/* latch on to their window handle */
Attach(pWnd->m_hWnd);
return TRUE;
}
/*
* Set the properties that make us special.
*/
void MyEdit::SetProperties(int props)
{
fCapsOnly = (props & kCapsOnly) != 0;
fHexOnly = (props & kHexOnly) != 0;
fNoWhiteSpace = (props & kNoWhiteSpace) != 0;
}
/*
* Special keypress handling.
*/
BOOL MyEdit::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message == WM_CHAR) {
if (fCapsOnly)
pMsg->wParam = toupper(pMsg->wParam);
if (fNoWhiteSpace) {
if (pMsg->wParam == ' ' || pMsg->wParam == '\t')
return TRUE; // we handled it
}
if (fHexOnly) {
if ((pMsg->wParam >= '0' && pMsg->wParam <= '9') ||
(pMsg->wParam >= 'a' && pMsg->wParam <= 'f') ||
(pMsg->wParam >= 'A' && pMsg->wParam <= 'F'))
{
/* good, keep going */
} else if ((pMsg->wParam >= 0x20 && pMsg->wParam < 0x7f) ||
(pMsg->wParam >= 0xa0 && pMsg->wParam <= 0xff))
{
/* ignore this character */
return TRUE; // we handled it
}
/* else it's a backspace or DEL or something */
}
}
return CEdit::PreTranslateMessage(pMsg);
}