test8View.cpp
上传用户:yatsl7111
上传日期:2007-01-08
资源大小:1433k
文件大小:5k
源码类别:

图形图象

开发平台:

Visual C++

  1. // test8View.cpp : implementation of the CTest8View class
  2. //
  3. #include "stdafx.h"
  4. #include "test8.h"
  5. #include "test8Doc.h"
  6. #include "test8View.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CTest8View
  14. IMPLEMENT_DYNCREATE(CTest8View, CView)  
  15. BEGIN_MESSAGE_MAP(CTest8View, CView)
  16. //{{AFX_MSG_MAP(CTest8View)
  17. ON_WM_SIZE()
  18. //}}AFX_MSG_MAP
  19. END_MESSAGE_MAP()
  20. /////////////////////////////////////////////////////////////////////////////
  21. // CTest8View construction/destruction
  22. CTest8View::CTest8View()
  23. {
  24. // TODO: add construction code here
  25. client.SetRect(0,0,0,0);
  26. // 打开DrawDIB函数族
  27. hdraw = ::DrawDibOpen();
  28. }
  29. CTest8View::~CTest8View()
  30. {
  31. // 关闭DrawDIB函数族
  32. ::DrawDibClose(hdraw);
  33. }
  34. BOOL CTest8View::PreCreateWindow(CREATESTRUCT& cs)
  35. {
  36. // TODO: Modify the Window class or styles here by modifying
  37. //  the CREATESTRUCT cs
  38. return CView::PreCreateWindow(cs);
  39. }
  40. /////////////////////////////////////////////////////////////////////////////
  41. // CTest8View drawing
  42. void CTest8View::OnDraw(CDC* pDC)
  43. {
  44. CTest8Doc* pDoc = GetDocument();
  45. ASSERT_VALID(pDoc);
  46. static char buf[256];
  47. if ((pDoc->pk.GetState() >= PKST_PASSINFO)&&(pDoc->pkState == 0))
  48. {
  49. // 显示图像的相关信息(图片尺寸、位深度、文件最后修改日期等信息)
  50. // 这些信息都是在调用CMD_GET_FILE_INFO命令之后获得的
  51. ::ZeroMemory((PVOID)buf, sizeof(buf));
  52. pDoc->pk.comm = CMD_GETPROCTYPE;
  53. pDoc->pk.result = ER_EMPTY;
  54. ::ZeroMemory((PVOID)pDoc->pk.annexdata.scAnnData, DPK_ANNEXINFOSIZE);
  55. (*pDoc->lpAccess)(&pDoc->pk);
  56. ::sprintf(buf, "模块处理类型:%s", (char*)pDoc->pk.annexdata.scAnnData);
  57. pDC->TextOut(pDoc->pk.imginfo.width, 10, buf, ::strlen(buf));
  58. pDoc->pk.comm = CMD_GETWRITERS;
  59. pDoc->pk.result = ER_EMPTY;
  60. ::ZeroMemory((PVOID)pDoc->pk.annexdata.scAnnData, DPK_ANNEXINFOSIZE);
  61. (*pDoc->lpAccess)(&pDoc->pk);
  62. ::sprintf(buf, "模块开发者:%s", (char*)pDoc->pk.annexdata.scAnnData);
  63. pDC->TextOut(pDoc->pk.imginfo.width, 30, buf, ::strlen(buf));
  64. pDoc->pk.comm = CMD_GETWRITERMESS;
  65. pDoc->pk.result = ER_EMPTY;
  66. ::ZeroMemory((PVOID)pDoc->pk.annexdata.scAnnData, DPK_ANNEXINFOSIZE);
  67. (*pDoc->lpAccess)(&pDoc->pk);
  68. ::sprintf(buf, "开发者留言:%s", (char*)pDoc->pk.annexdata.scAnnData);
  69. pDC->TextOut(pDoc->pk.imginfo.width, 50, buf, ::strlen(buf));
  70. pDoc->pk.comm = CMD_GETBUILDID;
  71. pDoc->pk.result = ER_EMPTY;
  72. pDoc->pk.annexdata.dwAnnData = 0;
  73. (*pDoc->lpAccess)(&pDoc->pk);
  74. ::sprintf(buf, "模块版本:%d", pDoc->pk.annexdata.dwAnnData);
  75. pDC->TextOut(pDoc->pk.imginfo.width, 70, buf, ::strlen(buf));
  76. ::sprintf(buf, "图像类型:%d", pDoc->pk.imginfo.imgtype);
  77. pDC->TextOut(pDoc->pk.imginfo.width, 90, buf, ::strlen(buf));
  78. ::sprintf(buf, "图像文件格式:%d", pDoc->pk.imginfo.imgformat);
  79. pDC->TextOut(pDoc->pk.imginfo.width, 110, buf, ::strlen(buf));
  80. ::sprintf(buf, "文件尺寸:%d", pDoc->pk.imginfo.filesize);
  81. pDC->TextOut(pDoc->pk.imginfo.width, 130, buf, ::strlen(buf));
  82. ::sprintf(buf, "图像数据:%d×%d×%d", 
  83. pDoc->pk.imginfo.width, 
  84. pDoc->pk.imginfo.height, 
  85. pDoc->pk.imginfo.bitcount);   
  86. pDC->TextOut(pDoc->pk.imginfo.width, 150, buf, ::strlen(buf));
  87. ::sprintf(buf, "图像个数:%d", pDoc->pk.imginfo.imgnumbers);
  88. pDC->TextOut(pDoc->pk.imginfo.width, 170, buf, ::strlen(buf));
  89. ::sprintf(buf, "文件日期:%d-%d-%d  %d:%d:%d", 
  90. pDoc->pk.imginfo.year, 
  91. (int)((pDoc->pk.imginfo.monday&0xff00)>>8),
  92. (int)(pDoc->pk.imginfo.monday&0xff),
  93. (int)((pDoc->pk.imginfo.time>>16)&0xff), 
  94. (int)((pDoc->pk.imginfo.time>>8)&0xff), 
  95. (int)(pDoc->pk.imginfo.time&0xff)
  96. );
  97. pDC->TextOut(pDoc->pk.imginfo.width, 190, buf, ::strlen(buf));
  98. if (pDoc->pk.GetState() >= PKST_INFOANDBITS)
  99. {
  100. DrawDibDraw( hdraw, pDC->GetSafeHdc(), 0, 0, -1, -1, 
  101. (LPBITMAPINFOHEADER)&pDoc->pk.sDIBInfo, 
  102. (LPVOID)pDoc->pk._pbdata, 0, 0, 
  103. pDoc->pk.imginfo.width, pDoc->pk.imginfo.height, 
  104. DDF_SAME_HDC); 
  105. }
  106. }
  107. else
  108. pDC->TextOut(10, 10, "没有指定文件!", 13);
  109. }
  110. /////////////////////////////////////////////////////////////////////////////
  111. // CTest8View diagnostics
  112. #ifdef _DEBUG
  113. void CTest8View::AssertValid() const
  114. {
  115. CView::AssertValid();
  116. }
  117. void CTest8View::Dump(CDumpContext& dc) const
  118. {
  119. CView::Dump(dc);
  120. }
  121. CTest8Doc* CTest8View::GetDocument() // non-debug version is inline
  122. {
  123. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CTest8Doc)));
  124. return (CTest8Doc*)m_pDocument;
  125. }
  126. #endif //_DEBUG
  127. /////////////////////////////////////////////////////////////////////////////
  128. // CTest8View message handlers
  129. void CTest8View::Serialize(CArchive& ar) 
  130. {
  131. if (ar.IsStoring())
  132. { // storing code
  133. }
  134. else
  135. { // loading code
  136. }
  137. }
  138. void CTest8View::PreSubclassWindow() 
  139. {
  140. // TODO: Add your specialized code here and/or call the base class
  141. CView::PreSubclassWindow();
  142. }
  143. void CTest8View::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) 
  144. {
  145. // TODO: Add your specialized code here and/or call the base class
  146. InvalidateRect(NULL);
  147. }
  148. void CTest8View::OnInitialUpdate() 
  149. {
  150. CView::OnInitialUpdate();
  151. // TODO: Add your specialized code here and/or call the base class
  152. }
  153. void CTest8View::OnSize(UINT nType, int cx, int cy) 
  154. {
  155. CView::OnSize(nType, cx, cy);
  156. client.SetRect(0,0,cx,cy);
  157. }