📄 ceedit.cpp
字号:
// CeEdit.cpp : implementation file
//
#include "stdafx.h"
#include "resource.h"
#include "CeEdit.h"
#include "FormListCtrl.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//---------------------------------------------------------------------------
//
// CCeEdit
//
//---------------------------------------------------------------------------
CCeEdit::CCeEdit()
: m_nMenuID (0)
{
if(m_menuEdit.CreatePopupMenu())
{
m_menuEdit.AppendMenu(MF_ENABLED, ID_EDIT_UNDO, _T("&Undo"));
m_menuEdit.AppendMenu(MF_SEPARATOR);
m_menuEdit.AppendMenu(MF_ENABLED, ID_EDIT_CUT, _T("Cu&t"));
m_menuEdit.AppendMenu(MF_ENABLED, ID_EDIT_COPY, _T("&Copy"));
m_menuEdit.AppendMenu(MF_ENABLED, ID_EDIT_PASTE, _T("&Paste"));
}
}
CCeEdit::~CCeEdit()
{
}
BEGIN_MESSAGE_MAP(CCeEdit, CEdit)
//{{AFX_MSG_MAP(CCeEdit)
ON_WM_LBUTTONDOWN()
ON_UPDATE_COMMAND_UI(ID_EDIT_UNDO, OnUpdateEditUndo)
ON_UPDATE_COMMAND_UI(ID_EDIT_CUT, OnUpdateEditCut)
ON_UPDATE_COMMAND_UI(ID_EDIT_COPY, OnUpdateEditCopy)
ON_UPDATE_COMMAND_UI(ID_EDIT_PASTE, OnUpdateEditPaste)
ON_COMMAND(ID_EDIT_UNDO, OnEditUndo)
ON_COMMAND(ID_EDIT_COPY, OnEditCopy)
ON_COMMAND(ID_EDIT_CUT, OnEditCut)
ON_COMMAND(ID_EDIT_PASTE, OnEditPaste)
//}}AFX_MSG_MAP
#ifdef PPC_200X
ON_WM_KEYDOWN()
#endif
END_MESSAGE_MAP()
// CEdit::HasSelection
//
// Checks if the edit box has a selection
//
BOOL CCeEdit::HasSelection()
{
int nIni,
nEnd;
GetSel(nIni, nEnd);
return nIni != nEnd;
}
// CCeEdit::CanPaste
//
// Cehcks if the edit control can paste text from the clipboard
//
BOOL CCeEdit::CanPaste()
{
BOOL bOk;
bOk = OpenClipboard();
if(bOk)
{
HANDLE hTextUnic = GetClipboardData(CF_UNICODETEXT),
hTextAnsi = GetClipboardData(CF_TEXT);
bOk = (hTextUnic != NULL || hTextAnsi != NULL);
CloseClipboard();
}
return bOk;
}
//---------------------------------------------------------------------------
//
// CCeEdit command handlers
//
//---------------------------------------------------------------------------
// CCeEdit::OnUpdateEditUndo
//
// Checks if the edit undo command is available
//
void CCeEdit::OnUpdateEditUndo(CCmdUI* pCmdUI)
{
pCmdUI->Enable(CanUndo());
}
// CCeEdit::OnEditUndo
//
// Performs an undo operation
//
void CCeEdit::OnEditUndo()
{
Undo();
}
// CCeEdit::OnUpdateEditCut
//
// Checks if the edit cut command is available
//
void CCeEdit::OnUpdateEditCut(CCmdUI* pCmdUI)
{
pCmdUI->Enable(HasSelection());
}
// CCeEdit::OnEditCut
//
// Performs a cut
//
void CCeEdit::OnEditCut()
{
Cut();
}
// CCeEdit::OnUpdateEditCopy
//
// Checks if the edit copy command is available
//
void CCeEdit::OnUpdateEditCopy(CCmdUI* pCmdUI)
{
pCmdUI->Enable(HasSelection());
}
// CCeEdit::OnEditCopy
//
// Performs a copy
//
void CCeEdit::OnEditCopy()
{
Copy();
}
// CCeEdit::OnUpdateEditPaste
//
// Checks if the paste command is available
//
void CCeEdit::OnUpdateEditPaste(CCmdUI* pCmdUI)
{
pCmdUI->Enable(CanPaste());
}
// CCeEdit::OnEditPaste
//
// Pastes text from the clipboard
//
void CCeEdit::OnEditPaste()
{
Paste();
}
//---------------------------------------------------------------------------
//
// CCeEdit message handlers
//
//---------------------------------------------------------------------------
// CCeEdit::OnLButtonDown
//
// Processes a left button down message
//
void CCeEdit::OnLButtonDown(UINT nFlags, CPoint point)
{
SHRGINFO shrgi;
//
// Check for a tap-and-hold
//
shrgi.cbSize = sizeof(SHRGINFO);
shrgi.hwndClient = GetSafeHwnd();
shrgi.ptDown.x = point.x;
shrgi.ptDown.y = point.y;
shrgi.dwFlags = SHRG_RETURNCMD;
if(GN_CONTEXTMENU == ::SHRecognizeGesture(&shrgi))
{
BOOL bSel = HasSelection();
//
// Prepare the menu
//
m_menuEdit.EnableMenuItem(MF_BYCOMMAND | ID_EDIT_CUT,
bSel ? MF_ENABLED : MF_GRAYED);
m_menuEdit.EnableMenuItem(MF_BYCOMMAND | ID_EDIT_COPY,
bSel ? MF_ENABLED : MF_GRAYED);
m_menuEdit.EnableMenuItem(MF_BYCOMMAND | ID_EDIT_UNDO,
CanUndo() ? MF_ENABLED : MF_GRAYED);
m_menuEdit.EnableMenuItem(MF_BYCOMMAND | ID_EDIT_PASTE,
CanPaste() ? MF_ENABLED : MF_GRAYED);
ClientToScreen(&point);
m_menuEdit.TrackPopupMenu(TPM_LEFTALIGN, point.x, point.y, this);
}
else
CEdit::OnLButtonDown(nFlags, point);
}
#ifdef PPC_200X
// CCeEdit::OnKeyDown
//
// Handle the Up and Down arrows on the Pocket PC 2003
// This is not required for WM5
//
void CCeEdit::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// Check for the navigation keys
if(nChar == VK_DOWN || nChar == VK_UP)
{
// Set focus back to the parent (form list).
// The OnKeyUp events will be processed by it.
::SetFocus(::GetParent(m_hWnd));
}
else
{
CEdit::OnKeyDown(nChar, nRepCnt, nFlags);
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -