📄 leftview.cpp
字号:
// LeftView.cpp : 实现文件
//
#include "stdafx.h"
#include "NetExplorer.h"
#include "LeftView.h"
#include ".\leftview.h"
#include "NetExplorerDoc.h"
#include "ThreadFunc2.h"
#include "NetExplorerView.h"
IMPLEMENT_DYNCREATE(CLeftView, CTreeView)
CLeftView::CLeftView()
{
m_pImageList = new CImageList( );
m_pImageList->Create(16, 16, ILC_MASK, 4, 1);
AddBitmapToImageList(IDB_BITMAP7);
AddBitmapToImageList(IDB_BITMAP10);
AddBitmapToImageList(IDB_BITMAP8);
AddBitmapToImageList(IDB_BITMAP9);
}
CLeftView::~CLeftView()
{
}
BEGIN_MESSAGE_MAP(CLeftView, CTreeView)
ON_MESSAGE(ADDROUTER,OnAddRouter)
ON_MESSAGE(WM_PING,OnPing)
ON_MESSAGE(WM_PING_FINISH,OnPingFinish)
ON_WM_LBUTTONDOWN()
ON_WM_CHAR()
END_MESSAGE_MAP()
LRESULT CLeftView::OnPing(WPARAM wp,LPARAM lp)
{
this->GetTreeCtrl().InsertItem(((IcmpThreadPar*)lp)->Buffer,3,3,(HTREEITEM)wp);
return 0;
}
LRESULT CLeftView::OnPingFinish(WPARAM wp,LPARAM lp)
{
delete ((IcmpThreadPar*)lp);
this->GetTreeCtrl().Expand((HTREEITEM)wp,TVE_EXPAND );
return 0;
}
LRESULT CLeftView::OnAddRouter(WPARAM wp,LPARAM lp)
{
RouterEnty * Router=(RouterEnty *)wp;
POSITION p=Router->RouterIP.GetHeadPosition();
CString T;
T.Format("Router %s",this->NetIpTotring(Router->ButtonEnty.ValidIp));
HTREEITEM CurrentRouter=this->GetTreeCtrl().InsertItem(T.GetBuffer(),1,1,this->Root);
for(int i=0;i<Router->RouterIP.GetCount();i++)
{
ULONG IP=Router->RouterIP.GetNext(p);
if(IP!=inet_addr("127.0.0.1"))
{
this->GetTreeCtrl().InsertItem((this->NetIpToSubNet(IP)),2,2,CurrentRouter);
}
}
this->GetTreeCtrl().Expand(CurrentRouter,TVE_EXPAND );
this->GetTreeCtrl().Expand(this->Root,TVE_EXPAND );
return 0;
}
// CLeftView 诊断
#ifdef _DEBUG
void CLeftView::AssertValid() const
{
CTreeView::AssertValid();
}
void CLeftView::Dump(CDumpContext& dc) const
{
CTreeView::Dump(dc);
}
#endif //_DEBUG
// CLeftView 消息处理程序
BOOL CLeftView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: 在此添加专用代码和/或调用基类
cs.style |= TVS_HASBUTTONS | TVS_LINESATROOT | TVS_HASLINES| TVS_FULLROWSELECT|WS_VISIBLE|WS_CHILD|WS_BORDER|TVS_HASLINES|TVS_LINESATROOT|TVS_HASBUTTONS|TVS_EDITLABELS ;
return CTreeView::PreCreateWindow(cs);
}
void CLeftView::OnInitialUpdate()
{
CTreeView::OnInitialUpdate();
this->GetTreeCtrl().SetImageList(m_pImageList,TVSIL_NORMAL);
Root=this->GetTreeCtrl().InsertItem("Internet",0,0);
((CNetExplorerDoc*)(this->GetDocument()))->PLeftView=this;
this->GetTreeCtrl().SetBkColor(RGB(255,255,240));
// TODO: 在此添加专用代码和/或调用基类
}
void CLeftView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
HTREEITEM HitItem;
HitItem=this->GetTreeCtrl().HitTest(point);
if(HitItem!=this->Root)
{
CString Text=this->GetTreeCtrl().GetItemText(HitItem);
if(Text.GetBuffer()[0]!='R'&&Text.GetBuffer()[0]!='H'&&this->GetTreeCtrl().GetChildItem(HitItem)==NULL)
{
IcmpThreadPar* P=new IcmpThreadPar;
P->Parament.Buffer=P->Buffer;
P->Parament.HostIP=inet_addr(Text.GetBuffer());
P->Parament.MessageHandler=this;
P->Parament.NetMask=inet_addr("255.255.255.0");
P->Parament.Stop=false;
P->Parament.wp=(WPARAM)HitItem;
P->Parament.lp=(LPARAM)P;
AfxBeginThread(MyPingProc2,&(P->Parament));
}
}
CTreeView::OnLButtonDown(nFlags, point);
}
void CLeftView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
((CNetExplorerView*)(((CNetExplorerDoc*)(this->GetDocument()))->PNetExplorerView))->OnChildrenChar(nChar,nRepCnt,nFlags);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -