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; 
}