| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211 |
- // This is a part of the Microsoft Foundation Classes C++ library.
- // Copyright (C) 1992-1998 Microsoft Corporation
- // All rights reserved.
- //
- // This source code is only intended as a supplement to the
- // Microsoft Foundation Classes Reference and related
- // electronic documentation provided with the library.
- // See these sources for detailed information regarding the
- // Microsoft Foundation Classes product.
- #include "stdafx.h"
- #ifdef AFX_CMNCTL_SEG
- #pragma code_seg(AFX_CMNCTL_SEG)
- #endif
- #ifdef _DEBUG
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- #define new DEBUG_NEW
- #ifndef _AFX_NO_RICHEDIT_SUPPORT
- /////////////////////////////////////////////////////////////////////////////
- // _AFX_RICHEDIT_STATE
- _AFX_RICHEDIT_STATE::~_AFX_RICHEDIT_STATE()
- {
- if (m_hInstRichEdit != NULL)
- ::FreeLibrary(m_hInstRichEdit);
- }
- _AFX_RICHEDIT_STATE* AFX_CDECL AfxGetRichEditState()
- {
- return _afxRichEditState.GetData();
- }
- BOOL PASCAL AfxInitRichEdit()
- {
- _AFX_RICHEDIT_STATE* pState = _afxRichEditState;
- if (pState->m_hInstRichEdit == NULL)
- pState->m_hInstRichEdit = LoadLibraryA("RICHED32.DLL");
- return pState->m_hInstRichEdit != NULL;
- }
- /////////////////////////////////////////////////////////////////////////////
- // CRichEdit
- BOOL CRichEditCtrl::Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID)
- {
- if (!AfxInitRichEdit())
- return FALSE;
- CWnd* pWnd = this;
- return pWnd->Create(_T("RICHEDIT"), NULL, dwStyle, rect, pParentWnd, nID);
- }
- int CRichEditCtrl::GetLine(int nIndex, LPTSTR lpszBuffer) const
- {
- ASSERT(::IsWindow(m_hWnd));
- return (int)::SendMessage(m_hWnd, EM_GETLINE, nIndex,
- (LPARAM)lpszBuffer);
- }
- int CRichEditCtrl::LineIndex(int nLine /* = -1 */) const
- {
- ASSERT(::IsWindow(m_hWnd));
- return (int)::SendMessage(m_hWnd, EM_LINEINDEX, nLine, 0);
- }
- int CRichEditCtrl::LineLength(int nLine /* = -1 */) const
- {
- ASSERT(::IsWindow(m_hWnd));
- return (int)::SendMessage(m_hWnd, EM_LINELENGTH, nLine, 0);
- }
- void CRichEditCtrl::LineScroll(int nLines, int nChars /* = 0 */)
- {
- ASSERT(::IsWindow(m_hWnd));
- ::SendMessage(m_hWnd, EM_LINESCROLL, nChars, nLines);
- }
- void CRichEditCtrl::SetSel(long nStartChar, long nEndChar)
- {
- ASSERT(::IsWindow(m_hWnd));
- CHARRANGE cr;
- cr.cpMin = nStartChar;
- cr.cpMax = nEndChar;
- ::SendMessage(m_hWnd, EM_EXSETSEL, 0, (LPARAM)&cr);
- }
- BOOL CRichEditCtrl::CanPaste(UINT nFormat) const
- {
- ASSERT(::IsWindow(m_hWnd));
- COleMessageFilter* pFilter = AfxOleGetMessageFilter();
- if (pFilter != NULL)
- pFilter->BeginBusyState();
- BOOL b = (BOOL)::SendMessage(m_hWnd, EM_CANPASTE, nFormat, 0L);
- if (pFilter != NULL)
- pFilter->EndBusyState();
- return b;
- }
- void CRichEditCtrl::PasteSpecial(UINT nClipFormat, DWORD dvAspect, HMETAFILE hMF)
- {
- ASSERT(::IsWindow(m_hWnd));
- REPASTESPECIAL reps;
- reps.dwAspect = dvAspect;
- reps.dwParam = (DWORD)hMF;
- ::SendMessage(m_hWnd, EM_PASTESPECIAL, nClipFormat, (LPARAM)&reps);
- }
- int CRichEditCtrl::GetLine(int nIndex, LPTSTR lpszBuffer, int nMaxLength) const
- {
- ASSERT(::IsWindow(m_hWnd));
- *(LPINT)lpszBuffer = nMaxLength;
- return (int)::SendMessage(m_hWnd, EM_GETLINE, nIndex, (LPARAM)lpszBuffer);
- }
- void CRichEditCtrl::GetSel(long& nStartChar, long& nEndChar) const
- {
- ASSERT(::IsWindow(m_hWnd));
- CHARRANGE cr;
- ::SendMessage(m_hWnd, EM_EXGETSEL, 0, (LPARAM)&cr);
- nStartChar = cr.cpMin;
- nEndChar = cr.cpMax;
- }
- CString CRichEditCtrl::GetSelText() const
- {
- ASSERT(::IsWindow(m_hWnd));
- CHARRANGE cr;
- cr.cpMin = cr.cpMax = 0;
- ::SendMessage(m_hWnd, EM_EXGETSEL, 0, (LPARAM)&cr);
- LPSTR lpsz = (char*)_alloca((cr.cpMax - cr.cpMin + 1)*2);
- lpsz[0] = NULL;
- ::SendMessage(m_hWnd, EM_GETSELTEXT, 0, (LPARAM)lpsz);
- return lpsz;
- }
- IRichEditOle* CRichEditCtrl::GetIRichEditOle() const
- {
- ASSERT(::IsWindow(m_hWnd));
- IRichEditOle *pRichItem = NULL;
- ::SendMessage(m_hWnd, EM_GETOLEINTERFACE, 0, (LPARAM)&pRichItem);
- return pRichItem;
- }
- BOOL CRichEditCtrl::SetDefaultCharFormat(CHARFORMAT &cf)
- {
- ASSERT(::IsWindow(m_hWnd));
- cf.cbSize = sizeof(CHARFORMAT);
- return (BOOL)::SendMessage(m_hWnd, EM_SETCHARFORMAT, 0, (LPARAM)&cf);
- }
- BOOL CRichEditCtrl::SetSelectionCharFormat(CHARFORMAT &cf)
- {
- ASSERT(::IsWindow(m_hWnd));
- cf.cbSize = sizeof(CHARFORMAT);
- return (BOOL)::SendMessage(m_hWnd, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf);
- }
- BOOL CRichEditCtrl::SetWordCharFormat(CHARFORMAT &cf)
- {
- ASSERT(::IsWindow(m_hWnd));
- cf.cbSize = sizeof(CHARFORMAT);
- return (BOOL)::SendMessage(m_hWnd, EM_SETCHARFORMAT, SCF_SELECTION|SCF_WORD, (LPARAM)&cf);
- }
- DWORD CRichEditCtrl::GetDefaultCharFormat(CHARFORMAT &cf) const
- {
- ASSERT(::IsWindow(m_hWnd));
- cf.cbSize = sizeof(CHARFORMAT);
- return (DWORD)::SendMessage(m_hWnd, EM_GETCHARFORMAT, 0, (LPARAM)&cf);
- }
- DWORD CRichEditCtrl::GetSelectionCharFormat(CHARFORMAT &cf) const
- {
- ASSERT(::IsWindow(m_hWnd));
- cf.cbSize = sizeof(CHARFORMAT);
- return (DWORD)::SendMessage(m_hWnd, EM_GETCHARFORMAT, 1, (LPARAM)&cf);
- }
- DWORD CRichEditCtrl::GetParaFormat(PARAFORMAT &pf) const
- {
- ASSERT(::IsWindow(m_hWnd));
- pf.cbSize = sizeof(PARAFORMAT);
- return (DWORD)::SendMessage(m_hWnd, EM_GETPARAFORMAT, 0, (LPARAM)&pf);
- }
- BOOL CRichEditCtrl::SetParaFormat(PARAFORMAT &pf)
- {
- ASSERT(::IsWindow(m_hWnd));
- pf.cbSize = sizeof(PARAFORMAT);
- return (BOOL)::SendMessage(m_hWnd, EM_SETPARAFORMAT, 0, (LPARAM)&pf);
- }
- #endif //!_AFX_NO_RICHEDIT_SUPPORT
- /////////////////////////////////////////////////////////////////////////////
- #pragma warning(disable: 4074)
- #pragma init_seg(lib)
- #ifndef _AFX_NO_RICHEDIT_SUPPORT
- PROCESS_LOCAL(_AFX_RICHEDIT_STATE, _afxRichEditState)
- #endif
- /////////////////////////////////////////////////////////////////////////////
|