📄 chtxtin.cpp
字号:
if (pStdEditMenu = GetMainInfo()->GetStdEditMenu())
{
pStdEditMenu->Promote( false );
}
}
}
void ChTextInputEdit::OnSetFocus( CWnd* pOldWnd )
{
CEdit::OnSetFocus( pOldWnd );
if (GetMainInfo() && GetMainInfo()->IsMenuInstalled())
{
/* Promote our window (we want to
get the Cut/Copy/Paste menu
messages first) */
GetMainInfo()->GetStdEditMenu()->Promote();
}
}
void ChTextInputEdit::OnRButtonDown( UINT nFlags, CPoint ptMouse )
{
ClientToScreen( &ptMouse );
DoRightButtonMenu( ptMouse );
}
/*----------------------------------------------------------------------------
Chaco message handlers
----------------------------------------------------------------------------*/
CH_IMPLEMENT_MESSAGE_HANDLER( defTextInHandler )
{
chparam retVal = 0;
return retVal;
}
CH_IMPLEMENT_MESSAGE_HANDLER( textInInitHandler )
{
ChTextInMainInfo* pInfo = (ChTextInMainInfo*)pMainInfo;
pInfo->Initialize();
return 0;
}
CH_IMPLEMENT_MESSAGE_HANDLER( textInShowModuleHandler )
{
ChShowModuleMsg* pMsg = (ChShowModuleMsg*)&msg;
ChTextInMainInfo* pInfo = (ChTextInMainInfo*)pMainInfo;
pInfo->ShowModule( pMsg->IsShowing() );
return 0;
}
CH_IMPLEMENT_MESSAGE_HANDLER( textInGetPageCountHandler )
{
ChTextInMainInfo* pInfo = (ChTextInMainInfo*)pMainInfo;
ChGetPageCountMsg* pMsg = (ChGetPageCountMsg*)&msg;
ChPageType type;
int iPageCount;
pMsg->GetParams( type );
if (pInfo->IsShown())
{
switch( type )
{
case pagePreferences:
{
iPageCount = 1;
break;
}
default:
{
iPageCount = 0;
break;
}
}
}
else
{
iPageCount = 0;
}
return iPageCount;
}
CH_IMPLEMENT_MESSAGE_HANDLER( TextInGetPagesHandler )
{
ChTextInMainInfo* pInfo = (ChTextInMainInfo*)pMainInfo;
ChGetPagesMsg* pMsg = (ChGetPagesMsg*)&msg;
ChPageType type;
chint16 sCount;
chparam* pPages;
pMsg->GetParams( type, sCount, pPages );
switch( type )
{
case pagePreferences:
{
ASSERT( 1 == sCount );
#if defined( CH_MSW )
{
ChTextInPrefsPage* pPage;
pPage = new ChTextInPrefsPage;
// pPage->SetEditLines( pInfo->GetEditLines() );
pPages[0] = (chparam)pPage;
}
#endif
break;
}
default:
{
break;
}
}
return 0;
}
CH_IMPLEMENT_MESSAGE_HANDLER( TextInGetPageDataHandler )
{
ChTextInMainInfo* pInfo = (ChTextInMainInfo*)pMainInfo;
ChGetPageDataMsg* pMsg = (ChGetPageDataMsg*)&msg;
ChPageType type;
chint16 sCount;
chparam* pPages;
pMsg->GetParams( type, sCount, pPages );
switch( type )
{
case pagePreferences:
{
ASSERT( 1 == sCount );
#if defined( CH_MSW )
{
if (pPages[0])
{
ChTextInPrefsPage* pPage = (ChTextInPrefsPage*)pPages[0];
pPage->OnCommit();
pInfo->UpdatePreferences();
}
}
#endif // defined( CH_MSW )
break;
}
default:
{
break;
}
}
return 0;
}
CH_IMPLEMENT_MESSAGE_HANDLER( TextInReleasePagesHandler )
{
ChReleasePagesMsg* pMsg = (ChReleasePagesMsg*)&msg;
ChPageType type;
chint16 sCount;
chparam* pPages;
pMsg->GetParams( type, sCount, pPages );
switch( type )
{
case pagePreferences:
{
ASSERT( 1 == sCount );
#if defined( CH_MSW )
{
if (pPages[0])
{
ChTextInPrefsPage* pPage = (ChTextInPrefsPage*)pPages[0];
delete pPage;
}
}
#endif // defined( CH_MSW )
break;
}
default:
{
break;
}
}
return 0;
}
CH_IMPLEMENT_MESSAGE_HANDLER( textInSetFocusHandler )
{
ChTextInMainInfo* pInfo = (ChTextInMainInfo*)pMainInfo;
if (pInfo->IsShown())
{
pInfo->GetEdit()->SetFocus();
}
return 0;
}
CH_IMPLEMENT_MESSAGE_HANDLER( textInTextHandler )
{
ChTextInMainInfo* pInfo = (ChTextInMainInfo*)pMainInfo;
ChTextMsg* pMsg = (ChTextMsg*)&msg;
string strText;
pMsg->GetParams( strText );
pInfo->GetEdit()->SetWindowText( strText );
return 0;
}
CH_IMPLEMENT_MESSAGE_HANDLER( textInClearTextHandler )
{
ChTextInMainInfo* pInfo = (ChTextInMainInfo*)pMainInfo;
pInfo->GetEdit()->EraseText();
return 0;
}
CH_IMPLEMENT_MESSAGE_HANDLER( textInInstallHookHandler )
{
ChTextInMainInfo* pInfo = (ChTextInMainInfo*)pMainInfo;
ChInstallHookMsg* pMsg = (ChInstallHookMsg*)&msg;
ChHookManager* pHookMgr = pInfo->GetHookMgr();
ChModuleID idHookModule;
chint32 lMessage;
pMsg->GetParams( idHookModule, lMessage );
ASSERT( 0 == lMessage || CH_MSG_TEXT == lMessage );
pHookMgr->Install( idHookModule );
return 0;
}
CH_IMPLEMENT_MESSAGE_HANDLER( textInPromoteHookHandler )
{
ChTextInMainInfo* pInfo = (ChTextInMainInfo*)pMainInfo;
ChPromoteHookMsg* pMsg = (ChPromoteHookMsg*)&msg;
ChHookManager* pHookMgr = pInfo->GetHookMgr();
ChModuleID idHookModule;
bool boolPromote;
chint32 lMessage;
pMsg->GetParams( idHookModule, boolPromote, lMessage );
ASSERT( 0 == lMessage || CH_MSG_TEXT == lMessage );
pHookMgr->Promote( idHookModule, boolPromote );
return 0;
}
CH_IMPLEMENT_MESSAGE_HANDLER( textInUninstallHookHandler )
{
ChTextInMainInfo* pInfo = (ChTextInMainInfo*)pMainInfo;
ChUninstallHookMsg* pMsg = (ChUninstallHookMsg*)&msg;
ChHookManager* pHookMgr = pInfo->GetHookMgr();
ChModuleID idHookModule;
chint32 lMessage;
pMsg->GetParams( idHookModule, lMessage );
ASSERT( 0 == lMessage || CH_MSG_TEXT == lMessage );
pHookMgr->Uninstall( idHookModule );
return 0;
}
CH_IMPLEMENT_MESSAGE_HANDLER( textInSetPasswordHandler )
{
ChTextInMainInfo* pInfo = (ChTextInMainInfo*)pMainInfo;
ChTextSetPasswordMsg* pMsg = (ChTextSetPasswordMsg*)&msg;
bool boolPassword;
pMsg->GetParams( boolPassword );
pInfo->SetPassword( boolPassword );
return 0;
}
/*----------------------------------------------------------------------------
Chaco menu handlers
----------------------------------------------------------------------------*/
CH_IMPLEMENT_MESSAGE_HANDLER( stdEditMenuHandler )
{
chparam retVal = 0;
return retVal;
}
CH_IMPLEMENT_MESSAGE_HANDLER( OnStdEditCut )
{
chparam retVal = false;
ChMenuMsg* pMsg = (ChMenuMsg*)&msg;
ChTextInMainInfo* pInfo = (ChTextInMainInfo*)pMsg->GetItem()->GetData();
ChTextInputEdit* pEdit = pInfo->GetEdit();
pMsg->SetProcessed();
switch( pMsg->GetMessage() )
{
case CH_MSG_MENU_SHOW:
{
int iStart;
int iEnd;
pEdit->GetSel( iStart, iEnd );
if (iStart == iEnd)
{
pMsg->GetItem()->Enable( false );
}
else
{
pMsg->GetItem()->Enable();
}
pMsg->SetProcessed();
break;
}
case CH_MSG_MENU_SELECT:
{
pEdit->Cut();
pMsg->SetProcessed();
break;
}
default:
{
break;
}
}
return retVal;
}
CH_IMPLEMENT_MESSAGE_HANDLER( OnStdEditCopy )
{
chparam retVal = false;
ChMenuMsg* pMsg = (ChMenuMsg*)&msg;
ChTextInMainInfo* pInfo = (ChTextInMainInfo*)pMsg->GetItem()->GetData();
ChTextInputEdit* pEdit = pInfo->GetEdit();
pMsg->SetProcessed();
switch( pMsg->GetMessage() )
{
case CH_MSG_MENU_SHOW:
{
int iStart;
int iEnd;
pEdit->GetSel( iStart, iEnd );
if (iStart == iEnd)
{
pMsg->GetItem()->Enable( false );
}
else
{
pMsg->GetItem()->Enable();
}
pMsg->SetProcessed();
break;
}
case CH_MSG_MENU_SELECT:
{
pEdit->Copy();
pMsg->SetProcessed();
break;
}
default:
{
break;
}
}
return retVal;
}
CH_IMPLEMENT_MESSAGE_HANDLER( OnStdEditPaste )
{
chparam retVal = false;
ChMenuMsg* pMsg = (ChMenuMsg*)&msg;
ChTextInMainInfo* pInfo = (ChTextInMainInfo*)pMsg->GetItem()->GetData();
ChTextInputEdit* pEdit = pInfo->GetEdit();
pMsg->SetProcessed();
switch( pMsg->GetMessage() )
{
case CH_MSG_MENU_SHOW:
{
if (pEdit->OpenClipboard())
{
if (::GetClipboardData( CF_TEXT ))
{
pMsg->GetItem()->Enable();
}
else
{
pMsg->GetItem()->Enable( false );
}
::CloseClipboard();
}
pMsg->SetProcessed();
break;
}
case CH_MSG_MENU_SELECT:
{
pEdit->Paste();
pMsg->SetProcessed();
break;
}
default:
{
break;
}
}
return retVal;
}
CH_IMPLEMENT_MESSAGE_HANDLER( OnStdEditClear )
{
chparam retVal = false;
ChMenuMsg* pMsg = (ChMenuMsg*)&msg;
ChTextInMainInfo* pInfo = (ChTextInMainInfo*)pMsg->GetItem()->GetData();
ChTextInputEdit* pEdit = pInfo->GetEdit();
pMsg->SetProcessed();
switch( pMsg->GetMessage() )
{
case CH_MSG_MENU_SHOW:
{
int iStart;
int iEnd;
pEdit->GetSel( iStart, iEnd );
if (iStart == iEnd)
{
pMsg->GetItem()->Enable( false );
}
else
{
pMsg->GetItem()->Enable();
}
pMsg->SetProcessed();
break;
}
case CH_MSG_MENU_SELECT:
{
pEdit->Clear();
pMsg->SetProcessed();
break;
}
default:
{
break;
}
}
return retVal;
}
CH_IMPLEMENT_MESSAGE_HANDLER( stdWindowMenuHandler )
{
chparam retVal = 0;
ChMenuMsg* pMsg = (ChMenuMsg*)&msg;
pMsg->SetProcessed();
return retVal;
}
CH_IMPLEMENT_MESSAGE_HANDLER( OnStdWindowCommand )
{
chparam retVal = false;
ChMenuMsg* pMsg = (ChMenuMsg*)&msg;
ChTextInMainInfo* pInfo = (ChTextInMainInfo*)pMsg->GetItem()->GetData();
ChTextInputEdit* pEdit = pInfo->GetEdit();
pMsg->SetProcessed();
switch( pMsg->GetMessage() )
{
case CH_MSG_MENU_SELECT:
{
pEdit->SetFocus();
pMsg->SetProcessed();
break;
}
default:
{
break;
}
}
return retVal;
}
/*----------------------------------------------------------------------------
Utility functions
----------------------------------------------------------------------------*/
CH_GLOBAL_FUNC( void )
TruncateMenuString( string& strText )
{
if (strText.GetLength() > MAX_MENU_STRING_LEN)
{
/* Truncate the string to make a
happy menu, and add ellipses */
strText = strText.Left( MAX_MENU_STRING_LEN );
strText += "...";
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -