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

ActiveX/DCOM/ATL

开发平台:

Visual C++

  1. // exDoc.cpp : implementation of the CExDoc class
  2. //
  3. #include "stdafx.h"
  4. #include "ex.h"
  5. #include "exDoc.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. // CExDoc
  16. IMPLEMENT_DYNCREATE(CExDoc, CDocument)
  17. BEGIN_MESSAGE_MAP(CExDoc, CDocument)
  18. //{{AFX_MSG_MAP(CExDoc)
  19. ON_COMMAND(ID_BUTTON32771, OnButton32771)
  20. //}}AFX_MSG_MAP
  21. END_MESSAGE_MAP()
  22. /////////////////////////////////////////////////////////////////////////////
  23. // CExDoc construction/destruction
  24. CExDoc::CExDoc()
  25. {
  26. // TODO: add one-time construction code here
  27. }
  28. CExDoc::~CExDoc()
  29. {
  30. }
  31. BOOL CExDoc::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;//组件接口指针
  38. mytools.CoCreateInstance(CLSID_DALMyBools);//生成实例
  39. DTOBook* pAllBooks=NULL;//数据的结构
  40. UINT iSize=0;
  41. //设置连接数据库条件
  42. mytools->put_DataSource(::SysAllocString(L"tarena"));
  43. mytools->put_UID(::SysAllocString(L"scott"));
  44. mytools->put_PWD(::SysAllocString(L"tiger"));
  45. mytools->QueryAllBook(&pAllBooks,&iSize);//查询数据库
  46. for(int i=0;i<iSize;i++)
  47. {
  48. BookEntity* p1=new BookEntity;//
  49. p1->BookIsnb=(pAllBooks+i)->BookIsnb;
  50. p1->BookName=CString((pAllBooks+i)->BookName);
  51. p1->BookAuthor=CString((pAllBooks+i)->BookAuthor);
  52. //CString类型用完要释放掉
  53. ::SysFreeString((pAllBooks+i)->BookName);
  54. ::SysFreeString((pAllBooks+i)->BookAuthor);
  55. this->allBooks.AddTail(p1);
  56. }
  57. //释放栈中的结构体
  58. ::CoTaskMemFree(pAllBooks);
  59. return TRUE;
  60. }
  61. /////////////////////////////////////////////////////////////////////////////
  62. // CExDoc serialization
  63. void CExDoc::Serialize(CArchive& ar)
  64. {
  65. if (ar.IsStoring())
  66. {
  67. // TODO: add storing code here
  68. }
  69. else
  70. {
  71. // TODO: add loading code here
  72. }
  73. }
  74. /////////////////////////////////////////////////////////////////////////////
  75. // CExDoc diagnostics
  76. #ifdef _DEBUG
  77. void CExDoc::AssertValid() const
  78. {
  79. CDocument::AssertValid();
  80. }
  81. void CExDoc::Dump(CDumpContext& dc) const
  82. {
  83. CDocument::Dump(dc);
  84. }
  85. #endif //_DEBUG
  86. /////////////////////////////////////////////////////////////////////////////
  87. // CExDoc commands
  88. void CExDoc::OnButton32771() 
  89. {
  90. // TODO: Add your command handler code here
  91. DlgBookAdd mydlg;//新设的类,绑定文本框和数据变量
  92. mydlg.DoModal();
  93. if(mydlg.m_bIsOk)
  94. {
  95. UINT isbn=mydlg.m_bookisbn;
  96. CString name=mydlg.m_bookname;
  97. CString Author=mydlg.m_bookauthor;
  98. CString CSisbn;
  99. DTOBook* dto=new DTOBook;
  100. dto->BookIsnb=isbn;
  101. dto->BookName=name.AllocSysString();//转BSTR
  102. dto->BookAuthor=Author.AllocSysString();
  103. //将数据添加到数据库中;==>重复的代码
  104. CComPtr<IDALMyBools> mytools;
  105. mytools.CoCreateInstance(CLSID_DALMyBools);
  106. DTOBook* pAllBooks=NULL;
  107. UINT iSize=0;
  108. mytools->put_DataSource(::SysAllocString(L"tarena"));
  109. mytools->put_UID(::SysAllocString(L"scott"));
  110. mytools->put_PWD(::SysAllocString(L"tiger"));
  111. //保存数据
  112. UINT iResult=0;
  113. mytools->SaveBook(dto,&iResult);
  114. //刷新界面上的数据==>显示到界面上;
  115. POSITION ps=this->GetFirstViewPosition();
  116. while(ps!=NULL)
  117. {
  118. CView* pview=this->GetNextView(ps);
  119. if(pview->GetRuntimeClass()->m_lpszClassName=="CBookAdminView")
  120. {
  121. CListView* plist=(CListView*)pview;
  122. plist->GetListCtrl().InsertItem(0,name);
  123. plist->GetListCtrl().SetItemText(0,1,Author);
  124. }
  125. }
  126. }
  127. }