📄 tbareditctrlbase_handler.cpp
字号:
//-----------------------------------------------------------------------------
// (c) 2002 by Basler Vision Technologies
// Section: Vision Components
// Project: BCAM
// $Header: TBarEditCtrlBase_Handler.cpp, 4, 02.10.2002 14:31:29, Nebelung, H.$
//-----------------------------------------------------------------------------
/**
\file TBarEditCtrlBase_Handler.cpp
\brief implementation of the CTBarEditCtrlBase class.
*/
//////////////////////////////////////////////////////////////////////
#include <atlbase.h>
#include <atlapp.h>
extern CAppModule _Module;
#include <atlwin.h>
#include "TBarEditCtrlBase.h"
//////////////////////////////////////////////////////////////////////
//
/*!
OnKeyDown - handler of WM_KEYDOWN
\param uMsg
\param wParam
\param lParam
\param bHandled
*/
LRESULT CTBarEditCtrlBase::OnKeyDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
LRESULT lRes = 0;
// check virtual keycode
switch ( LOWORD(wParam) )
{
case VK_RETURN:
if ( m_bWantReturn )
{
// ATLTRACE("CTBarEditCtrlBase::OnKeyDown VK_RETURN\n");
UpdateEditText();
if ( m_nPostMsgID )
{
PostParent(WM_COMMAND, MAKELPARAM(m_nPostMsgID, EN_UPDATE), (LPARAM) m_hEditCtrl);
PostParent(WM_COMMAND, MAKELPARAM(m_nPostMsgID, EN_CHANGE), (LPARAM) m_hEditCtrl);
}
else
{
PostParent(WM_COMMAND, MAKELPARAM(m_nEditCtrlID, EN_UPDATE), (LPARAM) m_hEditCtrl);
PostParent(WM_COMMAND, MAKELPARAM(m_nEditCtrlID, EN_CHANGE), (LPARAM) m_hEditCtrl);
}
m_bOnChange2Parent = true;
m_bOnUpdate2Parent = true;
bHandled = true;
return 1;
}
break;
case VK_TAB:
PostParent(WM_NEXTDLGCTL, 0, 0);
bHandled = true;
return 0;
break;
case VK_ESCAPE:
if ( m_bWantReturn && m_bEscUndos )
{
// ATLTRACE("CTBarEditCtrlBase::OnKeyDown VK_ESCAPE\n");
UndoInput();
}
break;
} /// switch ( LOWORD(wParam) )
// pass to default handler
// ATLTRACE("CTBarEditCtrlBase::OnKeyDown default\n");
bHandled = false;
return 0; // continue processing message map
}
/*!
OnChar - handler of WM_CHAR
\param uMsg
\param wParam
\param lParam
\param bHandled
*/
LRESULT CTBarEditCtrlBase::OnChar(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
if ( m_bWantReturn && ( wParam == VK_RETURN || wParam == VK_TAB ) )
{
// avoid beeps if return or tab is pressed
bHandled = true;
return 0;
}
bHandled = false;
return 0;
}
/*!
OnHScroll - handler of WM_HSCROLL
\param uMsg
\param wParam
\param lParam
\param bHandled
*/
LRESULT CTBarEditCtrlBase::OnHScroll(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
// belongs this message to the associated control ?
#if 1
if ( CTBarCtrlBase::m_hTBarCtrl != (HWND) lParam )
{
bHandled = false;
return 0;
}
#else
int nID = ::GetDlgCtrlID( (HWND) lParam );
if ( CTBarCtrlBase::m_nTBarCtrlID != nID )
{
bHandled = false;
return 0;
}
#endif
ATLASSERT( CTBarCtrlBase::IsWindow() );
return HScroll(uMsg, wParam, lParam, bHandled);
}
/*!
OnChange - handler of EN_CHANGE
\param uNotifyCode
\param wID
\param hWndCtrl
\param bHandled
*/
LRESULT CTBarEditCtrlBase::OnChange(WPARAM uNotifyCode, WPARAM wID, HWND hWndCtrl, BOOL& bHandled)
{
// belongs this message to the associated control ?
if ( CTBarEditCtrlBase::m_hEditCtrl != hWndCtrl )
{
bHandled = false;
return 0;
}
// ATLTRACE("CTBarEditCtrlBase::OnChange\n");
if ( !m_bWantReturn )
{
if ( !m_bSkipEnChange )
{
if ( m_nPostMsgID )
PostParent(WM_COMMAND, MAKELPARAM(m_nPostMsgID, EN_CHANGE), (LPARAM) hWndCtrl);
else
bHandled = !m_bPostMsgEnabled;// let message pass to other handlers
}
}
else if ( m_bOnChange2Parent )
{
if ( m_nPostMsgID )
PostParent(WM_COMMAND, MAKELPARAM(m_nPostMsgID, EN_CHANGE), (LPARAM) hWndCtrl);
else
bHandled = !m_bPostMsgEnabled; // let message pass to other handlers
}
m_bSkipEnChange = false;
m_bOnChange2Parent = false;
return 0; // continue processing message map
}
/*!
OnUpdate - handler of EN_UPDATE
\param uNotifyCode
\param wID
\param hWndCtrl
\param bHandled
*/
LRESULT CTBarEditCtrlBase::OnUpdate(WPARAM uNotifyCode, WPARAM wID, HWND hWndCtrl, BOOL& bHandled)
{
// belongs this message to the associated control ?
if ( CTBarEditCtrlBase::m_hEditCtrl != hWndCtrl )
{
bHandled = false;
return 0;
}
// ATLTRACE("CTBarEditCtrlBase::OnUpdate\n");
if ( !m_bWantReturn && m_bLiveUpdateEnabled )
{
// continue with message, if UpdateEditText doesn't call SetWindowText()...
m_bSkipEnChange = UpdateEditText();
if ( !m_bSkipEnChange )
{
if ( m_nPostMsgID )
PostParent(WM_COMMAND, MAKELPARAM(m_nPostMsgID, EN_UPDATE), (LPARAM) hWndCtrl);
else
bHandled = !m_bPostMsgEnabled;// let message pass to other handlers
}
}
else if ( m_bOnUpdate2Parent )
{
if ( m_nPostMsgID )
PostParent(WM_COMMAND, MAKELPARAM(m_nPostMsgID, EN_UPDATE), (LPARAM) hWndCtrl);
else
bHandled = !m_bPostMsgEnabled; // let message pass to other handlers
}
m_bOnUpdate2Parent = false;
return 0; // continue processing message map
}
/*!
OnKillFocus - handler of EN_KILLFOCUS
\param uNotifyCode
\param wID
\param hWndCtrl
\param bHandled
*/
LRESULT CTBarEditCtrlBase::OnKillFocus(WPARAM uNotifyCode, WPARAM wID, HWND hWndCtrl, BOOL& bHandled)
{
// ATLTRACE("CTBarEditCtrlBase::OnKillFocus\n");
if ( m_bWantReturn && m_bKillFocus )
{
// ATLTRACE("CTBarEditCtrlBase::OnKillFocus\n");
if ( UpdateEditText() )
{
if ( m_nPostMsgID )
{
PostParent(WM_COMMAND, MAKELPARAM(m_nPostMsgID, EN_UPDATE), (LPARAM) m_hEditCtrl);
PostParent(WM_COMMAND, MAKELPARAM(m_nPostMsgID, EN_CHANGE), (LPARAM) m_hEditCtrl);
}
else
{
PostParent(WM_COMMAND, MAKELPARAM(m_nEditCtrlID, EN_UPDATE), (LPARAM) m_hEditCtrl);
PostParent(WM_COMMAND, MAKELPARAM(m_nEditCtrlID, EN_CHANGE), (LPARAM) m_hEditCtrl);
}
m_bOnChange2Parent = true;
m_bOnUpdate2Parent = true;
}
return 1; // stop processing message map
}
else if ( m_bWantReturn && !m_bKillFocus )
UndoInput();
else
bHandled = false;
return 0; // continue processing message map
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -