CloudDoc.cpp
上传用户:ynjin1970
上传日期:2014-10-13
资源大小:6438k
文件大小:3k
源码类别:

中间件编程

开发平台:

Visual C++

  1. // CloudDoc.cpp : implementation of the CCloudDoc class
  2. //
  3. #include "stdafx.h"
  4. #include "Cloud.h"
  5. #include "CloudDoc.h"
  6. #include "math.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CCloudDoc
  14. IMPLEMENT_DYNCREATE(CCloudDoc, CDocument)
  15. BEGIN_MESSAGE_MAP(CCloudDoc, CDocument)
  16. //{{AFX_MSG_MAP(CCloudDoc)
  17. ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
  18. ON_COMMAND(ID_CHANGE_BRIGHTNESS, OnChangeBrightness)
  19. ON_COMMAND(ID_CLOSE_FILE, OnCloseFile)
  20. ON_COMMAND(ID_GRAY_STRETCH, OnGrayStretch)
  21. ON_COMMAND(ID_CHANGE_GRAY, OnChangeGray)
  22. ON_COMMAND(ID_HISTOGRAM_EQUALIZE, OnHistogramEqualize)
  23. //}}AFX_MSG_MAP
  24. END_MESSAGE_MAP()
  25. /////////////////////////////////////////////////////////////////////////////
  26. // CCloudDoc construction/destruction
  27. CCloudDoc::CCloudDoc()
  28. {
  29. m_Dib=NULL;
  30. }
  31. CCloudDoc::~CCloudDoc()
  32. {
  33. m_Dib=NULL;
  34. }
  35. BOOL CCloudDoc::OnNewDocument()
  36. {
  37. if (!CDocument::OnNewDocument())
  38. return FALSE;
  39. // TODO: add reinitialization code here
  40. // (SDI documents will reuse this document)
  41. return TRUE;
  42. }
  43. /////////////////////////////////////////////////////////////////////////////
  44. // CCloudDoc serialization
  45. void CCloudDoc::Serialize(CArchive& ar)
  46. {
  47. if (ar.IsStoring())
  48. {
  49. // TODO: add storing code here
  50. }
  51. else
  52. {
  53. // TODO: add loading code here
  54. }
  55. }
  56. /////////////////////////////////////////////////////////////////////////////
  57. // CCloudDoc diagnostics
  58. #ifdef _DEBUG
  59. void CCloudDoc::AssertValid() const
  60. {
  61. CDocument::AssertValid();
  62. }
  63. void CCloudDoc::Dump(CDumpContext& dc) const
  64. {
  65. CDocument::Dump(dc);
  66. }
  67. #endif //_DEBUG
  68. /////////////////////////////////////////////////////////////////////////////
  69. // CCloudDoc commands
  70. void CCloudDoc::OnFileOpen() 
  71. {
  72. CString FileName;
  73. char szFilters[]=
  74.       "MyType Files (*.bmp)|*.bmp|jpeg (*.jpg)|*.jpg|All Files (*.*)|*.*||";
  75. CFileDialog fileDlg (TRUE, "bmp", "*.bmp",
  76.       OFN_FILEMUSTEXIST|OFN_HIDEREADONLY, szFilters, NULL);
  77. CDib* t_Dib=NULL;
  78. if(fileDlg.DoModal()==IDOK)
  79. {
  80. FileName=fileDlg.GetPathName();
  81. if(m_Dib)
  82. {
  83. CDib* t_Dib=m_Dib;
  84. }
  85. m_Dib=new CDib();
  86. delete t_Dib;
  87. LPSTR lpfileName=(LPSTR)((LPCSTR)FileName);
  88. m_Dib->LoadDIB(lpfileName);
  89. UpdateAllViews(NULL);
  90. }
  91. }
  92. void CCloudDoc::OnChangeBrightness() 
  93. {
  94. if(m_Dib)
  95. {
  96. int bitCount=m_Dib->bmpInfo->bmiHeader.biBitCount;
  97. if(bitCount<24)
  98. {
  99. AfxMessageBox("只能改变真彩色图像");
  100. return;
  101. }
  102. m_Dib->OnChangeBrightness(1,30.0);
  103. UpdateAllViews(NULL);
  104. }
  105. }
  106. void CCloudDoc::OnCloseFile() 
  107. {
  108. UpdateAllViews(NULL);
  109. }
  110. void CCloudDoc::OnGrayStretch() 
  111. {
  112. if(m_Dib)
  113. {
  114. int bitCount=m_Dib->bmpInfo->bmiHeader.biBitCount;
  115. if(bitCount<24)
  116. {
  117. AfxMessageBox("只能改变真彩色图像");
  118. return;
  119. }
  120.      m_Dib->OnGrayStretch(20,200,0,230);
  121. UpdateAllViews(NULL);
  122. }
  123. }
  124. void CCloudDoc::OnChangeGray() 
  125. {
  126. if(m_Dib)
  127. {
  128. int bitCount=m_Dib->bmpInfo->bmiHeader.biBitCount;
  129. if(bitCount<24)
  130. {
  131. AfxMessageBox("只能改变真彩色图像");
  132. return;
  133. }
  134. m_Dib->OnChangeToGray();
  135. UpdateAllViews(NULL);
  136. }
  137. }
  138. void CCloudDoc::OnHistogramEqualize() 
  139. {
  140. if(m_Dib)
  141. {
  142. int bitCount=m_Dib->bmpInfo->bmiHeader.biBitCount;
  143. if(bitCount<24)
  144. {
  145. AfxMessageBox("只能改变真彩色图像");
  146. return;
  147. }
  148. m_Dib->OnHistogramEqualize();
  149. UpdateAllViews(NULL);
  150. }
  151. }