view.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:16k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // [!output VIEW_IMPL] : implementation of the [!output VIEW_CLASS] class
  2. //
  3. #include "stdafx.h"
  4. #include "[!output APP_HEADER]"
  5. [!if OLEDB_RECORD_VIEW || ODBC_RECORD_VIEW]
  6. #include "[!output ROWSET_HEADER]"
  7. [!endif]
  8. #include "[!output DOC_HEADER]"
  9. [!if CONTAINER || CONTAINER_SERVER]
  10. #include "[!output CONTAINER_ITEM_HEADER]"
  11. [!endif]
  12. #include "[!output VIEW_HEADER]"
  13. #ifdef _DEBUG
  14. #define new DEBUG_NEW
  15. #endif
  16. // [!output VIEW_CLASS]
  17. IMPLEMENT_DYNCREATE([!output VIEW_CLASS], [!output VIEW_BASE_CLASS])
  18. BEGIN_MESSAGE_MAP([!output VIEW_CLASS], [!output VIEW_BASE_CLASS])
  19. [!if PROJECT_STYLE_EXPLORER]
  20. [!if LIST_VIEW]
  21. ON_WM_STYLECHANGED()
  22. [!endif]
  23. [!endif]
  24. [!if CONTAINER || CONTAINER_SERVER]
  25. ON_WM_DESTROY()
  26. [!if !RICH_EDIT_VIEW]
  27. ON_WM_SETFOCUS()
  28. ON_WM_SIZE()
  29. ON_COMMAND(ID_OLE_INSERT_NEW, &[!output VIEW_CLASS]::OnInsertObject)
  30. ON_COMMAND(ID_CANCEL_EDIT_CNTR, &[!output VIEW_CLASS]::OnCancelEditCntr)
  31. ON_COMMAND(ID_FILE_PRINT, &[!output VIEW_CLASS]::OnFilePrint)
  32. [!else]
  33. [!if PRINTING]
  34. // Standard printing commands
  35. ON_COMMAND(ID_FILE_PRINT, &[!output VIEW_BASE_CLASS]::OnFilePrint)
  36. [!endif]
  37. [!endif]
  38. [!else]
  39. [!if PRINTING]
  40. // Standard printing commands
  41. ON_COMMAND(ID_FILE_PRINT, &[!output VIEW_BASE_CLASS]::OnFilePrint)
  42. [!endif]
  43. [!endif]
  44. [!if MINI_SERVER || FULL_SERVER || CONTAINER_SERVER]
  45. ON_COMMAND(ID_CANCEL_EDIT_SRVR, &[!output VIEW_CLASS]::OnCancelEditSrvr)
  46. [!endif]
  47. [!if PRINTING]
  48. [!if !HTML_VIEW && !HTML_EDITVIEW && !ACTIVE_DOC_CONTAINER]
  49. ON_COMMAND(ID_FILE_PRINT_DIRECT, &[!output VIEW_BASE_CLASS]::OnFilePrint)
  50. ON_COMMAND(ID_FILE_PRINT_PREVIEW, &[!output VIEW_BASE_CLASS]::OnFilePrintPreview)
  51. [!endif]
  52. [!if ACTIVE_DOC_CONTAINER]
  53. ON_COMMAND(ID_FILE_PRINT_DIRECT, &[!output VIEW_BASE_CLASS]::OnFilePrint)
  54. ON_COMMAND(ID_FILE_PRINT_PREVIEW, &[!output VIEW_CLASS]::OnFilePrintPreview)
  55. [!if !RICH_EDIT_VIEW]
  56. ON_UPDATE_COMMAND_UI(ID_FILE_PRINT_PREVIEW, &OnFilePrintPreviewUIUpdate)
  57. [!endif]
  58. [!endif]
  59. [!endif]
  60. END_MESSAGE_MAP()
  61. [!if HTML_EDITVIEW]
  62. BEGIN_DHTMLEDITING_CMDMAP([!output VIEW_CLASS])
  63. DHTMLEDITING_CMD_ENTRY(ID_EDIT_COPY, IDM_COPY)
  64. DHTMLEDITING_CMD_ENTRY(ID_EDIT_CUT, IDM_CUT)
  65. DHTMLEDITING_CMD_ENTRY(ID_EDIT_PASTE, IDM_PASTE)
  66. DHTMLEDITING_CMD_ENTRY(ID_EDIT_UNDO, IDM_UNDO)
  67. END_DHTMLEDITING_CMDMAP()
  68. [!endif]
  69. // [!output VIEW_CLASS] construction/destruction
  70. [!output VIEW_CLASS]::[!output VIEW_CLASS]()
  71. [!if FORM_VIEW || OLEDB_RECORD_VIEW || ODBC_RECORD_VIEW]
  72. : [!output VIEW_BASE_CLASS]([!output VIEW_CLASS]::IDD)
  73. [!endif]
  74. {
  75. [!if ACCESSIBILITY]
  76. EnableActiveAccessibility();
  77. [!endif]
  78. [!if FORM_VIEW || OLEDB_RECORD_VIEW || ODBC_RECORD_VIEW]
  79. [!if OLEDB_RECORD_VIEW || ODBC_RECORD_VIEW]
  80. m_pSet = NULL;
  81. [!endif]
  82. [!endif]
  83. [!if CONTAINER || CONTAINER_SERVER]
  84. [!if !RICH_EDIT_VIEW]
  85. m_pSelection = NULL;
  86. [!endif]
  87. [!endif]
  88. // TODO: add construction code here
  89. }
  90. [!output VIEW_CLASS]::~[!output VIEW_CLASS]()
  91. {
  92. }
  93. [!if FORM_VIEW || OLEDB_RECORD_VIEW || ODBC_RECORD_VIEW]
  94. void [!output VIEW_CLASS]::DoDataExchange(CDataExchange* pDX)
  95. {
  96. [!output VIEW_BASE_CLASS]::DoDataExchange(pDX);
  97. [!if ODBC_RECORD_VIEW]
  98. // you can insert DDX_Field* functions here to 'connect' your controls to the database fields, ex.
  99. // DDX_FieldText(pDX, IDC_MYEDITBOX, m_pSet->m_szColumn1, m_pSet);
  100. // DDX_FieldCheck(pDX, IDC_MYCHECKBOX, m_pSet->m_bColumn2, m_pSet);
  101. // See MSDN and ODBC samples for more information
  102. [!endif]
  103. [!if OLEDB_RECORD_VIEW]
  104. // you can insert DDX_* functions, as well as SetDlgItem*/GetDlgItem* API calls to link your database to the view
  105. // ex. ::SetDlgItemText(m_hWnd, IDC_MYCONTROL, m_pSet->m_MyColumn);
  106. // See MSDN and OLEDB samples for more information
  107. [!endif]
  108. }
  109. [!endif]
  110. BOOL [!output VIEW_CLASS]::PreCreateWindow(CREATESTRUCT& cs)
  111. {
  112. // TODO: Modify the Window class or styles here by modifying
  113. //  the CREATESTRUCT cs
  114. [!if EDIT_VIEW]
  115. BOOL bPreCreated = CEditView::PreCreateWindow(cs);
  116. cs.style &= ~(ES_AUTOHSCROLL|WS_HSCROLL);   // Enable word-wrapping
  117. return bPreCreated;
  118. [!else]
  119. return [!output VIEW_BASE_CLASS]::PreCreateWindow(cs);
  120. [!endif]
  121. }
  122. [!if !TREE_VIEW && !LIST_VIEW && !HTML_VIEW && !HTML_EDITVIEW && !RICH_EDIT_VIEW && !EDIT_VIEW && !FORM_VIEW && !OLEDB_RECORD_VIEW && !ODBC_RECORD_VIEW]
  123. // [!output VIEW_CLASS] drawing
  124. [!if CONTAINER || CONTAINER_SERVER]
  125. [!if !ACTIVE_DOC_CONTAINER]
  126. void [!output VIEW_CLASS]::OnDraw(CDC* pDC)
  127. {
  128. if (!pDC)
  129. return;
  130. [!output DOC_CLASS]* pDoc = GetDocument();
  131. ASSERT_VALID(pDoc);
  132. if (!pDoc)
  133. return;
  134. // TODO: add draw code for native data here
  135. // TODO: also draw all OLE items in the document
  136. // Draw the selection at an arbitrary position.  This code should be
  137. //  removed once your real drawing code is implemented.  This position
  138. //  corresponds exactly to the rectangle returned by [!output CONTAINER_ITEM_CLASS],
  139. //  to give the effect of in-place editing.
  140. // TODO: remove this code when final draw code is complete.
  141. if (m_pSelection != NULL)
  142. {
  143. CSize size;
  144. CRect rect(10, 10, 210, 210);
  145. if (SUCCEEDED(m_pSelection->GetExtent(&size, m_pSelection->m_nDrawAspect)))
  146. {
  147. pDC->HIMETRICtoLP(&size);
  148. rect.right = size.cx + 10;
  149. rect.bottom = size.cy + 10;
  150. }
  151. m_pSelection->Draw(pDC, rect);
  152. }
  153. }
  154. [!else]
  155. void [!output VIEW_CLASS]::OnDraw(CDC* /*pDC*/)
  156. {
  157. [!output DOC_CLASS]* pDoc = GetDocument();
  158. ASSERT_VALID(pDoc);
  159. if (!pDoc)
  160. return;
  161. // TODO: add draw code for native data here
  162. }[!endif]
  163. [!else]
  164. void [!output VIEW_CLASS]::OnDraw(CDC* /*pDC*/)
  165. {
  166. [!output DOC_CLASS]* pDoc = GetDocument();
  167. ASSERT_VALID(pDoc);
  168. if (!pDoc)
  169. return;
  170. // TODO: add draw code for native data here
  171. }
  172. [!endif]
  173. [!endif]
  174. [!if PRINTING]
  175. [!if TREE_VIEW || LIST_VIEW]
  176. void [!output VIEW_CLASS]::OnDraw(CDC* /*pDC*/)
  177. {
  178. [!output DOC_CLASS]* pDoc = GetDocument();
  179. ASSERT_VALID(pDoc);
  180. // TODO: add draw code for native data here
  181. }
  182. [!endif]
  183. [!endif]
  184. [!if SCROLL_VIEW || CONTAINER || CONTAINER_SERVER || OLEDB_RECORD_VIEW || LIST_VIEW || TREE_VIEW || FORM_VIEW || HTML_VIEW || ODBC_RECORD_VIEW]
  185. void [!output VIEW_CLASS]::OnInitialUpdate()
  186. {
  187. [!if ODBC_RECORD_VIEW]
  188. m_pSet = &GetDocument()->[!output ROWSET_CLASS_VARIABLE_NAME];
  189. [!endif]
  190. [!if OLEDB_RECORD_VIEW]
  191. m_pSet = &GetDocument()->[!output ROWSET_CLASS_VARIABLE_NAME];
  192. {
  193. CWaitCursor wait;
  194. HRESULT hr = m_pSet->OpenAll();
  195. if (FAILED(hr))
  196. {
  197. // Failed to open recordset.  If the recordset is a
  198. // stored procedure, make sure that you have properly
  199. // initialized any input parameters before calling
  200. // the OpenAll() method.
  201. AfxMessageBox(_T("Record set failed to open."), MB_OK);
  202. // Disable the Next and Previous record commands,
  203. // since attempting to change the current record without an
  204. // open RowSet will cause a crash
  205. m_bOnFirstRecord = TRUE;
  206. m_bOnLastRecord = TRUE;
  207. }
  208. if( hr == DB_S_ENDOFROWSET )
  209. {
  210. // the rowset is empty (does not contain any rows)
  211. AfxMessageBox(_T("Record set opened but there were no rows to return."), MB_OK);
  212. // Disable the Next and Previous record commands
  213. m_bOnFirstRecord = TRUE;
  214. m_bOnLastRecord = TRUE;
  215. }
  216. }
  217. [!endif]
  218. [!output VIEW_BASE_CLASS]::OnInitialUpdate();
  219. [!if FORM_VIEW]
  220. [!if APP_TYPE_SDI]
  221. GetParentFrame()->RecalcLayout();
  222. [!endif]
  223. ResizeParentToFit();
  224. [!endif]
  225. [!if LIST_VIEW]
  226. // TODO: You may populate your ListView with items by directly accessing
  227. //  its list control through a call to GetListCtrl().
  228. [!if TREE_VIEW]
  229. // TODO: You may populate your TreeView with items by directly accessing
  230. //  its tree control through a call to GetTreeCtrl().
  231. [!if HTML_VIEW]
  232. // TODO: This code navigates to a popular spot on the web.
  233. //  change the code to go where you'd like.
  234. [!endif]
  235. [!endif]
  236. [!endif]
  237. [!if HTML_VIEW]
  238. Navigate2(_T("http://www.msdn.microsoft.com/visualc/"),NULL,NULL);
  239. [!endif]
  240. [!if CONTAINER || CONTAINER_SERVER]
  241. [!if !RICH_EDIT_VIEW]
  242. // TODO: remove this code when final selection model code is written
  243. m_pSelection = NULL;    // initialize selection
  244. [!endif]
  245. [!if RICH_EDIT_VIEW]
  246. // Set the printing margins (720 twips = 1/2 inch)
  247. SetMargins(CRect(720, 720, 720, 720));
  248. [!endif]
  249. [!endif]
  250. [!if SCROLL_VIEW]
  251. CSize sizeTotal;
  252. // TODO: calculate the total size of this view
  253. sizeTotal.cx = sizeTotal.cy = 100;
  254. SetScrollSizes(MM_TEXT, sizeTotal);
  255. [!endif]
  256. }
  257. [!endif]
  258. [!if PRINTING]
  259. // [!output VIEW_CLASS] printing
  260. [!if ACTIVE_DOC_CONTAINER]
  261. [!if !RICH_EDIT_VIEW]
  262. void [!output VIEW_CLASS]::OnFilePrintPreviewUIUpdate(CCmdUI* pCmdUI)
  263. {
  264. if (!pCmdUI)
  265. return;
  266. if (m_pSelection != NULL)
  267. {
  268. DWORD dwStatus = 0;
  269. if (SUCCEEDED(m_pSelection->QueryCommand(OLECMDID_PRINTPREVIEW, &dwStatus)) &&
  270. dwStatus & OLECMDF_ENABLED)
  271. {
  272. pCmdUI->Enable(TRUE);
  273. return;
  274. }
  275. }
  276. pCmdUI->Enable(FALSE);
  277. }
  278. [!endif]
  279. void [!output VIEW_CLASS]::OnFilePrintPreview()
  280. {
  281. [!if !RICH_EDIT_VIEW]
  282. if (!m_pSelection)
  283. return;
  284. m_pSelection->ExecCommand(OLECMDID_PRINTPREVIEW);
  285. [!else]
  286. [!output VIEW_BASE_CLASS]::OnFilePrintPreview();
  287. [!endif]
  288. }
  289. [!endif]
  290. [!if !HTML_VIEW && !HTML_EDITVIEW]
  291. BOOL [!output VIEW_CLASS]::OnPreparePrinting(CPrintInfo* pInfo)
  292. {
  293. [!if EDIT_VIEW]
  294. // default CEditView preparation
  295. return CEditView::OnPreparePrinting(pInfo);
  296. [!else]
  297. [!if ACTIVE_DOC_CONTAINER]
  298. if (!CView::DoPreparePrinting(pInfo))
  299. return FALSE;
  300. if (!COleDocObjectItem::OnPreparePrinting(this, pInfo))
  301. return FALSE;
  302. return TRUE;
  303. [!else]
  304. // default preparation
  305. return DoPreparePrinting(pInfo);
  306. [!endif]
  307. [!endif]
  308. }
  309. [!if !RICH_EDIT_VIEW]
  310. [!if EDIT_VIEW]
  311. void [!output VIEW_CLASS]::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
  312. [!else]
  313. void [!output VIEW_CLASS]::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  314. [!endif]
  315. {
  316. [!if EDIT_VIEW]
  317. // Default CEditView begin printing
  318. CEditView::OnBeginPrinting(pDC, pInfo);
  319. [!else]
  320. // TODO: add extra initialization before printing
  321. [!endif]
  322. }
  323. [!if EDIT_VIEW]
  324. void [!output VIEW_CLASS]::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)
  325. [!else]
  326. void [!output VIEW_CLASS]::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  327. [!endif]
  328. {
  329. [!if EDIT_VIEW]
  330. // Default CEditView end printing
  331. CEditView::OnEndPrinting(pDC, pInfo);
  332. [!else]
  333. // TODO: add cleanup after printing
  334. [!endif]
  335. }
  336. [!endif]
  337. [!endif]
  338. [!if FORM_VIEW || ACTIVE_DOC_CONTAINER]
  339. [!if ACTIVE_DOC_CONTAINER]
  340. void [!output VIEW_CLASS]::OnPrint(CDC* pDC, CPrintInfo* pInfo)
  341. [!else]
  342. void [!output VIEW_CLASS]::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/)
  343. [!endif]
  344. {
  345. // TODO: add customized printing code here
  346. [!if ACTIVE_DOC_CONTAINER]
  347. if(pInfo->m_bDocObject)
  348. COleDocObjectItem::OnPrint(this, pInfo, TRUE);
  349. else
  350. CView::OnPrint(pDC, pInfo);
  351. [!endif]
  352. }
  353. [!endif]
  354. [!endif]
  355. [!if CONTAINER || CONTAINER_SERVER]
  356. void [!output VIEW_CLASS]::OnDestroy()
  357. {
  358. // Deactivate the item on destruction; this is important
  359. // when a splitter view is being used
  360.    COleClientItem* pActiveItem = GetDocument()->GetInPlaceActiveItem(this);
  361.    if (pActiveItem != NULL && pActiveItem->GetActiveView() == this)
  362.    {
  363.   pActiveItem->Deactivate();
  364.   ASSERT(GetDocument()->GetInPlaceActiveItem(this) == NULL);
  365.    }
  366.    [!output VIEW_BASE_CLASS]::OnDestroy();
  367. }
  368. [!if !RICH_EDIT_VIEW]
  369. // OLE Client support and commands
  370. BOOL [!output VIEW_CLASS]::IsSelected(const CObject* pDocItem) const
  371. {
  372. // The implementation below is adequate if your selection consists of
  373. //  only [!output CONTAINER_ITEM_CLASS] objects.  To handle different selection
  374. //  mechanisms, the implementation here should be replaced
  375. // TODO: implement this function that tests for a selected OLE client item
  376. return pDocItem == m_pSelection;
  377. }
  378. void [!output VIEW_CLASS]::OnInsertObject()
  379. {
  380. // Invoke the standard Insert Object dialog box to obtain information
  381. //  for new [!output CONTAINER_ITEM_CLASS] object
  382. COleInsertDialog dlg;
  383. [!if ACTIVE_DOC_CONTAINER]
  384. if (dlg.DoModal(COleInsertDialog::DocObjectsOnly) != IDOK)
  385. return;
  386. [!else]
  387. if (dlg.DoModal() != IDOK)
  388. return;
  389. [!endif]
  390. BeginWaitCursor();
  391. [!output CONTAINER_ITEM_CLASS]* pItem = NULL;
  392. TRY
  393. {
  394. // Create new item connected to this document
  395. [!output DOC_CLASS]* pDoc = GetDocument();
  396. ASSERT_VALID(pDoc);
  397. pItem = new [!output CONTAINER_ITEM_CLASS](pDoc);
  398. ASSERT_VALID(pItem);
  399. // Initialize the item from the dialog data
  400. if (!dlg.CreateItem(pItem))
  401. AfxThrowMemoryException();  // any exception will do
  402. ASSERT_VALID(pItem);
  403. [!if ACTIVE_DOC_CONTAINER]
  404. pItem->DoVerb(OLEIVERB_SHOW, this);
  405. [!else]
  406. if (dlg.GetSelectionType() == COleInsertDialog::createNewItem)
  407. pItem->DoVerb(OLEIVERB_SHOW, this);
  408. [!endif]
  409. ASSERT_VALID(pItem);
  410. // As an arbitrary user interface design, this sets the selection
  411. //  to the last item inserted
  412. // TODO: reimplement selection as appropriate for your application
  413. m_pSelection = pItem;   // set selection to last inserted item
  414. pDoc->UpdateAllViews(NULL);
  415. }
  416. CATCH(CException, e)
  417. {
  418. if (pItem != NULL)
  419. {
  420. ASSERT_VALID(pItem);
  421. pItem->Delete();
  422. }
  423. AfxMessageBox(IDP_FAILED_TO_CREATE);
  424. }
  425. END_CATCH
  426. EndWaitCursor();
  427. }
  428. // The following command handler provides the standard keyboard
  429. //  user interface to cancel an in-place editing session.  Here,
  430. //  the container (not the server) causes the deactivation
  431. void [!output VIEW_CLASS]::OnCancelEditCntr()
  432. {
  433. // Close any in-place active item on this view.
  434. COleClientItem* pActiveItem = GetDocument()->GetInPlaceActiveItem(this);
  435. if (pActiveItem != NULL)
  436. {
  437. pActiveItem->Close();
  438. }
  439. ASSERT(GetDocument()->GetInPlaceActiveItem(this) == NULL);
  440. }
  441. // Special handling of OnSetFocus and OnSize are required for a container
  442. //  when an object is being edited in-place
  443. void [!output VIEW_CLASS]::OnSetFocus(CWnd* pOldWnd)
  444. {
  445. COleClientItem* pActiveItem = GetDocument()->GetInPlaceActiveItem(this);
  446. if (pActiveItem != NULL &&
  447. pActiveItem->GetItemState() == COleClientItem::activeUIState)
  448. {
  449. // need to set focus to this item if it is in the same view
  450. CWnd* pWnd = pActiveItem->GetInPlaceWindow();
  451. if (pWnd != NULL)
  452. {
  453. pWnd->SetFocus();   // don't call the base class
  454. return;
  455. }
  456. }
  457. [!output VIEW_BASE_CLASS]::OnSetFocus(pOldWnd);
  458. }
  459. void [!output VIEW_CLASS]::OnSize(UINT nType, int cx, int cy)
  460. {
  461. [!output VIEW_BASE_CLASS]::OnSize(nType, cx, cy);
  462. COleClientItem* pActiveItem = GetDocument()->GetInPlaceActiveItem(this);
  463. if (pActiveItem != NULL)
  464. pActiveItem->SetItemRects();
  465. }
  466. void [!output VIEW_CLASS]::OnFilePrint()
  467. {
  468. //By default, we ask the Active document to print itself
  469. //using IOleCommandTarget. If you don't want this behavior
  470. //remove the call to COleDocObjectItem::DoDefaultPrinting.
  471. //If the call fails for some reason, we will try printing
  472. //the docobject using the IPrint interface.
  473. CPrintInfo printInfo;
  474. ASSERT(printInfo.m_pPD != NULL);
  475. if (S_OK == COleDocObjectItem::DoDefaultPrinting(this, &printInfo))
  476. return;
  477. CView::OnFilePrint();
  478. }
  479. [!endif]
  480. [!endif]
  481. [!if MINI_SERVER || FULL_SERVER || CONTAINER_SERVER]
  482. // OLE Server support
  483. // The following command handler provides the standard keyboard
  484. //  user interface to cancel an in-place editing session.  Here,
  485. //  the server (not the container) causes the deactivation
  486. void [!output VIEW_CLASS]::OnCancelEditSrvr()
  487. {
  488. GetDocument()->OnDeactivateUI(FALSE);
  489. }
  490. [!endif]
  491. // [!output VIEW_CLASS] diagnostics
  492. #ifdef _DEBUG
  493. void [!output VIEW_CLASS]::AssertValid() const
  494. {
  495. [!output VIEW_BASE_CLASS]::AssertValid();
  496. }
  497. void [!output VIEW_CLASS]::Dump(CDumpContext& dc) const
  498. {
  499. [!output VIEW_BASE_CLASS]::Dump(dc);
  500. }
  501. [!output DOC_CLASS]* [!output VIEW_CLASS]::GetDocument() const // non-debug version is inline
  502. {
  503. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS([!output DOC_CLASS])));
  504. return ([!output DOC_CLASS]*)m_pDocument;
  505. }
  506. #endif //_DEBUG
  507. [!if OLEDB_RECORD_VIEW]
  508. // [!output VIEW_CLASS] database support
  509. CRowset<>* [!output VIEW_CLASS]::OnGetRowset()
  510. {
  511. return m_pSet->GetRowsetBase();
  512. }
  513. [!endif]
  514. [!if ODBC_RECORD_VIEW]
  515. // [!output VIEW_CLASS] database support
  516. CRecordset* [!output VIEW_CLASS]::OnGetRecordset()
  517. {
  518. return m_pSet;
  519. }
  520. [!endif]
  521. // [!output VIEW_CLASS] message handlers
  522. [!if PROJECT_STYLE_EXPLORER]
  523. [!if LIST_VIEW]
  524. void [!output VIEW_CLASS]::OnStyleChanged(int nStyleType, LPSTYLESTRUCT lpStyleStruct)
  525. {
  526. //TODO: add code to react to the user changing the view style of your window
  527. [!output VIEW_BASE_CLASS]::OnStyleChanged(nStyleType,lpStyleStruct);
  528. }
  529. [!endif]
  530. [!endif]