📄 leftview.cpp
字号:
// LeftView.cpp : CLeftView 类的实现
//
#include "stdafx.h"
#include "MDF.h"
#include "serialdoc.h"
#include "LeftView.h"
#include ".\leftview.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CLeftView
IMPLEMENT_DYNCREATE(CLeftView, CTreeView)
extern CMDFApp theApp ;
BEGIN_MESSAGE_MAP(CLeftView, CTreeView)
ON_NOTIFY_REFLECT(TVN_SELCHANGING, OnTvnSelchanging)
ON_NOTIFY_REFLECT(NM_RCLICK, OnNMRclick)
ON_COMMAND(ID_POP_PORTSTATE, OnPopPortstate)
ON_NOTIFY_REFLECT(TVN_SELCHANGED, OnTvnSelchanged)
END_MESSAGE_MAP()
// CLeftView 构造/析构
//##ModelId=465286A2034B
CLeftView::CLeftView()
{
// TODO: 在此处添加构造代码
m_pAdoDB = theApp.m_pAdoDB;
}
//##ModelId=465286A2035C
CLeftView::~CLeftView()
{
}
//##ModelId=465286A2034D
BOOL CLeftView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: 在此处通过修改 CREATESTRUCT cs 来修改窗口类或样式
return CTreeView::PreCreateWindow(cs);
}
//void CLeftView::OnInitialUpdate()
//{
// CTreeView::OnInitialUpdate();
//
// // TODO: 调用 GetTreeCtrl() 直接访问 TreeView 的树控件,
// // 从而可以用项填充 TreeView。
//}
// CLeftView 诊断
#ifdef _DEBUG
//##ModelId=465286A2035E
void CLeftView::AssertValid() const
{
CTreeView::AssertValid();
}
//##ModelId=465286A20360
void CLeftView::Dump(CDumpContext& dc) const
{
CTreeView::Dump(dc);
}
//##ModelId=465286A2034C
CSerialDoc* CLeftView::GetDocument() // 非调试版本是内联的
{
//ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CSerialDoc)));
return NULL; //(CSerialDoc*)CView::m_pDocument;
}
#endif //_DEBUG
// 初始化设备节点树
//##ModelId=465286A20371
int CLeftView::IniTreeNode(void)
{
CString strTip,strSQL,strTable,strField ; //系统提示信息
CImageList imgList;
_variant_t var;
_RecordsetPtr pRsPtr ;
//设置图片
IniImageList();
CTreeCtrl& m_wndTree = GetTreeCtrl();
ASSERT(m_wndTree.GetImageList(TVSIL_NORMAL) == NULL);
m_wndTree.SetImageList(&m_imgList,TVSIL_NORMAL);
pRsPtr.CreateInstance(__uuidof(Recordset));
strTable = "VW_Module" ; //监测模块类别表
strSQL.Format("SELECT * FROM %s",strTable) ;
if( m_pAdoDB->ReadDB(strSQL, pRsPtr,strTip) != 0 )//读监测模块类别表
{
return -1 ;//完全未能初始化
}
//**************读取设备类别***************
TVINSERTSTRUCT tvInsert,tvItem;
tvInsert.hParent = NULL;
tvInsert.hInsertAfter = NULL;
tvInsert.item.mask = TVIF_TEXT;
CString sParent;
//tvInsert.item.pszText = _T("图书馆");
HTREEITEM hPA;
while( !pRsPtr->adoEOF )
{
if( m_pAdoDB->GetRdData("SVMNote",pRsPtr,var,strTip) == 0 )
{
m_pAdoDB->GetStrVar(var,strField,strTip);
if (sParent.Compare((LPCTSTR)strField) != 0 || sParent.GetLength() == 0)
{
tvInsert.item.iImage = 0;
tvInsert.item.pszText = strField.GetBuffer();
sParent = strField;
hPA= m_wndTree.InsertItem(&tvInsert);
}
tvItem.hParent = hPA;
tvItem.hInsertAfter = NULL;
tvItem.item.iImage = 1;
tvItem.item.mask = TVIF_TEXT;
m_pAdoDB->GetFieldValue(_T("SVMTrueName"),pRsPtr,strTip);
tvItem.item.pszText = strTip.GetBuffer();
m_wndTree.InsertItem(&tvItem);
}
pRsPtr->MoveNext();
}
pRsPtr->Close();
pRsPtr.Release();
//HTREEITEM hPA = m_wndTree.InsertItem(TVIF_TEXT,_T("计算机类"), 0, 0, 0, 0, 0, hCountry, NULL);
//HTREEITEM hWA = m_wndTree.InsertItem(_T("管理类"),0, 0, hCountry, hPA);
//HTREEITEM hEA = m_wndTree.InsertItem(_T("电子类"),0, 0, hCountry, hWA);
//
//m_wndTree.InsertItem(_T("Windows 程序设计"), hPA, TVI_SORT);
//m_wndTree.InsertItem(_T("vc++编程指南"), hPA, TVI_SORT);
//m_wndTree.InsertItem(_T("JAVA"), hPA, TVI_SORT);
//m_wndTree.InsertItem(_T("php 管理"), hWA, TVI_SORT);
//m_wndTree.InsertItem(_T("Kalaloch"), hWA, TVI_SORT);
//m_wndTree.InsertItem(_T("Yakima"), hWA, TVI_SORT);
//m_imgList.Create(
//this->UpdateWindow();
return 0;
}
//##ModelId=465286A2037A
void CLeftView::OnInitialUpdate()
{
CTreeView::OnInitialUpdate();
IniTreeNode();
// TODO: 在此添加专用代码和/或调用基类
}
//##ModelId=465286A2037C
BOOL CLeftView::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
{
// TODO: 在此添加专用代码和/或调用基类
dwStyle |= TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT;
return CTreeView::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
}
// 初始化ImageList控件
//##ModelId=465286A203B9
int CLeftView::IniImageList(void)
{
m_imgList.Create(IDB_BITMAPTREE,18,ILC_COLOR24,RGB(0,0,0));
return 0;
}
//##ModelId=465286A203BB
void CLeftView::OnTvnSelchanging(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
*pResult = 0;
}
// 根据文本得到节点
//##ModelId=465286A203C9
BOOL CLeftView::GetNode(TVITEM &tmNode, CString sNodeText)
{
CTreeCtrl& m_wndTree = GetTreeCtrl();
TVITEM node;
node.mask = TVIF_TEXT;
node.pszText = sNodeText.GetBuffer();
BOOL blResult = m_wndTree.GetItem(&node) ;
if (blResult)
{
tmNode = node;
return blResult;
}
else
return blResult;
}
//##ModelId=465286A203DA
void CLeftView::OnNMRclick(NMHDR *pNMHDR, LRESULT *pResult)
{
CMenu menu;
menu.LoadMenu(IDR_MNUCONTROL);
CPoint point;
GetCursorPos(&point);
// 显示图标菜单
menu.GetSubMenu(0)->TrackPopupMenu(
TPM_LEFTBUTTON|TPM_RIGHTBUTTON,
point.x, point.y, this, NULL);
*pResult = 0;
}
//##ModelId=465286A30001
void CLeftView::OnPopPortstate()
{
//if ()
// TODO: 在此添加命令处理程序代码
}
//##ModelId=465286A30003
void CLeftView::OnTvnSelchanged(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
//CTreeCtrl p_tree = this->GetTreeCtrl();
*pResult = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -