mysheet.cpp
上传用户:jsxglz
上传日期:2007-01-03
资源大小:117k
文件大小:4k
源码类别:

SQL Server

开发平台:

Visual C++

  1. // MySheet.cpp : implementation file
  2. //
  3. // This is a part of the Microsoft Foundation Classes C++ library.
  4. // Copyright (C) 1992-1998 Microsoft Corporation
  5. // All rights reserved.
  6. //
  7. // This source code is only intended as a supplement to the
  8. // Microsoft Foundation Classes Reference and related
  9. // electronic documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // Microsoft Foundation Classes product.
  12. #include "stdafx.h"
  13. #include "MySheet.h"
  14. #include "catsets.h"
  15. #include "DrvInfo.h"
  16. #include "MainFrm.h"
  17. #ifdef _DEBUG
  18. #define new DEBUG_NEW
  19. #undef THIS_FILE
  20. static char THIS_FILE[] = __FILE__;
  21. #endif
  22. // stolen from afximpl.h...
  23. #define _countof(array) (sizeof(array)/sizeof(array[0]))
  24. #define WM_NEW_DSN (WM_USER + 100)
  25. /////////////////////////////////////////////////////////////////////////////
  26. // CMyPropertySheet
  27. IMPLEMENT_DYNAMIC(CMyPropertySheet, CPropertySheet)
  28. CMyPropertySheet::CMyPropertySheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage)
  29. :CPropertySheet(nIDCaption, pParentWnd, iSelectPage)
  30. {
  31. }
  32. CMyPropertySheet::CMyPropertySheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage)
  33. :CPropertySheet(pszCaption, pParentWnd, iSelectPage)
  34. {
  35. m_bCursorLib = FALSE;
  36. }
  37. CMyPropertySheet::~CMyPropertySheet()
  38. {
  39. }
  40. BEGIN_MESSAGE_MAP(CMyPropertySheet, CPropertySheet)
  41. //{{AFX_MSG_MAP(CMyPropertySheet)
  42. ON_BN_CLICKED(IDOK, OnOK)
  43. //}}AFX_MSG_MAP
  44. END_MESSAGE_MAP()
  45. /////////////////////////////////////////////////////////////////////////////
  46. // CMyPropertySheet message handlers
  47. BOOL CMyPropertySheet::OnInitDialog()
  48. {
  49. CWaitCursor wait;
  50. BOOL bRet = CPropertySheet::OnInitDialog();
  51. int rgiButtons[] = {IDOK, IDCANCEL, ID_APPLY_NOW, IDHELP};
  52. CRect rect;
  53. GetDlgItem(rgiButtons[0])->GetWindowRect(&rect);
  54. CFont* pFont = GetDlgItem(rgiButtons[0])->GetFont();
  55. ScreenToClient(&rect);
  56. int nDiff = rect.right - rect.left;
  57. rect.right = nDiff + 70;
  58. rect.left = 6;
  59. rect.top += 5;
  60. rect.bottom += 5;
  61. if(!m_static.Create(_T("Cursor Library Not Loaded"), WS_CHILD | WS_VISIBLE,
  62. rect, this, IDC_CURSOR_LIB_X))
  63. TRACE("Error creating cursor library static.n");
  64. else
  65. m_static.SetFont(pFont);
  66. // Move OK
  67. CWnd* pWndTemp = GetDlgItem(rgiButtons[1]);
  68. pWndTemp->GetWindowRect(&rect);
  69. ScreenToClient(&rect);
  70. pWndTemp = GetDlgItem(rgiButtons[0]);
  71. pWndTemp->MoveWindow(&rect);
  72. pWndTemp->SetWindowText("&Save As...");
  73. // Move Cancel
  74. pWndTemp = GetDlgItem(rgiButtons[2]);
  75. pWndTemp->GetWindowRect(&rect);
  76. ScreenToClient(&rect);
  77. pWndTemp->ShowWindow(SW_HIDE);
  78. pWndTemp = GetDlgItem(rgiButtons[1]);
  79. pWndTemp->MoveWindow(&rect);
  80. pWndTemp->SetWindowText("&Close");
  81. if(((CMainFrame*)AfxGetMainWnd())->m_database.IsOpen())
  82. {
  83. int nPages = GetPageCount();
  84. for(int i = 0; i < nPages; i++)
  85. ((CMyPage*)GetPage(i))->OnNewDSN();
  86. }
  87. return bRet;
  88. }
  89. void CMyPropertySheet::OnOK()
  90. {
  91. CWaitCursor wait;
  92. UpdateData(TRUE);
  93. UCHAR buffer[200];
  94. SWORD cbData;
  95. ::SQLGetInfo(((CMainFrame*)AfxGetMainWnd())->m_database.m_hdbc, SQL_DRIVER_NAME,
  96. (PTR)buffer, 200, &cbData);
  97. CString sDriverName = buffer;
  98. int nPos = sDriverName.Find('.');
  99. if(nPos != -1)
  100. sDriverName = sDriverName.Left(nPos);
  101. CString strFilter = _T("Driver Info Files (*.txt)|*.txt|All Files(*.*)|*.*|");
  102. CFileDialog dlg(false, _T("txt"), sDriverName, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
  103. strFilter, this);
  104. if(dlg.DoModal() == IDOK)
  105. {
  106. CWaitCursor wait;
  107. CStdioFile file;
  108. CFileException e;
  109. CString sPathName = dlg.GetPathName();
  110. if(!file.Open(sPathName, CFile::typeText | CFile::modeCreate
  111.   | CFile::modeWrite, &e))
  112. {
  113. CString sBuff;
  114. sBuff.Format("File Path Name: <%s> ", sPathName);
  115. sBuff += CHelpers::GetFileExceptionError(e.m_cause);
  116. AfxMessageBox(sBuff);
  117. }
  118. else
  119. {
  120. if(m_bCursorLib)
  121. file.WriteString(_T("Cursor Library is Loadednn"));
  122. else
  123. file.WriteString(_T("Cursor Library is Not Loadednn"));
  124. int nPages = GetPageCount();
  125. for(int i = 0; i < nPages; i++)
  126. ((CMyPage*)GetPage(i))->DumpToFile(file);
  127. file.Close();
  128. }
  129. }
  130. }