【VC开源代码栏目提醒】:本文主要为网学会员提供PeerRegeditTreeView.cpp,希望对需要PeerRegeditTreeView.cpp网友有所帮助,学习一下!
// PeerRegeditTreeView.cpp : implementation file
//
#include "stdafx.h"
#include "PeerYouC.h"
#include "PeerRegeditTreeView.h"
#include "peerregeditlistview.h"
#include "peermessagelistview.h"
#include "regeditaddkeydlg.h"
#include "MainFrm.h"
#include "command.h"
#include "peersocket.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CPeerRegeditTreeView
IMPLEMENT_DYNCREATE(CPeerRegeditTreeView, CTreeView)
CPeerRegeditTreeView::CPeerRegeditTreeView()
{
}
CPeerRegeditTreeView::~CPeerRegeditTreeView()
{
}
BEGIN_MESSAGE_MAP(CPeerRegeditTreeView, CTreeView)
//{{AFX_MSG_MAP(CPeerRegeditTreeView)
ON_WM_CREATE()
ON_WM_LBUTTONDOWN()
ON_NOTIFY_REFLECT(NM_RCLICK, OnRclick)
ON_COMMAND(ID_REGEDIT_KEY_ADD, OnRegeditKeyAdd)
ON_COMMAND(ID_REGEDIT_KEY_DEL, OnRegeditKeyDel)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPeerRegeditTreeView drawing
void CPeerRegeditTreeView::OnDraw(CDC* pDC)
{
CDocument* pDoc = GetDocument();
// TODO: add draw code here
}
/////////////////////////////////////////////////////////////////////////////
// CPeerRegeditTreeView diagnostics
#ifdef _DEBUG
void CPeerRegeditTreeView::AssertValid() const
{
CTreeView::AssertValid();
}
void CPeerRegeditTreeView::Dump(CDumpContext& dc) const
{
CTreeView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CPeerRegeditTreeView message handlers
int CPeerRegeditTreeView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CTreeView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
CTreeCtrl& tree=GetTreeCtrl();
tree.ModifyStyle(0,TVS_HASLINES|TVS_LINESATROOT|TVS_SHOWSELALWAYS|
TVS_HASBUTTONS);
if(!m_imagelist.Create( 16,16,ILC_MASK,3,1))
return -1;
m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_REGCOMPUTER));
m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_REGDIRCLOSE));
m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_REGDIROPEN));
tree.SetImageList(&m_imagelist,TVSIL_NORMAL);
return 0;
}
void CPeerRegeditTreeView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CTreeView::OnLButtonDown(nFlags, point);
CTreeCtrl& tree=GetTreeCtrl();
HTREEITEM item,root;
UINT flag=TVHT_ONITEM|TVHT_ONITEMBUTTON ;
if(!(item=tree.HitTest(point,&flag)))
return;
if(!(root=tree.GetRootItem()))
{
return;
}
if(item!=root)
{
char masterkey[32];
char childkey[512];
WSAEVENT hevent=WSACreateEvent();
if(!hevent)
{
return;
}
SOCKET s;
COMMAND com;
REGEDIT reg;
DWORD ret;
if(!PeerCreateSocket(&s,PEER_STREAM))
{
return;
}
AfxGetApp()->DoWaitCursor(1);
CSplitterWnd* regsplitterwnd=(CSplitterWnd*)GetParent();
CPeerRegeditListView* listview=(CPeerRegeditListView*)regsplitterwnd->GetPane(0,1);
CListCtrl& list=listview->GetListCtrl();
if(flag&TVHT_ONITEM)
{
list.DeleteAllItems();
if(PeerConnectSocket(s,ADDRESS,7788))
{
memset(&com,0,sizeof(com));
com.CommandID=PEER_REGEDIT_ENUMVALUE;
com.DataSize=sizeof(reg);
memset(®,0,sizeof(reg));
MakeRegInfo(tree,item,reg);
if(strcmp(reg.sunkey,"SECURITY")==0)
{
WSACloseEvent(hevent);
closesocket(s);
AfxGetApp()->DoWaitCursor(0);
return;
}
strcpy(masterkey,reg.key);
strcpy(childkey,reg.sunkey);
LVITEM litem;
char regtype[100];
char regvalue[512];
if(PeerSendDataS(s,(char*)&com,sizeof(com),&ret,hevent))
{
WSAResetEvent(hevent);
if(!PeerSendDataS(s,(char*)®,sizeof(reg),&ret,hevent))
{
WSACloseEvent(hevent);
closesocket(s);
AfxGetApp()->DoWaitCursor(0);
MESS(masterkey,childkey,"失败",0);
return;
}
while(PeerRecvDataS(s,(char*)®,sizeof(reg),&ret,hevent)&&ret==sizeof(reg))
{
WSAResetEvent(hevent);
int index=list.GetItemCount();
litem.cchTextMax=512;
int image;
if(reg.type==REG_BINARY||
reg.type