BookAdminDoc.cpp
上传用户:weisheen
上传日期:2022-07-09
资源大小:19390k
文件大小:4k
源码类别:

ActiveX/DCOM/ATL

开发平台:

Visual C++

  1. // BookAdminDoc.cpp : implementation of the CBookAdminDoc class
  2. //
  3. #include "stdafx.h"
  4. #include "BookAdmin.h"
  5. #include "BookAdminDoc.h"
  6. #include <atlbase.h>
  7. #include "../BooksDAL/BooksDAL_i.c"
  8. #include "DlgBookAdd.h"
  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #undef THIS_FILE
  12. static char THIS_FILE[] = __FILE__;
  13. #endif
  14. /////////////////////////////////////////////////////////////////////////////
  15. // CBookAdminDoc
  16. IMPLEMENT_DYNCREATE(CBookAdminDoc, CDocument)
  17. BEGIN_MESSAGE_MAP(CBookAdminDoc, CDocument)
  18. //{{AFX_MSG_MAP(CBookAdminDoc)
  19. ON_COMMAND(ID_BUTTON32771, OnButton32771)
  20. //}}AFX_MSG_MAP
  21. END_MESSAGE_MAP()
  22. /////////////////////////////////////////////////////////////////////////////
  23. // CBookAdminDoc construction/destruction
  24. CBookAdminDoc::CBookAdminDoc()
  25. {
  26. // TODO: add one-time construction code here
  27. }
  28. CBookAdminDoc::~CBookAdminDoc()
  29. {
  30. }
  31. BOOL CBookAdminDoc::OnNewDocument()
  32. {
  33. if (!CDocument::OnNewDocument())
  34. return FALSE;
  35. // TODO: add reinitialization code here
  36. // (SDI documents will reuse this document)
  37. CComPtr<IDALMyBools> mytools=this->GetDbTools();
  38. DTOBook* pAllBooks=NULL;
  39. UINT iSize=0;
  40. mytools->QueryAllBook(&pAllBooks,&iSize);
  41. for(int i=0;i<iSize;i++)
  42. {
  43. BookEntity* p1=new BookEntity;
  44. p1->BookIsnb=(pAllBooks+i)->BookIsnb;
  45. p1->BookName=CString((pAllBooks+i)->BookName);
  46. p1->BookAuthor=CString((pAllBooks+i)->BookAuthor);
  47. ::SysFreeString((pAllBooks+i)->BookName);
  48. ::SysFreeString((pAllBooks+i)->BookAuthor);
  49. this->allBooks.AddTail(p1);
  50. }
  51. ::CoTaskMemFree(pAllBooks);
  52. return TRUE;
  53. }
  54. /////////////////////////////////////////////////////////////////////////////
  55. // CBookAdminDoc serialization
  56. void CBookAdminDoc::Serialize(CArchive& ar)
  57. {
  58. if (ar.IsStoring())
  59. {
  60. // TODO: add storing code here
  61. }
  62. else
  63. {
  64. // TODO: add loading code here
  65. }
  66. }
  67. /////////////////////////////////////////////////////////////////////////////
  68. // CBookAdminDoc diagnostics
  69. #ifdef _DEBUG
  70. void CBookAdminDoc::AssertValid() const
  71. {
  72. CDocument::AssertValid();
  73. }
  74. void CBookAdminDoc::Dump(CDumpContext& dc) const
  75. {
  76. CDocument::Dump(dc);
  77. }
  78. #endif //_DEBUG
  79. /////////////////////////////////////////////////////////////////////////////
  80. // CBookAdminDoc commands
  81. void CBookAdminDoc::OnButton32771() 
  82. {
  83. // TODO: Add your command handler code here
  84. DlgBookAdd mydlg;
  85. mydlg.DoModal();
  86. if(mydlg.m_bIsOk)
  87. {
  88. UINT isbn=mydlg.m_bookisbn;
  89. CString name=mydlg.m_bookname;
  90. CString Author=mydlg.m_bookauthor;
  91. DTOBook* dto=new DTOBook;
  92. dto->BookIsnb=isbn;
  93. dto->BookName=name.AllocSysString();
  94. dto->BookAuthor=Author.AllocSysString();
  95. //将数据添加到数据库中;
  96. CComPtr<IDALMyBools> mytools=this->GetDbTools();
  97. UINT iResult=0;
  98. mytools->SaveBook(dto,&iResult);
  99. //刷新界面上的数据;
  100. CListView* plist=this->GetListView1();
  101. plist->GetListCtrl().InsertItem(0,name);
  102. plist->GetListCtrl().SetItemText(0,1,Author);
  103. plist->GetListCtrl().SetItemData(0,isbn);
  104. }
  105. }
  106. CComPtr<IDALMyBools> CBookAdminDoc::GetDbTools()
  107. {
  108. CComPtr<IDALMyBools> mytools;
  109. mytools.CoCreateInstance(CLSID_DALMyBools);
  110. DTOBook* pAllBooks=NULL;
  111. UINT iSize=0;
  112. mytools->put_DataSource(::SysAllocString(L"tarena"));
  113. mytools->put_UID(::SysAllocString(L"scott"));
  114. mytools->put_PWD(::SysAllocString(L"tiger"));
  115. return mytools;
  116. }
  117. CListView* CBookAdminDoc::GetListView1()
  118. {
  119. CListView* plist=NULL;
  120. POSITION ps=this->GetFirstViewPosition();
  121. while(ps!=NULL)
  122. {
  123. CView* pview=this->GetNextView(ps);
  124. if(pview->GetRuntimeClass()->m_lpszClassName=="CBookAdminView")
  125. {
  126. plist=(CListView*)pview;
  127. break;
  128. }
  129. }
  130. return plist;
  131. }