DlgLineAttSet.cpp
上传用户:oybseng
上传日期:2015-04-27
资源大小:7831k
文件大小:5k
源码类别:

GDI/图象编程

开发平台:

Visual C++

  1. // DlgLineAttSet.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "..qgis.h"
  5. #include "DlgLineAttSet.h"
  6. #include "..QObjectsincludeQBaseObj.h"
  7. #include "..QObjectsincludeQLineObj.h"
  8. #include "..QObjectsincludeQLayerObj.h"
  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #undef THIS_FILE
  12. static char THIS_FILE[] = __FILE__;
  13. #endif
  14. /////////////////////////////////////////////////////////////////////////////
  15. // CDlgLineAttSet dialog
  16. CDlgLineAttSet::CDlgLineAttSet(CWnd* pParent /*=NULL*/)
  17. : CDialog(CDlgLineAttSet::IDD, pParent)
  18. {
  19. //{{AFX_DATA_INIT(CDlgLineAttSet)
  20. m_fLineWidth = 0.0;
  21. m_bLineShowPt = FALSE;
  22. m_lLineID = 0;
  23. m_szLineLayer = _T("");
  24. m_fLineLength = 0.0;
  25. m_szLineName = _T("");
  26. m_nLineClosed = -1;
  27. m_pLayerObj = NULL;
  28. m_pLineObj = NULL;
  29. m_nOpFlag = 2;
  30. //}}AFX_DATA_INIT
  31. }
  32. CDlgLineAttSet::CDlgLineAttSet(CQLayerObj * pLyrObj,int nOpflag /* = 2 */,CQLineObj * pLineObj /* = NULL */,CWnd * pParent /* = NULL */)
  33. : CDialog(CDlgLineAttSet::IDD,pParent)
  34. {
  35. m_nOpFlag = nOpflag;
  36. if(pLyrObj) m_pLayerObj = pLyrObj;
  37. if(pLineObj) m_pLineObj= pLineObj;
  38. if(m_pLineObj && m_pLayerObj)
  39. {
  40. if(m_pLineObj->GetObjLayerID() != m_pLayerObj->GetLayerID())
  41. return;  // 假如选中的线条跟图层参数不是同一个 则返回
  42. }
  43. }
  44. void CDlgLineAttSet::DoDataExchange(CDataExchange* pDX)
  45. {
  46. CDialog::DoDataExchange(pDX);
  47. //{{AFX_DATA_MAP(CDlgLineAttSet)
  48. DDX_Control(pDX, IDC_COMBO_LINE_STYLE_NEW, m_ctLineStyle);
  49. DDX_Text(pDX, IDC_EDIT_LINE_WIDTH_QGIS, m_fLineWidth);
  50. DDV_MinMaxDouble(pDX, m_fLineWidth, 0., 20.);
  51. DDX_Check(pDX, IDC_CHECK_LINE_SHOWPT_QGIS, m_bLineShowPt);
  52. DDX_Text(pDX, IDC_EDIT_LINE_ID_QGIS, m_lLineID);
  53. DDX_Text(pDX, IDC_EDIT_LINE_LAYER_QGIS, m_szLineLayer);
  54. DDX_Text(pDX, IDC_EDIT_LINE_LENGTH_QGIS, m_fLineLength);
  55. DDX_Text(pDX, IDC_EDIT_LINE_NAME_QGIS, m_szLineName);
  56. DDX_Radio(pDX, IDC_RADIO_LINE_CLOSE_QGIS, m_nLineClosed);
  57. //}}AFX_DATA_MAP
  58. }
  59. BEGIN_MESSAGE_MAP(CDlgLineAttSet, CDialog)
  60. //{{AFX_MSG_MAP(CDlgLineAttSet)
  61. ON_BN_CLICKED(IDC_STATIC_COLOR_SHOW_QGIS, OnStaticColorShowQgis)
  62. ON_WM_PAINT()
  63. //}}AFX_MSG_MAP
  64. END_MESSAGE_MAP()
  65. /////////////////////////////////////////////////////////////////////////////
  66. // CDlgLineAttSet message handlers
  67. BOOL CDlgLineAttSet::OnInitDialog() 
  68. {
  69. CDialog::OnInitDialog();
  70. // TODO: Add extra initialization here
  71. UpdateData(TRUE);
  72. if(m_nOpFlag == 1 && m_pLineObj)  //对选中的线对象进行操作
  73. {
  74. m_bLineShowPt = m_pLineObj->GetShowPointFlag();
  75. m_fLineLength = m_pLineObj->GetLineLength();
  76. m_fLineWidth = m_pLineObj->GetObjLineWidth();
  77. m_lLineID = m_pLineObj->GetObjID();
  78. m_nLineClosed = m_pLineObj->IsClosed()?0:1;
  79. m_szLineLayer = m_pLayerObj->GetLayerName();
  80. m_szLineName = m_pLineObj->GetObjName();
  81. m_crLine = m_pLineObj->GetObjPenColor();
  82. short  m_b = GetBValue(m_crLine);
  83. short  m_g = GetGValue(m_crLine);
  84. short  m_r = GetRValue(m_crLine);
  85. m_nLineStyle = m_pLineObj->GetObjLineType();
  86. ((CComboBox *)GetDlgItem(IDC_COMBO_LINE_STYLE_NEW))->SetCurSel(m_nLineStyle);
  87. }
  88. else if(m_nOpFlag == 2 && m_pLayerObj)           // 对图层进行设置
  89. {
  90. }
  91. GetDlgItem(IDC_EDIT_LINE_ID_QGIS)->EnableWindow(FALSE);   //将该EDIT控件设置为只读属性
  92. GetDlgItem(IDC_EDIT_LINE_LAYER_QGIS)->EnableWindow(FALSE);
  93. InitComboBox();
  94. UpdateData(FALSE);
  95. return TRUE;  // return TRUE unless you set the focus to a control
  96.               // EXCEPTION: OCX Property Pages should return FALSE
  97. }
  98. void CDlgLineAttSet::InitComboBox()
  99. {
  100. m_ctLineStyle.AddString("SOLID_LINE_________________");
  101. m_ctLineStyle.AddString("DASH_LINE_ _ _ _ _ _ _ _ _ ");
  102. m_ctLineStyle.AddString("DOT_LINE . . . . . . . . . ");
  103. m_ctLineStyle.AddString("DASHDOT_LINE_ . _ . _ . _ .");
  104. m_ctLineStyle.AddString("DASHDOTDOT_LINE_ .. _ .. _ ");
  105. m_ctLineStyle.AddString("NULL_LINE                  ");
  106. m_ctLineStyle.AddString("INSIDEFRAME_LINE           ");
  107. m_ctLineStyle.AddString("GEOMETRIC_LINE             ");
  108. m_ctLineStyle.AddString("COSMETIC_LINE              ");
  109. m_ctLineStyle.AddString("ALTERNATE_LINE             ");
  110. m_ctLineStyle.SetCurSel(0);
  111. }
  112. int CDlgLineAttSet::GetLineTypeFromCom()
  113. {
  114. m_nLineStyle =  ((CComboBox *)GetDlgItem(IDC_COMBO_LINE_STYLE_NEW))->GetCurSel();
  115. return m_nLineStyle;
  116. }
  117. void CDlgLineAttSet::OnStaticColorShowQgis() 
  118. {
  119. // TODO: Add your control notification handler code here
  120. UpdateData(TRUE);
  121. CColorDialog dlg;
  122. dlg.m_cc.Flags |= CC_FULLOPEN | CC_RGBINIT;
  123. //dlg.SetCurrentColor(RGB(m_r,m_g,m_b));
  124. if(dlg.DoModal() == IDOK)
  125. {
  126. m_crLine = dlg.GetColor();
  127. CDC * pDC = GetDlgItem(IDC_STATIC_COLOR_SHOW_QGIS)->GetDC();
  128. CBrush brush(m_crLine);
  129. CBrush * pOldBrush = pDC->SelectObject(&brush);
  130. CRect rectStatic;
  131. GetDlgItem(IDC_STATIC_COLOR_SHOW_QGIS)->GetClientRect(&rectStatic);
  132. pDC->Rectangle(rectStatic);
  133. pDC->SelectObject(pOldBrush);
  134. }
  135. UpdateData(FALSE);
  136. }
  137. void CDlgLineAttSet::OnOK() 
  138. {
  139. // TODO: Add extra validation here
  140. UpdateData(TRUE);
  141. m_nLineStyle = m_ctLineStyle.GetCurSel();
  142. UpdateData(FALSE);
  143. CDialog::OnOK();
  144. }
  145. void CDlgLineAttSet::OnPaint() 
  146. {
  147. CPaintDC dc(this); // device context for painting
  148. // TODO: Add your message handler code here
  149. CRect rect;
  150. GetDlgItem(IDC_STATIC_COLOR_SHOW_QGIS)->GetWindowRect(&rect);
  151. // ClientToScreen(&rect);
  152. CBrush brush(m_crLine);
  153. CBrush * pOldBrush = dc.SelectObject(&brush);
  154. dc.Rectangle(rect);
  155. dc.SelectObject(pOldBrush);
  156. // Do not call CDialog::OnPaint() for painting messages
  157. }