viewpackage.cpp

来自「本人买的<<VC++项目开发实例>>源代码配套光盘.」· C++ 代码 · 共 185 行

CPP
185
字号
// ViewPackage.cpp: implementation of the CViewPackage class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "DBExp.h"
#include "ViewPackage.h"
#include "CDBExpDatabase.h"
#include "CDBTreeNode.h"
#include "mainfrm.h"
#include "..\DLLs\ViewFunc\viewparamdef.h"
#include "DLLFuncs.h"


#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

//##ModelId=3C5B9B9E0379
CViewPackage::CViewPackage()
{

}

//##ModelId=3C5B9B9E037A
CViewPackage::~CViewPackage()
{

}
//##ModelId=3C5B9B9E0396
const char *CViewPackage::GetTreeNodeCaption()
{
	static char szCaption[] = _T("视图包");
	return szCaption;
}
//##ModelId=3C5B9B9E03A0
BOOL CViewPackage::ExpandItem(HTREEITEM hItem, UINT state)
{
	HTREEITEM hTempItem = 0;

	CWaitCursor wait;
	CDBExpDatabase *pDatabase = GetDatabase();

	ASSERT(pDatabase);

	
	CTypedPtrList<CObList, CDBTreeNode *> *pList = NULL;
	if(pDatabase->m_ObStruct[CDBExpDatabase::OBS_VIEW].bHasExpanded)
		return TRUE;
	pDatabase->EnumObjects(ADODB::adSchemaTables, "VIEW");

	pList = &pDatabase->m_ObStruct[CDBExpDatabase::OBS_VIEW].m_List;
	POSITION pos = pList->GetHeadPosition();
	while(NULL != pos)
	{
		CDBTreeNode *pNode;
		pNode = (CDBTreeNode *)pList->GetNext(pos);
		pNode ->BuildTVITEM(hItem);

		hTempItem = m_pTreeCtrl->InsertItem(&pNode->m_tvInsertStruct);
		ASSERT(hTempItem);
		pNode->Set_hItem(hTempItem);
	}

	return TRUE;
}


//##ModelId=3C5CCC8400E0
BOOL CViewPackage::OpenRelatedView(LPARAM lParam)
{
	// ToDo: Add your specialized code here
	
	CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd();
	
	CListView *pListView = (CListView *)pFrame->GetRightPane();

	CDBExpDatabase *pDatabase = this->GetDatabase();
	ASSERT(pDatabase);
		
	pListView->GetListCtrl().DeleteAllItems();

	int& nCount = ResetListViewItemCounter();
	
	
	
	POSITION pos = pDatabase->m_ObStruct[1].m_List.GetHeadPosition();
	CDBTreeNode *pTreeNode = NULL;
	while(pos != NULL)
	{

		pTreeNode = pDatabase->m_ObStruct[1].m_List.GetAt(pos);
		pTreeNode->BuildLVITEM(nCount);

		pListView->GetListCtrl().InsertItem(&pTreeNode->m_lvInsertStruct);
		pDatabase->m_ObStruct[1].m_List.GetNext(pos);
	}
	return TRUE;

}



//##ModelId=3C6288590347
void CViewPackage::BuildTVITEM(HTREEITEM hParentItem)
{
	// ToDo: Add your specialized code here or after the call to base class
	
	CPackageNode::BuildTVITEM(hParentItem);
}

//##ModelId=3C62885B0206
BOOL CViewPackage::PopupContextMenu(DBTREE_NODE_CONTEXT& context)
{
	// ToDo: Add your specialized code here or after the call to base class
	
	return CPackageNode::PopupContextMenu(context);
}

//##ModelId=3C628859009B
void CViewPackage::BuildContextMenu(DBTREE_NODE_CONTEXT& context)
{
	// ToDo: Add your specialized code here or after the call to base class
	
	m_pContextMenu->LoadMenu(IDR_MENU_PKG_VIEW);
}

//##ModelId=3C62885A03B3
void CViewPackage::OnMenuItemClick(UINT nCmd)
{
	// ToDo: Add your specialized code here or after the call to base class
	
	CDBExpDatabase *pDatabase = this->GetDatabase();
	
	PARAM_VIEW paramView;
	memset(&paramView, 0, sizeof(paramView));

	strcpy(paramView.szConnectionString, (const char *)this->GetDatabase()->m_strCnn);

	LPARAM lParam = (LPARAM)&paramView;
	HWND	hWnd =  AfxGetMainWnd()->m_hWnd;
	CString strSQL = "";
	
	switch(nCmd)
	{
	case ID_MENU_NEW_VIEW:
		this->View_Create(hWnd, lParam);
		break;
	case ID_MENU_DEL_VIEW:
		this->View_Remove(hWnd, lParam);
		break;
	default:
		CDBTreeNode::OnMenuItemClick(nCmd);
		break;
	}
}



//##ModelId=3CC981FD0070
void CViewPackage::New()
{
	// ToDo: Add your specialized code here or after the call to base class
	
	CDDLSQL::New();
}


int CViewPackage::View_Create(HWND hWnd, LPARAM lParam)
{
	return CDLLFuncs::View_Create(hWnd, lParam);
}

int CViewPackage::View_Remove(HWND hWnd, LPARAM lParam)
{
	AfxMessageBox("Not implemented");
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?