// formatpa.cpp : implementation file // // This is a part of the Microsoft Foundation Classes C++ library. // Copyright (C) 1992-1995 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" #include "wordpad.h" #include "formatpa.h" #include "ddxm.h" #include "helpids.h" #ifdef _DEBUG #undef THIS_FILE static char BASED_CODE THIS_FILE[] = __FILE__; #endif const DWORD CFormatParaDlg::m_nHelpIDs[] = { IDC_EDIT_LEFT, IDH_WORDPAD_INDENT_LEFT, IDC_EDIT_RIGHT, IDH_WORDPAD_INDENT_RIGHT, IDC_EDIT_FIRST_LINE, IDH_WORDPAD_INDENT_FIRST, IDC_BOX, (DWORD) -1, IDC_COMBO_ALIGNMENT, IDH_WORDPAD_ALIGN, IDC_TEXT_ALIGNMENT, IDH_WORDPAD_ALIGN, 0, 0 }; ///////////////////////////////////////////////////////////////////////////// // CFormatParaDlg dialog CFormatParaDlg::CFormatParaDlg(PARAFORMAT& pf, CWnd* pParent /*=NULL*/) : CCSDialog(CFormatParaDlg::IDD, pParent) { m_pf = pf; if (m_pf.dwMask & PFM_ALIGNMENT) { if (m_pf.wAlignment & PFA_LEFT && m_pf.wAlignment & PFA_RIGHT) m_nAlignment = 2; else m_nAlignment = (m_pf.wAlignment & PFA_LEFT) ? 0 : 1; } else m_nAlignment = -1; //{{AFX_DATA_INIT(CFormatParaDlg) m_nFirst = 0; m_nLeft = 0; m_nRight = 0; //}}AFX_DATA_INIT } void CFormatParaDlg::DoDataExchange(CDataExchange* pDX) { CCSDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CFormatParaDlg) DDX_CBIndex(pDX, IDC_COMBO_ALIGNMENT, m_nAlignment); DDX_Twips(pDX, IDC_EDIT_FIRST_LINE, m_nFirst); DDV_MinMaxTwips(pDX, m_nFirst, -31680, 31680); DDX_Twips(pDX, IDC_EDIT_LEFT, m_nLeft); DDV_MinMaxTwips(pDX, m_nLeft, -31680, 31680); DDX_Twips(pDX, IDC_EDIT_RIGHT, m_nRight); DDV_MinMaxTwips(pDX, m_nRight, -31680, 31680); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CFormatParaDlg, CCSDialog) //{{AFX_MSG_MAP(CFormatParaDlg) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CFormatParaDlg message handlers void CFormatParaDlg::OnOK() { CCSDialog::OnOK(); m_pf.dwMask = 0; if (m_nAlignment >= 0) { ASSERT(m_nAlignment < 3); m_pf.dwMask |= PFM_ALIGNMENT; m_pf.wAlignment = (WORD)((m_nAlignment == 0) ? PFA_LEFT : (m_nAlignment == 1) ? PFA_RIGHT : PFA_CENTER); } //in case we have RTL Reading order, we need to reverse the sides indent. if ( m_pf.wEffects & PFE_RTLPARA ) { if (m_nLeft != DDXM_BLANK) m_pf.dwMask |= PFM_RIGHTINDENT; if (m_nRight != DDXM_BLANK && m_nFirst != DDXM_BLANK) m_pf.dwMask |= PFM_STARTINDENT; if (m_nFirst != DDXM_BLANK) m_pf.dwMask |= PFM_OFFSET; m_pf.dxRightIndent = m_nLeft; m_pf.dxOffset = -m_nFirst; m_pf.dxStartIndent = m_nRight + m_nFirst; } else { if (m_nRight != DDXM_BLANK) m_pf.dwMask |= PFM_RIGHTINDENT; if (m_nLeft != DDXM_BLANK && m_nFirst != DDXM_BLANK) m_pf.dwMask |= PFM_STARTINDENT; if (m_nFirst != DDXM_BLANK) m_pf.dwMask |= PFM_OFFSET; m_pf.dxRightIndent = m_nRight; m_pf.dxOffset = -m_nFirst; m_pf.dxStartIndent = m_nLeft + m_nFirst; } } BOOL CFormatParaDlg::OnInitDialog() { CComboBox* pBox = (CComboBox*)GetDlgItem(IDC_COMBO_ALIGNMENT); CString str; str.LoadString(IDS_LEFT); pBox->AddString(str); str.LoadString(IDS_RIGHT); pBox->AddString(str); str.LoadString(IDS_CENTER); pBox->AddString(str); if (m_nWordWrap == 0) { GetDlgItem(IDC_COMBO_ALIGNMENT)->EnableWindow(FALSE); GetDlgItem(IDC_TEXT_ALIGNMENT)->EnableWindow(FALSE); } if ( m_pf.wEffects & PFE_RTLPARA ) { m_nLeft = (m_pf.dwMask & PFM_RIGHTINDENT) ? m_pf.dxRightIndent : DDXM_BLANK; if (m_pf.dwMask & PFM_OFFSET) { m_nFirst = -m_pf.dxOffset; m_nRight = (m_pf.dwMask & PFM_STARTINDENT) ? m_pf.dxStartIndent + m_pf.dxOffset : DDXM_BLANK; } else m_nRight = m_nFirst = DDXM_BLANK; } else { m_nRight = (m_pf.dwMask & PFM_RIGHTINDENT) ? m_pf.dxRightIndent : DDXM_BLANK; if (m_pf.dwMask & PFM_OFFSET) { m_nFirst = -m_pf.dxOffset; m_nLeft = (m_pf.dwMask & PFM_STARTINDENT) ? m_pf.dxStartIndent + m_pf.dxOffset : DDXM_BLANK; } else m_nLeft = m_nFirst = DDXM_BLANK; } CCSDialog::OnInitDialog(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }