www.pudn.com > FileConverter.zip > LeftTreeView.cpp
// LeftTreeView.cpp : インプリメンテーション ファイル
//
#include "stdafx.h"
#include "FileConverter.h"
#include "LeftTreeView.h"
#include "MainFrm.h"
#include "FileOprView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CLeftTreeView
IMPLEMENT_DYNCREATE(CLeftTreeView, CTreeView)
CLeftTreeView::CLeftTreeView()
{
}
CLeftTreeView::~CLeftTreeView()
{
}
BEGIN_MESSAGE_MAP(CLeftTreeView, CTreeView)
//{{AFX_MSG_MAP(CLeftTreeView)
ON_NOTIFY_REFLECT(TVN_SELCHANGED, OnSelchanged)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CLeftTreeView 描画
void CLeftTreeView::OnDraw(CDC* pDC)
{
CDocument* pDoc = GetDocument();
// TODO: この位置に描画用のコードを追加してください
}
/////////////////////////////////////////////////////////////////////////////
// CLeftTreeView 診断
#ifdef _DEBUG
void CLeftTreeView::AssertValid() const
{
CTreeView::AssertValid();
}
void CLeftTreeView::Dump(CDumpContext& dc) const
{
CTreeView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CLeftTreeView メッセージ ハンドラ
BOOL CLeftTreeView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください
return CTreeView::PreCreateWindow(cs);
}
void CLeftTreeView::OnInitialUpdate()
{
CTreeView::OnInitialUpdate();
// TreeCtrlを取得する
CTreeCtrl& m_CtrlTree=(CTreeCtrl&)this->GetTreeCtrl();
m_CtrlTree.ModifyStyle(0,TVS_HASLINES|TVS_HASBUTTONS,NULL);
// ルートSTRUCTを定義する
TVINSERTSTRUCT tvInsert;
tvInsert.hParent = NULL;
tvInsert.hInsertAfter = NULL;
tvInsert.item.mask = TVIF_TEXT;
tvInsert.item.pszText = _T("お客さま");
// ルートItemを追加する
HTREEITEM hRoot = m_CtrlTree.InsertItem(&tvInsert);
_RecordsetPtr m_pRecordset = getKokyakuList();
HTREEITEM hPA;
CString vtkokyakuCD;
CString vtkokyakuName;
CString vtkokyakuType;
CString vtTemp;
if (m_pRecordset!= NULL) {
while (!m_pRecordset->adoEOF) {
vtkokyakuCD=m_pRecordset->GetCollect("kokyakuCD").bstrVal;
vtkokyakuName=m_pRecordset->GetCollect("kokyakuName").bstrVal;
vtTemp = m_pRecordset->GetCollect("kokyakuType").bstrVal;
if (vtTemp.Compare(vtkokyakuType)==0)
{
m_CtrlTree.InsertItem(_T(vtkokyakuCD +":"+ vtkokyakuName), hPA, TVI_SORT);
} else {
vtkokyakuType =m_pRecordset->GetCollect("kokyakuType").bstrVal;
hPA= m_CtrlTree.InsertItem(TVIF_TEXT,_T(vtkokyakuType), 0, 0, 0, 0, 0, hRoot, NULL);
m_CtrlTree.InsertItem(_T(vtkokyakuCD +":"+ vtkokyakuName), hPA, TVI_SORT);
}
m_pRecordset->MoveNext();
}
}
m_CtrlTree.Expand(hRoot,TVE_EXPAND);
}
_RecordsetPtr CLeftTreeView::getKokyakuList()
{
_ConnectionPtr m_pConnection;
m_pConnection.CreateInstance(__uuidof(Connection));
try
{
// データベースをオープンする
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\KINGMU\\MFCトレーニング\\src\\FileConverter\\mydb.mdb",
"","",NULL);
}
catch(_com_error e)
{
AfxMessageBox("データベースに連結できません。");
return NULL;
}
// RecordSetをオープンする
_RecordsetPtr m_pRecordset;
// RecordSetを初期化する
m_pRecordset.CreateInstance(__uuidof(Recordset));//
try
{
m_pRecordset->Open("select * from kokyaku order by kokyakuType,kokyakuCD",m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
return m_pRecordset;
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
}
void CLeftTreeView::OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
CTreeCtrl& CtlTree=(CTreeCtrl&)GetTreeCtrl();
HTREEITEM select_item=CtlTree.GetSelectedItem();
CString str=CtlTree.GetItemText(select_item);
CString vtkokyakuID;
CString vtkokyakuName;
CString vtkokyakuType;
if (CtlTree.GetParentItem(select_item)==NULL) {
// ルート
vtkokyakuID="";
vtkokyakuName ="";
vtkokyakuType ="";
} else if (CtlTree.GetChildItem(select_item) == NULL ) {
// 孫
vtkokyakuID=str.Left(4);
vtkokyakuName =str.Mid(5,str.GetLength()-5);
vtkokyakuType =CtlTree.GetItemText(CtlTree.GetParentItem(select_item));
} else {
// 子
vtkokyakuID="";
vtkokyakuName ="";
vtkokyakuType ="";
}
CMainFrame* m_MainFrame= (CMainFrame*)GetParentFrame() ;
CFileOprView * oprView = (CFileOprView*)m_MainFrame->wndSplitter1.GetPane(0,0);
oprView->InitialControl(1,_T(vtkokyakuType),_T(vtkokyakuID),_T(vtkokyakuName));
*pResult = 0;
}