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

📄 details.cpp

📁 《Windows CE 权威指南》(作者:(美)CHRIS MUENCH
💻 CPP
字号:
// Details.cpp : implementation file
//

#include "stdafx.h"
#include "PCDM.h"
#include "Details.h"

// <BOOK_ADDON Step6 Chapter 8.3.5> *********************************
using namespace PCDMdll_space;
// </BOOK_ADDON Step6 Chapter 8.3.5> *********************************

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

/////////////////////////////////////////////////////////////////////////////
// CDetails dialog


//<BOOK_ADDON STEP5 Chapter 7.4.4> *********************************
CDetails::CDetails(int IDD,long TitleID,CWnd* pParent /*=NULL*/)
	: CDialog(IDD, pParent)
{
	//{{AFX_DATA_INIT(CDetails)
	m_strArtist = _T("");
	m_strLabel = _T("");
	m_strRelease = _T("");
	m_strCopyright = _T("");
	m_strTitle = _T("");
	//}}AFX_DATA_INIT
	m_TitleID=TitleID;
}
//</BOOK_ADDON STEP5 Chapter 7.4.4> *********************************

void CDetails::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDetails)
	DDX_Control(pDX, IDC_TRACKLIST, m_ctrlTrackLst);
	DDX_Text(pDX, IDC_ARTIST, m_strArtist);
	DDX_Text(pDX, IDC_LABEL, m_strLabel);
	DDX_Text(pDX, IDC_RELEASE, m_strRelease);
	DDX_Text(pDX, IDC_COPYRIGHT, m_strCopyright);
	DDX_Text(pDX, IDC_TITLE, m_strTitle);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDetails, CDialog)
	//{{AFX_MSG_MAP(CDetails)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDetails message handlers

BOOL CDetails::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
//<BOOK_ADDON STEP5 Chapter 7.4.4> *********************************
	SetWindowLong(this->m_hWnd,GWL_EXSTYLE,WS_EX_CAPTIONOKBTN);
	CRect myRect;
	m_ctrlTrackLst.GetClientRect(&myRect);
	m_ctrlTrackLst.AddColumn(myRect.right-34,TEXT("TrackName"));	
	m_ctrlTrackLst.AddColumn(30,TEXT("#"));
//</BOOK_ADDON STEP5 Chapter 7.4.4> *********************************

// <BOOK_ADDON Step6 Chapter 8.3.5> *********************************
	IPCDMAccessDBPtr  comDB;
	long DBHandle,FieldCnt;
	VARIANT value,tvalue;

	HRESULT hr=comDB.CreateInstance( __uuidof( PCDMAccessDB ) );
	if (FAILED(hr)) 
	{
		MessageBox(TEXT("Could not access the PCDMAccessDB Class"));
		return TRUE;
	}
	VariantInit(&value);
	hr=comDB->OpenTable(TEXT("\\My Documents\\PCDM.cdb"),TEXT("PCDMCDs"),_variant_t((LONG)PCDM_PID_ID),&DBHandle);
	if (hr!=S_OK) 
	{
		MessageBox(TEXT("Could not open PCDMCDs Table"));
		return TRUE;
	}
	VariantInit(&value);
	VariantInit(&tvalue);
	value.vt=VT_I4;
	value.lVal=m_TitleID;
	hr=comDB->MoveFirst(DBHandle);
	hr=comDB->FindRecord(DBHandle,_variant_t((LONG)PCDM_PID_ID),value);
	if (hr!=S_OK) 
	{
		MessageBox(TEXT("CD Does not exits in database"));
		EndDialog(TRUE);
	}
	if (hr==S_OK)
	{
		hr=comDB->ReadRecord(DBHandle,&FieldCnt);
		if (hr==S_OK)
		{
			for (int i=0;i<FieldCnt;i++)
			{
				VariantClear(&value);
				hr=comDB->GetValue(_variant_t((LONG)(PCDM_PID_ID+i)),&value);
				if (hr==S_OK)
				switch(i)
				{
					case PCDM_PID_AUTHOR:
							m_strArtist=value.bstrVal;
						break;
					case PCDM_PID_TITLE:
							m_strTitle=value.bstrVal;
						break;
					case PCDM_PID_LABEL:
							m_strLabel=value.bstrVal;
						break;
					case PCDM_PID_RELEASE:
							m_strRelease=value.bstrVal;
						break;
					case PCDM_PID_COPYRIGHT:
							m_strCopyright=value.bstrVal;
						break;
					default:
						break;
				}
			}
			UpdateData(FALSE);
		}
	}
	comDB->CloseTable(DBHandle);	
	
	hr=comDB->OpenTable(TEXT("\\My Documents\\PCDM.cdb"),TEXT("PCDMTracks"),_variant_t((LONG)PCDM_PID_TRACKS_ID),&DBHandle);
	if (hr!=S_OK) // If Database does not exist create sample data
	{
		hr=comDB->AddProperty(_variant_t((LONG)PCDM_PID_TRACKS_ID),TRUE);
		hr=comDB->AddProperty(_variant_t((LONG)PCDM_PID_TRACKS_TITLE),FALSE);
		hr=comDB->AddProperty(_variant_t((LONG)PCDM_PID_TRACKS_TRACKNO),FALSE);
		hr=comDB->CreateTable(TEXT("\\My Documents\\PCDM.cdb"),TEXT("PCDMTracks"));
		hr=comDB->OpenTable(TEXT("\\My Documents\\PCDM.cdb"),TEXT("PCDMTracks"),
							_variant_t((LONG)PCDM_PID_TRACKS_ID),&DBHandle);

		hr=comDB->AddNewRecord(DBHandle);
		hr=comDB->SetValue(_variant_t((LONG)PCDM_PID_TRACKS_ID),_variant_t(m_TitleID));
		hr=comDB->SetValue(_variant_t((LONG)PCDM_PID_TRACKS_TITLE),_variant_t(TEXT("Skin")));
		hr=comDB->SetValue(_variant_t((LONG)PCDM_PID_TRACKS_TRACKNO),_variant_t(1L));
		hr=comDB->WriteRecord(DBHandle);

		hr=comDB->AddNewRecord(DBHandle);
		hr=comDB->SetValue(_variant_t((LONG)PCDM_PID_TRACKS_ID),_variant_t(m_TitleID));
		hr=comDB->SetValue(_variant_t((LONG)PCDM_PID_TRACKS_TITLE),_variant_t(TEXT("Frozen")));
		hr=comDB->SetValue(_variant_t((LONG)PCDM_PID_TRACKS_TRACKNO),_variant_t(2L));
		hr=comDB->WriteRecord(DBHandle);
		hr=comDB->MoveFirst(DBHandle);
	} // Get rid of that code after testing your application

⌨️ 快捷键说明

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