⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exampledlg.cpp

📁 vc150例源码
💻 CPP
字号:
// ExampleDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Example.h"
#include "ExampleDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CExampleDlg dialog

CExampleDlg::CExampleDlg(CWnd* pParent /*=NULL*/)
: CDialog(CExampleDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CExampleDlg)
	// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CExampleDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CExampleDlg)
	// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CExampleDlg, CDialog)
//{{AFX_MSG_MAP(CExampleDlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_NOTIFY(TVN_SELCHANGED, IDC_TREE1, OnSelchangedTree1)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CExampleDlg message handlers

BOOL CExampleDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
	
	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	// TODO: Add extra initialization here
	AfxGetModuleState()->m_dwVersion = 0x0601; 
	AfxDaoInit();
	
	CTreeCtrl* m_tree =(CTreeCtrl*)GetDlgItem(IDC_TREE1);
	m_MyDatabase.Open("F:\\vc6150\\Chap5-数据库\\BIBLIO.MDB");
	int nTableCount=m_MyDatabase.GetTableDefCount();
	for(int i=0;i<nTableCount;i++)
	{
		CDaoTableDefInfo TableInfo;
		m_MyDatabase.GetTableDefInfo(i,TableInfo,AFX_DAO_ALL_INFO); 
		if (TableInfo.m_lAttributes!=0)
			continue;
		//把表的名称显示在Tree Control中
		TV_ITEM item_table;
		item_table.mask=TVIF_TEXT;
		item_table.pszText=(char*)(LPCTSTR)TableInfo.m_strName;
		TV_INSERTSTRUCT ins_str;
		ins_str.hParent=TVI_ROOT;
		ins_str.hInsertAfter=TVI_LAST;
		ins_str.item=item_table;
		HTREEITEM hRoot=m_tree->InsertItem(&ins_str); 
		
		//把字段的名称显示在Tree Control中
		CListCtrl* m_list=(CListCtrl*)GetDlgItem(IDC_LIST1);
		CDaoTableDef m_MyTable(&m_MyDatabase);
		m_MyTable.Open(TableInfo.m_strName);
		int nFieldCount=m_MyTable.GetFieldCount();
		for(int i=0;i<nFieldCount;i++)
		{
			CDaoFieldInfo FieldInfo;
			m_MyTable.GetFieldInfo(i,FieldInfo,AFX_DAO_ALL_INFO); 
			TV_ITEM item_field;
			item_field.mask=TVIF_TEXT;
			item_field.pszText=(char*)(LPCTSTR)FieldInfo.m_strName;
			ins_str.hParent=hRoot;
			ins_str.hInsertAfter=TVI_LAST;
			ins_str.item=item_field;
			HTREEITEM hChildItem=m_tree->InsertItem(&ins_str);
		}
		m_MyTable.Close();
	}
	return TRUE;  // return TRUE  unless you set the focus to a control
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CExampleDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting
		
		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
		
		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;
		
		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CExampleDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

LPCTSTR strBOOL(BOOL bFlag)
{
	return bFlag ? _T("TRUE") : _T("FALSE");
}

CString strVARIANT(const COleVariant &var)
{
	CString strRet;
	strRet = _T("Fish");
	switch(var.vt){
	case VT_EMPTY:
	case VT_NULL:
		strRet = _T("NULL");
		break;
	case VT_I2:
		strRet.Format(_T("%hd"),V_I2(&var));
		break;
	case VT_I4:
		strRet.Format(_T("%d"),V_I4(&var));
		break;
	case VT_R4:
		strRet.Format(_T("%e"),(double)V_R4(&var));
		break;
	case VT_R8:
		strRet.Format(_T("%e"),V_R8(&var));
		break;
	case VT_CY:
		strRet = COleCurrency(var).Format();
		break;
	case VT_DATE:
		strRet = COleDateTime(var).Format(_T("%m-%d-%y"));			
		break;
	case VT_BSTR:
		strRet = V_BSTRT(&var);
		break;
	case VT_DISPATCH:
		strRet = _T("VT_DISPATCH");
		break;
	case VT_ERROR:
		strRet = _T("VT_ERROR");
		break;
	case VT_BOOL:
		return strBOOL(V_BOOL(&var));
	case VT_VARIANT:
		strRet = _T("VT_VARIANT");
		break;
	case VT_UNKNOWN:
		strRet = _T("VT_UNKNOWN");
		break;
	case VT_I1:
		strRet = _T("VT_I1");
		break;
	case VT_UI1:
		strRet.Format(_T("0x%02hX"),(unsigned short)V_UI1(&var));
		break;
	case VT_UI2:
		strRet = _T("VT_UI2");
		break;
	case VT_UI4:
		strRet = _T("VT_UI4");
		break;
	case VT_I8:
		strRet = _T("VT_I8");
		break;
	case VT_UI8:
		strRet = _T("VT_UI8");
		break;
	case VT_INT:
		strRet = _T("VT_INT");
		break;
	case VT_UINT:
		strRet = _T("VT_UINT");
		break;
	case VT_VOID:
		strRet = _T("VT_VOID");
		break;
	case VT_HRESULT:
		strRet = _T("VT_HRESULT");
		break;
	case VT_PTR:
		strRet = _T("VT_PTR");
		break;
	case VT_SAFEARRAY:
		strRet = _T("VT_SAFEARRAY");
		break;
	case VT_CARRAY:
		strRet = _T("VT_CARRAY");
		break;
	case VT_USERDEFINED:
		strRet = _T("VT_USERDEFINED");
		break;
	case VT_LPSTR:
		strRet = _T("VT_LPSTR");
		break;
	case VT_LPWSTR:
		strRet = _T("VT_LPWSTR");
		break;
	case VT_FILETIME:
		strRet = _T("VT_FILETIME");
		break;
	case VT_BLOB:
		strRet = _T("VT_BLOB");
		break;
	case VT_STREAM:
		strRet = _T("VT_STREAM");
		break;
	case VT_STORAGE:
		strRet = _T("VT_STORAGE");
		break;
	case VT_STREAMED_OBJECT:
		strRet = _T("VT_STREAMED_OBJECT");
		break;
	case VT_STORED_OBJECT:
		strRet = _T("VT_STORED_OBJECT");
		break;
	case VT_BLOB_OBJECT:
		strRet = _T("VT_BLOB_OBJECT");
		break;
	case VT_CF:
		strRet = _T("VT_CF");
		break;
	case VT_CLSID:
		strRet = _T("VT_CLSID");
		break;
	}
	WORD vt = var.vt;
	if(vt & VT_ARRAY){
		vt = vt & ~VT_ARRAY;
		strRet = _T("Array of ");
	}
	if(vt & VT_BYREF){
		vt = vt & ~VT_BYREF;
		strRet += _T("Pointer to ");
	}
	if(vt != var.vt){
		switch(vt){
		case VT_EMPTY:
			strRet += _T("VT_EMPTY");
			break;
		case VT_NULL:
			strRet += _T("VT_NULL");
			break;
		case VT_I2:
			strRet += _T("VT_I2");
			break;
		case VT_I4:
			strRet += _T("VT_I4");
			break;
		case VT_R4:
			strRet += _T("VT_R4");
			break;
		case VT_R8:
			strRet += _T("VT_R8");
			break;
		case VT_CY:
			strRet += _T("VT_CY");
			break;
		case VT_DATE:
			strRet += _T("VT_DATE");
			break;
		case VT_BSTR:
			strRet += _T("VT_BSTR");
			break;
		case VT_DISPATCH:
			strRet += _T("VT_DISPATCH");
			break;
		case VT_ERROR:
			strRet += _T("VT_ERROR");
			break;
		case VT_BOOL:
			strRet += _T("VT_BOOL");
			break;
		case VT_VARIANT:
			strRet += _T("VT_VARIANT");
			break;
		case VT_UNKNOWN:
			strRet += _T("VT_UNKNOWN");
			break;
		case VT_I1:
			strRet += _T("VT_I1");
			break;
		case VT_UI1:
			strRet += _T("VT_UI1");
			break;
		case VT_UI2:
			strRet += _T("VT_UI2");
			break;
		case VT_UI4:
			strRet += _T("VT_UI4");
			break;
		case VT_I8:
			strRet += _T("VT_I8");
			break;
		case VT_UI8:
			strRet += _T("VT_UI8");
			break;
		case VT_INT:
			strRet += _T("VT_INT");
			break;
		case VT_UINT:
			strRet += _T("VT_UINT");
			break;
		case VT_VOID:
			strRet += _T("VT_VOID");
			break;
		case VT_HRESULT:
			strRet += _T("VT_HRESULT");
			break;
		case VT_PTR:
			strRet += _T("VT_PTR");
			break;
		case VT_SAFEARRAY:
			strRet += _T("VT_SAFEARRAY");
			break;
		case VT_CARRAY:
			strRet += _T("VT_CARRAY");
			break;
		case VT_USERDEFINED:
			strRet += _T("VT_USERDEFINED");
			break;
		case VT_LPSTR:
			strRet += _T("VT_LPSTR");
			break;
		case VT_LPWSTR:
			strRet += _T("VT_LPWSTR");
			break;
		case VT_FILETIME:
			strRet += _T("VT_FILETIME");
			break;
		case VT_BLOB:
			strRet += _T("VT_BLOB");
			break;
		case VT_STREAM:
			strRet += _T("VT_STREAM");
			break;
		case VT_STORAGE:
			strRet += _T("VT_STORAGE");
			break;
		case VT_STREAMED_OBJECT:
			strRet += _T("VT_STREAMED_OBJECT");
			break;
		case VT_STORED_OBJECT:
			strRet += _T("VT_STORED_OBJECT");
			break;
		case VT_BLOB_OBJECT:
			strRet += _T("VT_BLOB_OBJECT");
			break;
		case VT_CF:
			strRet += _T("VT_CF");
			break;
		case VT_CLSID:
			strRet += _T("VT_CLSID");
			break;
		}
	}
	return strRet;
}

void CExampleDlg::OnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	CTreeCtrl* m_tree =(CTreeCtrl*)GetDlgItem(IDC_TREE1);
	
	HTREEITEM item_sel;
	item_sel=m_tree->GetSelectedItem();
	
	if(m_tree->GetParentItem(item_sel)==NULL)
	{
		CListCtrl* m_list=(CListCtrl*)GetDlgItem(IDC_LIST1);
		m_list->DeleteAllItems(); 
		int nCount=m_list->GetHeaderCtrl()->GetItemCount();
		for(int j=0;j<nCount;j++)
		{
			m_list->DeleteColumn(0); 
		}
		
		CString str1="Select * from ["+m_tree->GetItemText(item_sel)+"]";
		CDaoRecordset m_MyRS(&m_MyDatabase);
		m_MyRS.Open(dbOpenDynaset,str1);
		m_MyRS.MoveFirst();
		int nFieldCount=m_MyRS.GetFieldCount();
		for(int i=0;i<nFieldCount;i++)
		{
			CDaoFieldInfo FieldInfo;
			m_MyRS.GetFieldInfo(i,FieldInfo,AFX_DAO_ALL_INFO); 

			LV_COLUMN lvcol;
			lvcol.mask=LVCF_FMT|LVCF_TEXT|LVCF_WIDTH;
			lvcol.fmt=LVCFMT_LEFT;
			lvcol.cx=70;
			lvcol.pszText=(char*)(LPCTSTR)FieldInfo.m_strName;
			lvcol.iSubItem=i;
			m_list->InsertColumn(i,&lvcol);
		}
		
		int index=-1;//插入item后的索引号
		while(!m_MyRS.IsEOF())
		{
			index=index+1;
			CString strVar=strVARIANT(m_MyRS.GetFieldValue(0));
			LV_ITEM lvitem;
			lvitem.iItem=index;
			lvitem.iSubItem=0;
			lvitem.mask=LVIF_TEXT;
			lvitem.pszText=(char*)(LPCTSTR)strVar; 
			m_list->InsertItem(&lvitem);

			for(i=1;i<nFieldCount;i++)
			{
				strVar=strVARIANT(m_MyRS.GetFieldValue(i));
				m_list->SetItemText(index,i,strVar);			
			}
			m_MyRS.MoveNext();
		}
		m_MyRS.Close();
	}
	*pResult = 0;
}


⌨️ 快捷键说明

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