ParagraphDialog.cpp
上传用户:shilei2004
上传日期:2020-07-18
资源大小:83k
文件大小:3k
源码类别:

RichEdit

开发平台:

Visual C++

  1. // ParagraphDialog.cpp : implementation file
  2. // Download by http://www.codefans.net
  3. #include "stdafx.h"
  4. #include "Edit.h"
  5. #include "ParagraphDialog.h"
  6. #include <limits.h>
  7. #define DDXM_BLANK INT_MAX
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CParagraphDialog dialog
  15. CParagraphDialog::CParagraphDialog(PARAFORMAT &pf, CWnd* pParent /*=NULL*/)
  16. : CDialog(CParagraphDialog::IDD, pParent)
  17. {
  18. m_pf = pf;
  19. if (m_pf.dwMask & PFM_ALIGNMENT)
  20. {
  21. if (m_pf.wAlignment & PFA_LEFT && m_pf.wAlignment & PFA_RIGHT)
  22. m_nAlignment = 2;
  23. else
  24. m_nAlignment = (m_pf.wAlignment & PFA_LEFT) ? 0 : 1;
  25. }
  26. else
  27. m_nAlignment = -1;
  28. //{{AFX_DATA_INIT(CParagraphDialog)
  29. m_nFirst = 0;
  30. m_nLeft = 0;
  31. m_nRight = 0;
  32. //}}AFX_DATA_INIT
  33. }
  34. void CParagraphDialog::DoDataExchange(CDataExchange* pDX)
  35. {
  36. CDialog::DoDataExchange(pDX);
  37. //{{AFX_DATA_MAP(CParagraphDialog)
  38. DDX_CBIndex(pDX, IDC_COMBO_ALIGNMENT, m_nAlignment);
  39. DDX_Text(pDX, IDC_INDENT_LEFT, m_nLeft);
  40. DDV_MinMaxDouble(pDX, m_nLeft, -31680, 31680);
  41. DDX_Text(pDX, IDC_INDENT_RIGHT, m_nRight);
  42. DDV_MinMaxDouble(pDX, m_nRight, -31680, 31680);
  43. DDX_Text(pDX, IDC_INDENT_FIRST, m_nFirst);
  44. DDV_MinMaxDouble(pDX, m_nFirst, -31680, 31680);
  45. //}}AFX_DATA_MAP
  46. }
  47. BEGIN_MESSAGE_MAP(CParagraphDialog, CDialog)
  48. //{{AFX_MSG_MAP(CParagraphDialog)
  49. //}}AFX_MSG_MAP
  50. END_MESSAGE_MAP()
  51. /////////////////////////////////////////////////////////////////////////////
  52. // CParagraphDialog message handlers
  53. BOOL CParagraphDialog::OnInitDialog() 
  54. {
  55. CComboBox* pBox = (CComboBox*)GetDlgItem(IDC_COMBO_ALIGNMENT);
  56. CString str;
  57. str.LoadString(IDS_LEFT);
  58. pBox->AddString(str);
  59. str.LoadString(IDS_RIGHT);
  60. pBox->AddString(str);
  61. str.LoadString(IDS_CENTER);
  62. pBox->AddString(str);
  63. m_nRight = (m_pf.dwMask & PFM_RIGHTINDENT) ? m_pf.dxRightIndent : DDXM_BLANK;
  64. if (m_pf.dwMask & PFM_OFFSET)
  65. {
  66. m_nFirst = -m_pf.dxOffset;
  67. m_nLeft = (m_pf.dwMask & PFM_STARTINDENT) ? 
  68. m_pf.dxStartIndent + m_pf.dxOffset : DDXM_BLANK;
  69. }
  70. else
  71. m_nLeft = m_nFirst = DDXM_BLANK;
  72. CDialog::OnInitDialog();
  73. return TRUE;  // return TRUE unless you set the focus to a control
  74.               // EXCEPTION: OCX Property Pages should return FALSE
  75. }
  76. void CParagraphDialog::OnOK()
  77. {
  78. CDialog::OnOK();
  79. m_pf.dwMask = 0;
  80. if (m_nAlignment >= 0)
  81. {
  82. ASSERT(m_nAlignment < 3);
  83. m_pf.dwMask |= PFM_ALIGNMENT;
  84. m_pf.wAlignment = (WORD)((m_nAlignment == 0) ? PFA_LEFT : 
  85. (m_nAlignment == 1) ? PFA_RIGHT : PFA_CENTER);
  86. }
  87. if (m_nRight != DDXM_BLANK)
  88. m_pf.dwMask |= PFM_RIGHTINDENT;
  89. if (m_nLeft != DDXM_BLANK && m_nFirst != DDXM_BLANK)
  90. m_pf.dwMask |= PFM_STARTINDENT;
  91. if (m_nFirst != DDXM_BLANK)
  92. m_pf.dwMask |= PFM_OFFSET;
  93. m_pf.dxRightIndent = m_nRight;
  94. m_pf.dxOffset = -m_nFirst;
  95. m_pf.dxStartIndent = m_nLeft + m_nFirst;
  96. }