www.pudn.com > MCF-RichEditCtrl.rar > RichEditGSDlg.cpp
// RichEditGSDlg.cpp : Implementierungsdatei
//
#include "stdafx.h"
#include "RichEditCtrlGS.h"
#include "RichEditGS.h"
#include "RichEditGSDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg-Dialogfeld für Anwendungsbefehl "Info"
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialogfelddaten
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// Vom Klassenassistenten generierte Überladungen virtueller Funktionen
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV-Unterstützung
//}}AFX_VIRTUAL
// Implementierung
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// Keine Nachrichten-Handler
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CRichEditGSDlg Dialogfeld
CRichEditGSDlg::CRichEditGSDlg(CWnd* pParent /*=NULL*/)
: CDialog(CRichEditGSDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CRichEditGSDlg)
// HINWEIS: Der Klassenassistent fügt hier Member-Initialisierung ein
//}}AFX_DATA_INIT
// Beachten Sie, dass LoadIcon unter Win32 keinen nachfolgenden DestroyIcon-Aufruf benötigt
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_size_DlgMinSize.cx = 0;
m_size_DlgMinSize.cy = 0;
m_size_DlgClientSize.cx = 0;
m_size_DlgClientSize.cy = 0;
m_size_EditMinSize.cx = 0;
m_size_EditMinSize.cy = 0;
m_rect_EditMinRect.SetRectEmpty();
}
void CRichEditGSDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CRichEditGSDlg)
DDX_Control(pDX, IDC_RICHEDIT1, m_Ctrl_RichEdit);
DDX_Control(pDX, IDC_RICHEDIT_STATIC, m_Ctrl_RichEditStatic);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CRichEditGSDlg, CDialog)
//{{AFX_MSG_MAP(CRichEditGSDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
ON_COMMAND(ID_FILE_SAVE, OnFileSave)
ON_COMMAND(ID_FILE_CLOSE, OnFileClose)
ON_COMMAND(ID_EDIT_COPY, OnEditCopy)
ON_COMMAND(ID_EDIT_CUT, OnEditCut)
ON_COMMAND(ID_EDIT_PASTE, OnEditPaste)
ON_COMMAND(ID_FORMAT_BOLD, OnFormatBold)
ON_COMMAND(ID_FORMAT_DURCHSTRICH, OnFormatStrikeout)
ON_COMMAND(ID_FORMAT_FARBE, OnFormatColour)
ON_COMMAND(ID_FORMAT_FONTS, OnFormatFonts)
ON_COMMAND(ID_FORMAT_KURSIV, OnFormatItalic)
ON_COMMAND(ID_FORMAT_UNTERSTRICH, OnFormatUnderline)
ON_COMMAND(ID_FORMAT_LINK, OnFormatLink)
ON_NOTIFY(EN_LINK, IDC_RICHEDIT_STATIC, OnLinkRicheditStatic)
ON_COMMAND(ID_FORMAT_ABSATZ_BLOCK, OnFormatParagraphJustify)
ON_COMMAND(ID_FORMAT_ABSATZ_LINKS, OnFormatParagraphLeft)
ON_COMMAND(ID_FORMAT_ABSATZ_MITTE, OnFormatParagraphCenter)
ON_COMMAND(ID_FORMAT_ABSATZ_NUMMER, OnFormatParagraphBullet)
ON_COMMAND(ID_FORMAT_ABSATZ_RECHTS, OnFormatParagraphRight)
ON_WM_SIZE()
ON_UPDATE_COMMAND_UI(ID_FORMAT_ABSATZ_BLOCK, OnUpdateFormatParagraphJustify)
ON_UPDATE_COMMAND_UI(ID_FORMAT_ABSATZ_LINKS, OnUpdateFormatParagraphLeft)
ON_UPDATE_COMMAND_UI(ID_FORMAT_ABSATZ_MITTE, OnUpdateFormatParagraphCenter)
ON_UPDATE_COMMAND_UI(ID_FORMAT_ABSATZ_NUMMER, OnUpdateFormatParagraphBullet)
ON_UPDATE_COMMAND_UI(ID_FORMAT_ABSATZ_RECHTS, OnUpdateFormatParagraphRight)
ON_UPDATE_COMMAND_UI(ID_FORMAT_BOLD, OnUpdateFormatBold)
ON_UPDATE_COMMAND_UI(ID_FORMAT_DURCHSTRICH, OnUpdateFormatStrikeout)
ON_UPDATE_COMMAND_UI(ID_FORMAT_KURSIV, OnUpdateFormatItalic)
ON_UPDATE_COMMAND_UI(ID_FORMAT_LINK, OnUpdateFormatLink)
ON_UPDATE_COMMAND_UI(ID_FORMAT_UNTERSTRICH, OnUpdateFormatUnderline)
//}}AFX_MSG_MAP
ON_MESSAGE(WM_KICKIDLE, OnKickIdle)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CRichEditGSDlg Nachrichten-Handler
BOOL CRichEditGSDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Hinzufügen des Menübefehls "Info..." zum Systemmenü.
// IDM_ABOUTBOX muss sich im Bereich der Systembefehle befinden.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Symbol für dieses Dialogfeld festlegen. Wird automatisch erledigt
// wenn das Hauptfenster der Anwendung kein Dialogfeld ist
SetIcon(m_hIcon, TRUE); // Großes Symbol verwenden
SetIcon(m_hIcon, FALSE); // Kleines Symbol verwenden
// ZU ERLEDIGEN: Hier zusätzliche Initialisierung einfügen
// Placing the toolbar
m_wndFormatBar.Create(this);
m_wndFormatBar.LoadToolBar(IDR_TOOLBAR_FORMAT);
m_wndFormatBar.SetBarStyle(CBRS_ALIGN_TOP | CBRS_TOOLTIPS | CBRS_FLYBY);
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
m_wndFormatBar.ShowWindow(SW_SHOW);
// Initializing the static RichEditControl
m_Ctrl_RichEdit.SetWordWrap();// Default is on
m_Ctrl_RichEditStatic.SetRTF(IDR_RTF_SOURCERER);
m_Ctrl_RichEditStatic.EnableWindow(true);
FINDTEXTEX findText;
findText.chrg.cpMin = 0;
findText.chrg.cpMax = -1;
m_Ctrl_RichEditStatic.SetSel(findText.chrgText);// Select all Text
m_Ctrl_RichEditStatic.SetProtected(); // and prevent overtyping
findText.lpstrText = LPTSTR("source code"); // make first link
findText.chrgText.cpMin = 0;
findText.chrgText.cpMax = 0;
m_Ctrl_RichEditStatic.SetSel(findText.chrg);
// m_Ctrl_RichEditStatic.SetBackgroundColor(false,GetSysColor(COLOR_BTNFACE));
if( -1 < m_Ctrl_RichEditStatic.FindText(FR_DOWN ,&findText) )
{ m_Ctrl_RichEditStatic.SetSel(findText.chrgText);
m_Ctrl_RichEditStatic.SetLink();
}
m_Ctrl_RichEditStatic.SetEventMask(ENM_LINK);// Enable linking
// Calculating minimum sizes for RichEdit control, dialog and dialog client area
CRect rectDlg;
WINDOWPLACEMENT wpl;
GetWindowPlacement(&wpl);
rectDlg = wpl.rcNormalPosition;
rectDlg.NormalizeRect();
m_size_DlgMinSize = rectDlg.Size();
GetClientRect(rectDlg);
m_size_DlgClientSize = rectDlg.Size();
m_Ctrl_RichEdit.GetWindowPlacement(&wpl);
m_rect_EditMinRect = wpl.rcNormalPosition;
m_size_EditMinSize = m_rect_EditMinRect.Size();
return TRUE; // Geben Sie TRUE zurück, außer ein Steuerelement soll den Fokus erhalten
}
void CRichEditGSDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// Wollen Sie Ihrem Dialogfeld eine Schaltfläche "Minimieren" hinzufügen, benötigen Sie
// den nachstehenden Code, um das Symbol zu zeichnen. Für MFC-Anwendungen, die das
// Dokument/Ansicht-Modell verwenden, wird dies automatisch für Sie erledigt.
void CRichEditGSDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // Gerätekontext für Zeichnen
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Symbol in Client-Rechteck zentrieren
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Symbol zeichnen
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// Die Systemaufrufe fragen den Cursorform ab, die angezeigt werden soll, während der Benutzer
// das zum Symbol verkleinerte Fenster mit der Maus zieht.
HCURSOR CRichEditGSDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CRichEditGSDlg::OnFileOpen()
{ static CString strInitDir = _T("");
static CString strInitExt = _T(".rtf");
static CString strInitFil = _T("*.rtf");
static CString strInitNamen = _T("RTF-Files (*.rtf)|All files (*.*)|*.*||");
CString strDateiname;
if( strInitDir.IsEmpty() )
{ LPTSTR pstr = strInitDir.GetBuffer(1032);
GetCurrentDirectory(1024,pstr);
strInitDir.ReleaseBuffer();
}
CFileDialog DateiDlg (true, strInitExt ,strInitFil,0,strInitNamen);
DateiDlg.m_ofn.Flags |= OFN_FILEMUSTEXIST;
DateiDlg.m_ofn.Flags |= OFN_NOCHANGEDIR;
// DateiDlg.m_ofn.Flags |= OFN_NOREADONLYRETURN;
DateiDlg.m_ofn.Flags |= OFN_PATHMUSTEXIST;
// DateiDlg.m_ofn.Flags |= OFN_HIDEREADONLY;
// DateiDlg.m_ofn.Flags |= OFN_OVERWRITEPROMPT;
DateiDlg.m_ofn.lpstrInitialDir = strInitDir;
if(IDOK == DateiDlg.DoModal())
{ strDateiname = DateiDlg.GetPathName();
int iPos = strDateiname.ReverseFind(TCHAR('\\'));
if( -1 != iPos )
{ strInitDir = strDateiname.Left(iPos);
}
m_Ctrl_RichEdit.LoadRTF(strDateiname);
}
}
void CRichEditGSDlg::OnFileSave()
{ static CString strInitDir = _T("");
static CString strInitExt = _T("rtf");
static CString strInitFil = _T("*.rtf");
static CString strInitNamen = _T("RTF-Files (*.rtf)|All files (*.*)|*.*||");
CString strDateiname;
if( strInitDir.IsEmpty() )
{ LPTSTR pstr = strInitDir.GetBuffer(1032);
GetCurrentDirectory(1024,pstr);
strInitDir.ReleaseBuffer();
}
if( !UpdateData(true) )
{ return;
}
CFileDialog DateiDlg (false, strInitExt ,strInitFil,0,strInitNamen);
// DateiDlg.m_ofn.Flags |= OFN_FILEMUSTEXIST;
// DateiDlg.m_ofn.Flags |= OFN_NOCHANGEDIR;
// DateiDlg.m_ofn.Flags |= OFN_NOREADONLYRETURN;
DateiDlg.m_ofn.Flags |= OFN_PATHMUSTEXIST;
// DateiDlg.m_ofn.Flags |= OFN_HIDEREADONLY;
// DateiDlg.m_ofn.Flags |= OFN_OVERWRITEPROMPT;
DateiDlg.m_ofn.lpstrInitialDir = strInitDir;
if(IDOK == DateiDlg.DoModal())
{ strDateiname = DateiDlg.GetPathName();
int iPos = strDateiname.ReverseFind(TCHAR('\\'));
if( -1 != iPos )
{ strInitDir = strDateiname.Left(iPos);
}
CFileStatus fileStatus;
BOOL bReturnStatus = FALSE;
bReturnStatus = CFile::GetStatus(strDateiname,fileStatus);
if( bReturnStatus )
{ int iReturn = AfxMessageBox(_T("This file already exists!\n Do you want to overwrite it?"),MB_YESNOCANCEL);
if( IDCANCEL == iReturn ) return;
if( IDNO == iReturn )
{ return;
}
}
m_Ctrl_RichEdit.WriteRTF(strDateiname);
}
}
void CRichEditGSDlg::OnFileClose()
{ OnCancel();
}
void CRichEditGSDlg::OnEditCopy()
{ m_Ctrl_RichEdit.Copy();
}
void CRichEditGSDlg::OnEditCut()
{ m_Ctrl_RichEdit.Cut();
}
void CRichEditGSDlg::OnEditPaste()
{ if( m_Ctrl_RichEdit.CanPaste() )
{ m_Ctrl_RichEdit.Paste();
}
}
void CRichEditGSDlg::OnFormatBold()
{ m_Ctrl_RichEdit.SetBold();
}
void CRichEditGSDlg::OnFormatStrikeout()
{ m_Ctrl_RichEdit.SetStrikeout();
}
void CRichEditGSDlg::OnFormatColour()
{ CColorDialog FarbDlg;
if( FarbDlg.DoModal() == IDOK )
{ m_Ctrl_RichEdit.SetColour(FarbDlg.GetColor());
}
}
void CRichEditGSDlg::OnFormatFonts()
{ CFontDialog FontDlg;
LOGFONT logFont;
int iFormat;
CString strFontName = m_Ctrl_RichEdit.GetFontName();
char * pStr = strFontName.GetBuffer(32);
strncpy(logFont.lfFaceName,pStr,31);
strFontName.ReleaseBuffer();
logFont.lfHeight = -m_Ctrl_RichEdit.GetFontSize();
iFormat = m_Ctrl_RichEdit.IsItalic();
if( -1 == iFormat )
{ FontDlg.m_cf.Flags |= CF_NOSTYLESEL;
}
else
{ logFont.lfItalic = iFormat;
}
logFont.lfWeight = FW_REGULAR;
iFormat = m_Ctrl_RichEdit.IsBold();
if( 1 == iFormat)
{ logFont.lfWeight = FW_BOLD;
}
if( -1 == iFormat )
{ FontDlg.m_cf.Flags |= CF_NOSTYLESEL;
}
logFont.lfUnderline = m_Ctrl_RichEdit.IsUnderlined();
logFont.lfStrikeOut = m_Ctrl_RichEdit.IsStrikeout();
FontDlg.m_cf.lStructSize = sizeof(CHOOSEFONT);
FontDlg.m_cf.hwndOwner = GetSafeHwnd();
FontDlg.m_cf.lpLogFont = &logFont;
FontDlg.m_cf.Flags |= CF_INITTOLOGFONTSTRUCT;
// FontDlg.m_cf.iPointSize = m_Ctrl_RichEdit.GetSelectionFontSize()*10;
if( IDOK == FontDlg.DoModal() )
{ m_Ctrl_RichEdit.SetRedraw(false);
m_Ctrl_RichEdit.SetFontName(FontDlg.m_cf.lpLogFont->lfFaceName);
m_Ctrl_RichEdit.SetFontSize(abs(FontDlg.m_cf.lpLogFont->lfHeight));
m_Ctrl_RichEdit.SetColour(FontDlg.m_cf.rgbColors);
CHARFORMAT cf;
cf.cbSize = sizeof(CHARFORMAT);
m_Ctrl_RichEdit.GetSelectionCharFormat(cf);
cf.dwMask = cf.dwEffects = 0;
if( (FontDlg.m_cf.nFontType & ITALIC_FONTTYPE) )
{ cf.dwMask |= CFM_ITALIC;
cf.dwEffects |= CFE_ITALIC;
}
if( (FontDlg.m_cf.nFontType & BOLD_FONTTYPE) )
{ cf.dwMask |= CFM_BOLD;
cf.dwEffects |= CFE_BOLD;
}
if( FontDlg.m_cf.lpLogFont->lfStrikeOut )
{ cf.dwMask |= CFM_STRIKEOUT;
cf.dwEffects |= CFE_STRIKEOUT;
}
if( FontDlg.m_cf.lpLogFont->lfUnderline )
{ cf.dwMask |= CFM_UNDERLINE;
cf.dwEffects |= CFE_UNDERLINE;
}
m_Ctrl_RichEdit.SetSelectionCharFormat(cf);
m_Ctrl_RichEdit.SetRedraw(true);
m_Ctrl_RichEdit.Invalidate();
}
// TODO: Code für Befehlsbehandlungsroutine hier einfügen
}
void CRichEditGSDlg::OnFormatItalic()
{ m_Ctrl_RichEdit.SetItalic();
}
void CRichEditGSDlg::OnFormatUnderline()
{ m_Ctrl_RichEdit.SetUnderlined();
}
void CRichEditGSDlg::OnFormatLink()
{ m_Ctrl_RichEdit.SetLink();
}
void CRichEditGSDlg::OnLinkRicheditStatic(NMHDR* pNMHDR, LRESULT* pResult)
{ ENLINK *pLink = reinterpret_cast(pNMHDR);
// TODO: Das Steuerelement sendet diese Benachrichtigung nur, wenn die Funktion
// CDialog::OnInitDialog() überschrieben wird, um die EM_SETEVENTMASK-Nachricht
// an das Steuerelement mit dem ENM_LINK-Attribut ORed in die Maske lParam zu senden.
FINDTEXTEX findText;
*pResult = 0;
if( pLink->msg == WM_LBUTTONDOWN )
{ long lStart = pLink->chrg.cpMin;
long lEnde = pLink->chrg.cpMin;
m_Ctrl_RichEditStatic.SetSel(pLink->chrg);
CString strLink = m_Ctrl_RichEditStatic.GetSelText();
if( 0 == strLink.CompareNoCase(_T("sourcerer")) )
{ m_Ctrl_RichEditStatic.SetRTF(IDR_RTF_SOURCERER);
*pResult = 1;
findText.chrg.cpMin = 0;
findText.chrg.cpMax = -1;
m_Ctrl_RichEditStatic.SetSel(findText.chrg);// prevent overtyping
m_Ctrl_RichEditStatic.SetProtected();
findText.lpstrText = LPTSTR("source code");
findText.chrgText.cpMin = 0;
findText.chrgText.cpMax = 0;
if( -1 < m_Ctrl_RichEditStatic.FindText(FR_DOWN ,&findText) )
{ m_Ctrl_RichEditStatic.SetSel(findText.chrgText);
m_Ctrl_RichEditStatic.SetLink();
}
}
if( 0 == strLink.CompareNoCase(_T("source code")) )
{ m_Ctrl_RichEditStatic.SetRTF(IDR_RTF_SOURCECODE);
*pResult = 1;
findText.chrg.cpMin = 0;
findText.chrg.cpMax = -1;
m_Ctrl_RichEditStatic.SetSel(findText.chrg);// prevent overtyping
m_Ctrl_RichEditStatic.SetProtected();
findText.lpstrText = LPTSTR("sourcerer");
findText.chrgText.cpMin = 0;
findText.chrgText.cpMax = 0;
if( -1 < m_Ctrl_RichEditStatic.FindText(FR_DOWN ,&findText) )
{ m_Ctrl_RichEditStatic.SetSel(findText.chrgText);
m_Ctrl_RichEditStatic.SetLink();
}
findText.lpstrText = LPTSTR("sourceress");
findText.chrgText.cpMin = 0;
findText.chrgText.cpMax = 0;
if( -1 < m_Ctrl_RichEditStatic.FindText(FR_DOWN ,&findText) )
{ m_Ctrl_RichEditStatic.SetSel(findText.chrgText);
m_Ctrl_RichEditStatic.SetLink();
}
}
if( 0 == strLink.CompareNoCase(_T("sourceress")) )
{ m_Ctrl_RichEditStatic.SetRTF(IDR_RTF_SOURCERESS);
*pResult = 1;
findText.chrg.cpMin = 0;
findText.chrg.cpMax = -1;
m_Ctrl_RichEditStatic.SetSel(findText.chrg);// prevent overtyping
m_Ctrl_RichEditStatic.SetProtected();
findText.lpstrText = LPTSTR("source code");
findText.chrgText.cpMin = 0;
findText.chrgText.cpMax = 0;
if( -1 < m_Ctrl_RichEditStatic.FindText(FR_DOWN ,&findText) )
{ m_Ctrl_RichEditStatic.SetSel(findText.chrgText);
m_Ctrl_RichEditStatic.SetLink();
}
}
m_Ctrl_RichEdit.SetFocus();
}
}
void CRichEditGSDlg::OnFormatParagraphJustify()
{ m_Ctrl_RichEdit.SetJustify();
}
void CRichEditGSDlg::OnFormatParagraphLeft()
{ m_Ctrl_RichEdit.SetLeft();
}
void CRichEditGSDlg::OnFormatParagraphCenter()
{ m_Ctrl_RichEdit.SetCenter();
}
void CRichEditGSDlg::OnFormatParagraphBullet()
{ m_Ctrl_RichEdit.SetBullet();
}
void CRichEditGSDlg::OnFormatParagraphRight()
{ m_Ctrl_RichEdit.SetRight();
}
void CRichEditGSDlg::OnSize(UINT nType, int cx, int cy)
{ CDialog::OnSize(nType, cx, cy);
if( !IsWindow(m_Ctrl_RichEdit.GetSafeHwnd()) )
return;
int iDeltaX = 0;
int iDeltaY = 0;
if( cx > m_size_DlgClientSize.cx )
iDeltaX = cx - m_size_DlgClientSize.cx;
if( cy > m_size_DlgClientSize.cy )
iDeltaY = cy - m_size_DlgClientSize.cy;
CRect rectPos;
rectPos = m_rect_EditMinRect;
rectPos.right = m_rect_EditMinRect.left + m_size_EditMinSize.cx + iDeltaX;
rectPos.bottom = m_rect_EditMinRect.top + m_size_EditMinSize.cy + iDeltaY;
m_Ctrl_RichEdit.MoveWindow(rectPos);
m_Ctrl_RichEdit.SetRedraw(true);
m_Ctrl_RichEdit.Invalidate();
}
void CRichEditGSDlg::OnUpdateFormatParagraphJustify(CCmdUI* pCmdUI)
{ CToolBarCtrl &pToolCtrl = m_wndFormatBar.GetToolBarCtrl();
int iValue = m_Ctrl_RichEdit.IsJustified();
switch( iValue)
{ case -1: pToolCtrl.Indeterminate(ID_FORMAT_ABSATZ_BLOCK,true);
pToolCtrl.CheckButton(ID_FORMAT_ABSATZ_BLOCK,false);
break;
case 1: pToolCtrl.Indeterminate(ID_FORMAT_ABSATZ_BLOCK,false);
pToolCtrl.CheckButton(ID_FORMAT_ABSATZ_BLOCK,true);
break;
default: pToolCtrl.CheckButton(ID_FORMAT_ABSATZ_BLOCK,false);
pToolCtrl.Indeterminate(ID_FORMAT_ABSATZ_BLOCK,false);
break;
}
}
void CRichEditGSDlg::OnUpdateFormatParagraphLeft(CCmdUI* pCmdUI)
{ CToolBarCtrl &pToolCtrl = m_wndFormatBar.GetToolBarCtrl();
int iValue = m_Ctrl_RichEdit.IsLeft();
switch( iValue)
{ case -1: pToolCtrl.Indeterminate(ID_FORMAT_ABSATZ_LINKS,true);
pToolCtrl.CheckButton(ID_FORMAT_ABSATZ_LINKS,false);
break;
case 1: pToolCtrl.Indeterminate(ID_FORMAT_ABSATZ_LINKS,false);
pToolCtrl.CheckButton(ID_FORMAT_ABSATZ_LINKS,true);
break;
default: pToolCtrl.CheckButton(ID_FORMAT_ABSATZ_LINKS,false);
pToolCtrl.Indeterminate(ID_FORMAT_ABSATZ_LINKS,false);
break;
}
}
void CRichEditGSDlg::OnUpdateFormatParagraphCenter(CCmdUI* pCmdUI)
{ CToolBarCtrl &pToolCtrl = m_wndFormatBar.GetToolBarCtrl();
int iValue = m_Ctrl_RichEdit.IsCentered();
switch( iValue)
{ case -1: pToolCtrl.Indeterminate(ID_FORMAT_ABSATZ_MITTE,true);
pToolCtrl.CheckButton(ID_FORMAT_ABSATZ_MITTE,false);
break;
case 1: pToolCtrl.Indeterminate(ID_FORMAT_ABSATZ_MITTE,false);
pToolCtrl.CheckButton(ID_FORMAT_ABSATZ_MITTE,true);
break;
default: pToolCtrl.CheckButton(ID_FORMAT_ABSATZ_MITTE,false);
pToolCtrl.Indeterminate(ID_FORMAT_ABSATZ_MITTE,false);
break;
}
}
void CRichEditGSDlg::OnUpdateFormatParagraphBullet(CCmdUI* pCmdUI)
{ CToolBarCtrl &pToolCtrl = m_wndFormatBar.GetToolBarCtrl();
int iValue = m_Ctrl_RichEdit.IsBulleted();
switch( iValue)
{ case -1: pToolCtrl.Indeterminate(ID_FORMAT_ABSATZ_NUMMER,true);
pToolCtrl.CheckButton(ID_FORMAT_ABSATZ_NUMMER,false);
break;
case 1: pToolCtrl.Indeterminate(ID_FORMAT_ABSATZ_NUMMER,false);
pToolCtrl.CheckButton(ID_FORMAT_ABSATZ_NUMMER,true);
break;
default: pToolCtrl.CheckButton(ID_FORMAT_ABSATZ_NUMMER,false);
pToolCtrl.Indeterminate(ID_FORMAT_ABSATZ_NUMMER,false);
break;
}
}
void CRichEditGSDlg::OnUpdateFormatParagraphRight(CCmdUI* pCmdUI)
{ CToolBarCtrl &pToolCtrl = m_wndFormatBar.GetToolBarCtrl();
int iValue = m_Ctrl_RichEdit.IsRight();
switch( iValue)
{ case -1: pToolCtrl.Indeterminate(ID_FORMAT_ABSATZ_RECHTS,true);
pToolCtrl.CheckButton(ID_FORMAT_ABSATZ_RECHTS,false);
break;
case 1: pToolCtrl.Indeterminate(ID_FORMAT_ABSATZ_RECHTS,false);
pToolCtrl.CheckButton(ID_FORMAT_ABSATZ_RECHTS,true);
break;
default: pToolCtrl.CheckButton(ID_FORMAT_ABSATZ_RECHTS,false);
pToolCtrl.Indeterminate(ID_FORMAT_ABSATZ_RECHTS,false);
break;
}
}
void CRichEditGSDlg::OnUpdateFormatBold(CCmdUI* pCmdUI)
{ CToolBarCtrl &pToolCtrl = m_wndFormatBar.GetToolBarCtrl();
int iValue = m_Ctrl_RichEdit.IsBold();
switch( iValue)
{ case -1: pToolCtrl.Indeterminate(ID_FORMAT_BOLD,true);
pToolCtrl.CheckButton(ID_FORMAT_BOLD,false);
break;
case 1: pToolCtrl.Indeterminate(ID_FORMAT_BOLD,false);
pToolCtrl.CheckButton(ID_FORMAT_BOLD,true);
break;
default: pToolCtrl.CheckButton(ID_FORMAT_BOLD,false);
pToolCtrl.Indeterminate(ID_FORMAT_BOLD,false);
break;
}
}
void CRichEditGSDlg::OnUpdateFormatStrikeout(CCmdUI* pCmdUI)
{ CToolBarCtrl &pToolCtrl = m_wndFormatBar.GetToolBarCtrl();
int iValue = m_Ctrl_RichEdit.IsStrikeout();
switch( iValue)
{ case -1: pToolCtrl.Indeterminate(ID_FORMAT_DURCHSTRICH,true);
pToolCtrl.CheckButton(ID_FORMAT_DURCHSTRICH,false);
break;
case 1: pToolCtrl.Indeterminate(ID_FORMAT_DURCHSTRICH,false);
pToolCtrl.CheckButton(ID_FORMAT_DURCHSTRICH,true);
break;
default: pToolCtrl.CheckButton(ID_FORMAT_DURCHSTRICH,false);
pToolCtrl.Indeterminate(ID_FORMAT_DURCHSTRICH,false);
break;
}
}
void CRichEditGSDlg::OnUpdateFormatItalic(CCmdUI* pCmdUI)
{ CToolBarCtrl &pToolCtrl = m_wndFormatBar.GetToolBarCtrl();
int iValue = m_Ctrl_RichEdit.IsItalic();
switch( iValue)
{ case -1: pToolCtrl.Indeterminate(ID_FORMAT_KURSIV,true);
pToolCtrl.CheckButton(ID_FORMAT_KURSIV,false);
break;
case 1: pToolCtrl.Indeterminate(ID_FORMAT_KURSIV,false);
pToolCtrl.CheckButton(ID_FORMAT_KURSIV,true);
break;
default: pToolCtrl.CheckButton(ID_FORMAT_KURSIV,false);
pToolCtrl.Indeterminate(ID_FORMAT_KURSIV,false);
break;
}
}
void CRichEditGSDlg::OnUpdateFormatLink(CCmdUI* pCmdUI)
{ CToolBarCtrl &pToolCtrl = m_wndFormatBar.GetToolBarCtrl();
int iValue = m_Ctrl_RichEdit.IsLinked();
switch( iValue)
{ case -1: pToolCtrl.Indeterminate(ID_FORMAT_LINK,true);
pToolCtrl.CheckButton(ID_FORMAT_LINK,false);
break;
case 1: pToolCtrl.Indeterminate(ID_FORMAT_LINK,false);
pToolCtrl.CheckButton(ID_FORMAT_LINK,true);
break;
default: pToolCtrl.CheckButton(ID_FORMAT_LINK,false);
pToolCtrl.Indeterminate(ID_FORMAT_LINK,false);
break;
}
}
void CRichEditGSDlg::OnUpdateFormatUnderline(CCmdUI* pCmdUI)
{ CToolBarCtrl &pToolCtrl = m_wndFormatBar.GetToolBarCtrl();
int iValue = m_Ctrl_RichEdit.IsUnderlined();
switch( iValue)
{ case -1: pToolCtrl.Indeterminate(ID_FORMAT_UNTERSTRICH,true);
pToolCtrl.CheckButton(ID_FORMAT_UNTERSTRICH,false);
break;
case 1: pToolCtrl.Indeterminate(ID_FORMAT_UNTERSTRICH,false);
pToolCtrl.CheckButton(ID_FORMAT_UNTERSTRICH,true);
break;
default: pToolCtrl.CheckButton(ID_FORMAT_UNTERSTRICH,false);
pToolCtrl.Indeterminate(ID_FORMAT_UNTERSTRICH,false);
break;
}
}
// Putting the Buttons to work
LRESULT CRichEditGSDlg::OnKickIdle(WPARAM, LPARAM)
{ TBBUTTON infoBtn;
int i,iCount;
CCmdUI cmdUI;
CToolBarCtrl &pToolCtrl = m_wndFormatBar.GetToolBarCtrl();
iCount = pToolCtrl.GetButtonCount();
for( i = 0; i < iCount; i++ )
{ pToolCtrl.GetButton(i,&infoBtn);
cmdUI.m_nID = infoBtn.idCommand;
cmdUI.DoUpdate(this, FALSE);
}
return TRUE;
}