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

图形图象

开发平台:

Visual C++

  1. // test8Doc.cpp : implementation of the CTest8Doc class
  2. //
  3. #include "stdafx.h"
  4. #include "test8.h"
  5. #include "test8Doc.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CTest8Doc
  13. IMPLEMENT_DYNCREATE(CTest8Doc, CDocument)
  14. BEGIN_MESSAGE_MAP(CTest8Doc, CDocument)
  15. //{{AFX_MSG_MAP(CTest8Doc)
  16. ON_COMMAND(BITCOUNT_1, On1)
  17. ON_COMMAND(BITCOUNT_4, On4)
  18. ON_COMMAND(BITCOUNT_8, On8)
  19. ON_COMMAND(BITCOUNT_16, On16)
  20. ON_COMMAND(BITCOUNT_24, On24)
  21. ON_COMMAND(BITCOUNT_32, On32)
  22. ON_COMMAND(ID_FILE_SAVE_AS, OnFileSaveAs)
  23. //}}AFX_MSG_MAP
  24. END_MESSAGE_MAP()
  25. /////////////////////////////////////////////////////////////////////////////
  26. // CTest8Doc construction/destruction
  27. CTest8Doc::CTest8Doc()
  28. {
  29. // TODO: add one-time construction code here
  30. dibitcount = 8;
  31. palnum = 256;
  32. pkState = 0;
  33. lpAccess = (int (WINAPI*)(LPINFOSTR))GetAccessIO();
  34. }
  35. CTest8Doc::~CTest8Doc()
  36. {
  37. }
  38. BOOL CTest8Doc::OnNewDocument()
  39. {
  40. if (!CDocument::OnNewDocument())
  41. return FALSE;
  42. // TODO: add reinitialization code here
  43. // (SDI documents will reuse this document)
  44. return TRUE;
  45. //return FALSE;
  46. }
  47. /////////////////////////////////////////////////////////////////////////////
  48. // CTest8Doc serialization
  49. void CTest8Doc::Serialize(CArchive& ar)
  50. {
  51. if (ar.IsStoring())
  52. {
  53. // TODO: add storing code here
  54. }
  55. else
  56. {
  57. // TODO: add storing code here
  58. }
  59. }
  60. /////////////////////////////////////////////////////////////////////////////
  61. // CTest8Doc diagnostics
  62. #ifdef _DEBUG
  63. void CTest8Doc::AssertValid() const
  64. {
  65. CDocument::AssertValid();
  66. }
  67. void CTest8Doc::Dump(CDumpContext& dc) const
  68. {
  69. CDocument::Dump(dc);
  70. }
  71. #endif //_DEBUG
  72. /////////////////////////////////////////////////////////////////////////////
  73. // CTest8Doc commands
  74. BOOL CTest8Doc::OnOpenDocument(LPCTSTR lpszPathName) 
  75. {
  76. if (!CDocument::OnOpenDocument(lpszPathName))
  77. return FALSE;
  78. if (strlen(lpszPathName))
  79. {
  80. pkState++;
  81. if( pk.LoadFromFile(lpszPathName, CMD_IS_VALID_FILE, lpAccess ) )
  82. {
  83. if( pk.state != PKST_PASSVER )
  84. {
  85. MessageBox(NULL, "格式不支持", "Error", 0 ) ;
  86. pkState-- ;
  87. return FALSE ;
  88. }
  89. pk.LoadFromFile(lpszPathName, CMD_LOAD_FROM_FILE, lpAccess);
  90. }
  91. pkState--;
  92. }
  93. // TODO: Add your specialized creation code here
  94. return TRUE;
  95. }
  96. LPCTSTR CTest8Doc::GetAccessIO()
  97. {
  98. CTest8App *lpApp = (CTest8App*)::AfxGetApp();
  99. ASSERT(lpApp);
  100. return (LPCTSTR)lpApp->pAccess;
  101. }
  102. void CTest8Doc::DeleteContents() 
  103. {
  104. // TODO: Add your specialized code here and/or call the base class
  105. pk.Clear(); // 初始化数据包为空
  106. CDocument::DeleteContents();
  107. }
  108. BOOL CTest8Doc::OnSaveDocument(LPCTSTR lpszPathName) 
  109. {
  110. // TODO: Add your specialized code here and/or call the base class
  111. return CDocument::OnSaveDocument(lpszPathName);
  112. }
  113. void CTest8Doc::SetPathName(LPCTSTR lpszPathName, BOOL bAddToMRU) 
  114. {
  115. // TODO: Add your specialized code here and/or call the base class
  116. CDocument::SetPathName(lpszPathName, bAddToMRU);
  117. }
  118. void CTest8Doc::On1() 
  119. {
  120. // TODO: Add your command handler code here
  121. dibitcount = 1;
  122. palnum = 2;
  123. }
  124. void CTest8Doc::On4() 
  125. {
  126. // TODO: Add your command handler code here
  127. dibitcount = 4;
  128. palnum = 16;
  129. }
  130. void CTest8Doc::On8() 
  131. {
  132. // TODO: Add your command handler code here
  133. dibitcount = 8;
  134. palnum = 256;
  135. }
  136. void CTest8Doc::On16() 
  137. {
  138. // TODO: Add your command handler code here
  139. dibitcount = 16;
  140. palnum = 0;
  141. }
  142. void CTest8Doc::On24() 
  143. {
  144. // TODO: Add your command handler code here
  145. dibitcount = 24;
  146. palnum = 0;
  147. }
  148. void CTest8Doc::On32() 
  149. {
  150. // TODO: Add your command handler code here
  151. dibitcount = 32;
  152. palnum = 0;
  153. }
  154. void CTest8Doc::OnFileSaveAs() 
  155. {
  156. // TODO: Add your command handler code here
  157. int result;
  158. CDocument::OnFileSaveAs();
  159. CString fn = GetPathName();
  160. if (pk.GetState() > PKST_PASSINFO)
  161. {
  162. pk.comm = CMD_SAVE_TO_FILE;
  163. pk.result = ER_EMPTY;
  164. pk.annexdata.siAnnData[0] = dibitcount;
  165. pk.annexdata.siAnnData[1] = 0; // 使用原始调色板
  166. strcpy(pk.filename, fn);
  167. result = (*lpAccess)(&pk);
  168. if (!result)
  169. TRACE("写文件失败!");
  170. }
  171. }