Inputdialog.cpp
上传用户:cjd055
上传日期:2013-04-01
资源大小:608k
文件大小:3k
源码类别:

交通/航空行业

开发平台:

Visual C++

  1. // InputDialog.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "BmpTest.h"
  5. #include "InputDialog.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CInputDialog dialog
  13. CInputDialog::CInputDialog(CWnd* pParent /*=NULL*/)
  14. : CDialog(CInputDialog::IDD, pParent)
  15. {
  16. //{{AFX_DATA_INIT(CInputDialog)
  17. m_Xt = 0;
  18. m_Xb = 0;
  19. m_Yb = 0;
  20. m_Yt = 0;
  21. //}}AFX_DATA_INIT
  22. }
  23. void CInputDialog::DoDataExchange(CDataExchange* pDX)
  24. {
  25. CDialog::DoDataExchange(pDX);
  26. //{{AFX_DATA_MAP(CInputDialog)
  27. DDX_Control(pDX, IDC_PREVIEW, m_Preview);
  28. DDX_Text(pDX, IDC_XT, m_Xt);
  29. DDV_MinMaxUInt(pDX, m_Xt, 0, 10000);
  30. DDX_Text(pDX, IDC_XB, m_Xb);
  31. DDV_MinMaxUInt(pDX, m_Xb, 0, 10000);
  32. DDX_Text(pDX, IDC_YB, m_Yb);
  33. DDV_MinMaxUInt(pDX, m_Yb, 0, 10000);
  34. DDX_Text(pDX, IDC_YT, m_Yt);
  35. DDV_MinMaxUInt(pDX, m_Yt, 0, 10000);
  36. //}}AFX_DATA_MAP
  37. }
  38. BEGIN_MESSAGE_MAP(CInputDialog, CDialog)
  39. //{{AFX_MSG_MAP(CInputDialog)
  40. ON_WM_PAINT()
  41. ON_EN_CHANGE(IDC_XB, OnChange)
  42. ON_EN_CHANGE(IDC_XT, OnChange)
  43. ON_EN_CHANGE(IDC_YB, OnChange)
  44. ON_EN_CHANGE(IDC_YT, OnChange)
  45. ON_COMMAND(ID_ZFT_BALANCE, OnZftBalance)
  46. //}}AFX_MSG_MAP
  47. END_MESSAGE_MAP()
  48. /////////////////////////////////////////////////////////////////////////////
  49. // CInputDialog message handlers
  50. //●: 
  51. BOOL CInputDialog::OnInitDialog() 
  52. {
  53. CDialog::OnInitDialog();
  54. // TODO: Add extra initialization here
  55. m_Preview.GetWindowRect(rcDest);
  56. m_Dib.LoadBmp(m_FileName);
  57. rcSrc.left=0;
  58. rcSrc.top=0;
  59. rcSrc.right=m_Dib.Width;
  60. rcSrc.bottom=m_Dib.Height;
  61. m_Xt=rcDest.left+rcDest.Width()/3;
  62. m_Yt=rcDest.top+rcDest.Height()/3;
  63. m_Xb=rcDest.right-rcDest.Width()/3;
  64. m_Yb=rcDest.bottom-rcDest.Height()/3;
  65. UpdateData(FALSE);
  66. return TRUE;  // return TRUE unless you set the focus to a control
  67.               // EXCEPTION: OCX Property Pages should return FALSE
  68. }
  69. void CInputDialog::OnPaint() 
  70. {
  71. CPaintDC dc(this); // device context for painting
  72. // TODO: Add your message handler code here
  73. m_Dib.Draw(dc.GetSafeHdc(),rcDest,rcSrc);
  74. CBrush br, * obr;
  75. br.CreateStockObject(NULL_BRUSH);
  76. obr=dc.SelectObject(&br);
  77. dc.Rectangle(m_Xt,m_Yt,m_Xb,m_Yb);
  78. dc.SelectObject(obr);
  79. br.DeleteObject();
  80. // Do not call CDialog::OnPaint() for painting messages
  81. }
  82. void CInputDialog::OnChange() 
  83. {
  84. // TODO: If this is a RICHEDIT control, the control will not
  85. // send this notification unless you override the CDialog::OnInitDialog()
  86. // function and call CRichEditCtrl().SetEventMask()
  87. // with the ENM_CHANGE flag ORed into the mask.
  88. // TODO: Add your control notification handler code here
  89. UpdateData();
  90. Sort(m_Xt,m_Xb);
  91. Sort(m_Yt,m_Yb);
  92. if(m_Xt<rcDest.left)
  93. {
  94. m_Xt=rcDest.left;
  95. }
  96. if(m_Yt<rcDest.top)
  97. {
  98. m_Yt=rcDest.top;
  99. }
  100. if(m_Xb>rcDest.right)
  101. {
  102. m_Xb=rcDest.right;
  103. }
  104. if(m_Yb>rcDest.bottom)
  105. {
  106. m_Yb=rcDest.bottom;
  107. }
  108. InvalidateRect(rcDest,TRUE);
  109. UpdateWindow();
  110. }
  111. void CInputDialog::Sort(UINT &x0, UINT &x1)
  112. {
  113. UINT t;
  114. if(x0>x1)
  115. {
  116. t=x1;
  117. x1=x0;
  118. x0=t;
  119. }
  120. }