// TabEdit.cpp // // (c)1998-2025 Codejock Software, All Rights Reserved. // // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN // CONSENT OF CODEJOCK SOFTWARE. // // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A // SINGLE COMPUTER. // // CONTACT INFORMATION: // support@codejock.com // http://www.codejock.com // ///////////////////////////////////////////////////////////////////////////// #include "StdAfx.h" #include "Resource.h" #include "TabEdit.h" #include #ifdef _DEBUG # define new DEBUG_NEW # undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CTabEdit CTabEdit::CTabEdit() { } CTabEdit::~CTabEdit() { } BEGIN_MESSAGE_MAP(CTabEdit, CEdit) //{{AFX_MSG_MAP(CTabEdit) ON_WM_CREATE() ON_WM_CONTEXTMENU() ON_COMMAND(ID_EDIT_UNDO, OnEditUndo) ON_UPDATE_COMMAND_UI(ID_EDIT_UNDO, OnUpdateEditUndo) ON_COMMAND(ID_EDIT_CUT, OnEditCut) ON_UPDATE_COMMAND_UI(ID_EDIT_CUT, OnUpdateEditCut) ON_COMMAND(ID_EDIT_COPY, OnEditCopy) ON_UPDATE_COMMAND_UI(ID_EDIT_COPY, OnUpdateEditCopy) ON_COMMAND(ID_EDIT_PASTE, OnEditPaste) ON_UPDATE_COMMAND_UI(ID_EDIT_PASTE, OnUpdateEditPaste) ON_COMMAND(ID_EDIT_CLEAR, OnEditClear) ON_UPDATE_COMMAND_UI(ID_EDIT_CLEAR, OnUpdateEditClear) ON_COMMAND(ID_EDIT_SELECT_ALL, OnEditSelectAll) ON_UPDATE_COMMAND_UI(ID_EDIT_SELECT_ALL, OnUpdateEditSelectAll) ON_WM_ERASEBKGND() ON_WM_PAINT() ON_WM_DROPFILES() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CTabEdit message handlers BOOL CTabEdit::PreCreateWindow(CREATESTRUCT& cs) { if (!CEdit::PreCreateWindow(cs)) return FALSE; cs.style |= ES_MULTILINE | WS_HSCROLL | WS_VSCROLL; return TRUE; } int CTabEdit::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CEdit::OnCreate(lpCreateStruct) == -1) return -1; // Register as a drop target m_dropTarget.Register(this); DragAcceptFiles(); #ifdef _XTP_INCLUDE_CONTROLBARS // Hook the cool menu m_coolMenu.HookWindow(m_hWnd); m_coolMenu.LoadToolbar(IDR_MAINFRAME); #endif CreateFont(); return 0; } void CTabEdit::CreateFont() { LOGFONT lf; XTPAuxData().xtpFont.GetLogFont(&lf); STRCPY_S(lf.lfFaceName, LF_FACESIZE, _T("Courier New")); m_font.CreateFontIndirect(&lf); SetFont(&m_font); } void CTabEdit::OnContextMenu(CWnd*, CPoint point) { if (point.x == -1 && point.y == -1) { // keystroke invocation CRect rect; GetClientRect(rect); ClientToScreen(rect); point = rect.TopLeft(); point.Offset(XTP_DPI_X(5), XTP_DPI_Y(5)); } CMenu menu; VERIFY(menu.LoadMenu(IDR_POPUP_EDIT)); CMenu* pPopup = menu.GetSubMenu(0); _ASSERTE(pPopup != NULL); CWnd* pWndPopupOwner = this; while (pWndPopupOwner->GetStyle() & WS_CHILD) pWndPopupOwner = pWndPopupOwner->GetParent(); pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, pWndPopupOwner); } void CTabEdit::OnEditUndo() { Undo(); } void CTabEdit::OnUpdateEditUndo(CCmdUI* pCmdUI) { pCmdUI->Enable(CanUndo()); } void CTabEdit::OnEditCut() { Cut(); } void CTabEdit::OnUpdateEditCut(CCmdUI* pCmdUI) { pCmdUI->Enable(SelectionMade()); } void CTabEdit::OnEditCopy() { Copy(); } void CTabEdit::OnUpdateEditCopy(CCmdUI* pCmdUI) { pCmdUI->Enable(SelectionMade()); } void CTabEdit::OnEditPaste() { Paste(); } void CTabEdit::OnUpdateEditPaste(CCmdUI* pCmdUI) { pCmdUI->Enable(CanPaste()); } void CTabEdit::OnEditClear() { Clear(); } void CTabEdit::OnUpdateEditClear(CCmdUI* pCmdUI) { pCmdUI->Enable(SelectionMade()); } void CTabEdit::OnEditSelectAll() { SetSel(0, -1); } void CTabEdit::OnUpdateEditSelectAll(CCmdUI* pCmdUI) { pCmdUI->Enable(GetWindowTextLength() > 0); } BOOL CTabEdit::CanPaste() { return ::IsClipboardFormatAvailable(CF_TEXT); } BOOL CTabEdit::SelectionMade() { int nStartChar, nEndChar; GetSel(nStartChar, nEndChar); return (nStartChar < nEndChar); } BOOL CTabEdit::OnEraseBkgnd(CDC* pDC) { UNREFERENCED_PARAMETER(pDC); return TRUE; } void CTabEdit::OnPaint() { CPaintDC dc(this); // device context for painting // Get the client rect. CRect r; GetClientRect(&r); // Paint to a memory device context to help // eliminate screen flicker. CXTPBufferDC memDC(dc, r); memDC.FillSolidRect(r, GetXtremeColor(COLOR_WINDOW)); // Now let the window do its default painting... CEdit::DefWindowProc(WM_PAINT, (WPARAM)memDC.m_hDC, 0); } void CTabEdit::OnDropFiles(HDROP hDropInfo) { SetWindowText(_T("")); TCHAR szFileName[MAX_PATH]; ::DragQueryFile(hDropInfo, 0, szFileName, MAX_PATH); if (_taccess(szFileName, 0) != -1) { CStdioFile file(szFileName, CFile::modeRead | CFile::typeText); CString strBuffer1; file.ReadString(strBuffer1); CString strBuffer2; while (file.ReadString(strBuffer1)) { strBuffer2 += (strBuffer1 + _T("\r\n")); } file.Close(); if (strBuffer2.GetLength()) { SetWindowText(strBuffer2); } } CEdit::OnDropFiles(hDropInfo); }