⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainfrm.cpp

📁 使用vc开发的个人信息管理系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//

#include "stdafx.h"
#include "dotNET界面.h"
#include "dotNET界面Doc.h"
#include "dotNET界面View.h"
#include "MainFrm.h"
#include "SearchDlg.h"
#include "SearchResult.h"
#include "DlgNode.h"
#include "DlgAddFiles.h"
#include "DlgUpdateNode.h"
#include "MyFolder.h"
#include "DlgAddBookMark.h"
#include "DlgBookMarkManage.h"
#include ".\mainfrm.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMainFrame

IMPLEMENT_DYNCREATE(CMainFrame, CAutoHideFrame)

BEGIN_MESSAGE_MAP(CMainFrame, CAutoHideFrame)
	//{{AFX_MSG_MAP(CMainFrame)
	ON_WM_CREATE()
	ON_COMMAND(ID_ADDNODE, OnAddnode)
	ON_UPDATE_COMMAND_UI(ID_ADDNODE, OnUpdateAddnode)
	ON_COMMAND(ID_SHOWLEFTBAR, OnShowleftbar)
	ON_UPDATE_COMMAND_UI(ID_SHOWLEFTBAR, OnUpdateShowleftbar)
	ON_COMMAND(ID_SHOWBOTTOMBAR, OnShowbottombar)
	ON_UPDATE_COMMAND_UI(ID_SHOWBOTTOMBAR, OnUpdateShowbottombar)
	ON_COMMAND(ID_ADDFILES, OnAddfiles)
	ON_UPDATE_COMMAND_UI(ID_ADDFILES, OnUpdateAddfiles)
	ON_COMMAND(ID_DELETENODE, OnDeletenode)
	ON_UPDATE_COMMAND_UI(ID_DELETENODE, OnUpdateDeletenode)
	ON_COMMAND(ID_UPDATENODE, OnUpdatenode)
	ON_UPDATE_COMMAND_UI(ID_UPDATENODE, OnUpdateUpdatenode)
	ON_WM_CLOSE()
	//}}AFX_MSG_MAP
	ON_COMMAND(ID_ADDBOOKMARK, OnAddbookmark)
	ON_UPDATE_COMMAND_UI(ID_ADDBOOKMARK, OnUpdateAddbookmark)
	ON_COMMAND(ID_BOOKMANAGE, OnBookmanage)
	ON_UPDATE_COMMAND_UI(ID_BOOKMANAGE, OnUpdateBookmanage)
	ON_COMMAND(32801, OnConnction)
END_MESSAGE_MAP()

static UINT indicators[] =
{
	ID_SEPARATOR,           // status line indicator
	ID_INDICATOR_CAPS,
	ID_INDICATOR_NUM,
	ID_INDICATOR_SCRL,
};

/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction

CMainFrame::CMainFrame()
{
	// TODO: add member initialization code here
	theApp.m_AddNode=false;
}

CMainFrame::~CMainFrame()
{
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
		!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}

	if (!m_wndStatusBar.Create(this) ||
		!m_wndStatusBar.SetIndicators(indicators,
		  sizeof(indicators)/sizeof(UINT)))
	{
		TRACE0("Failed to create status bar\n");
		return -1;      // fail to create
	}
	
	m_wndToolBar.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);

	//if(!CreateMyEditToolBar())
	//	MessageBox("Create My Edit ToolBar Failure");

	if (!m_wndDockPageBar.Create(_T("DockPageBar"), this, CSize(230,400),TRUE,123))
	{
		TRACE0("Failed to create DockPageBar.\n");
			return -1;
	}
	m_wndDockPageBar.SetBarStyle(m_wndDockPageBar.GetBarStyle() |
		CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
	m_wndDockPageBar.EnableDocking (CBRS_ALIGN_ANY);

	if (!m_wndDockPageBar1.Create(_T("DockPageBar"), this, CSize(230,120),TRUE,1234))
	{
		TRACE0("Failed to create DockPageBar.\n");
			return -1;
	}
	m_wndDockPageBar1.SetBarStyle(m_wndDockPageBar1.GetBarStyle() |
		CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
	m_wndDockPageBar1.EnableDocking (CBRS_ALIGN_ANY);


	// TODO: Delete these three lines if you don't want the toolbar to
	//  be dockable
	//m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);

	EnableDocking(CBRS_ALIGN_ANY);
	//DockControlBar(&m_wndToolBar);
	DockControlBar(&m_wndDockPageBar, AFX_IDW_DOCKBAR_LEFT);
	DockControlBar(&m_wndDockPageBar1, AFX_IDW_DOCKBAR_BOTTOM);

	if (!m_wndTree.Create(WS_CHILD|WS_VISIBLE|
		TVS_HASLINES|TVS_HASBUTTONS|TVS_LINESATROOT,
		CRect(0, 0, 0, 0), this, 100))
	{
		TRACE0("Failed to create instant bar child\n");
		return -1;
	}

	hti = m_wndTree.InsertItem(_T("我的资料管理目录"));
	InitNodeFile(hti,"0");
	m_wndTree.Expand(hti, TVE_EXPAND);
	//AncestorNodeFile(hti);
	m_wndDockPageBar.AddPage(&m_wndTree,"目录",IDI_HELP);
	m_wndDockPageBar.AddPage (RUNTIME_CLASS(CSearchDlg), IDD_SEARCHDLG, "搜索", IDI_SEARCH);


	//if (!m_wndEdit.Create(WS_CHILD|WS_VISIBLE|
	//		ES_MULTILINE|ES_WANTRETURN|ES_AUTOVSCROLL,
	//	CRect(0,0,0,0), this, 123))
	//	return -1;
	CRect rect(0,0,200,500);
	m_ListCtrl.Create(WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT, rect, this, 1);
	m_ListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP);
	m_ListCtrl.InsertColumn(0, "书签编号", LVCFMT_LEFT, 70);
	m_ListCtrl.InsertColumn(1, "书签名称", LVCFMT_LEFT, 155);
	ShowBookMark();
	m_wndDockPageBar.AddPage(&m_ListCtrl,"书签",IDI_INDEX);

	m_wndDockPageBar1.AddPage (RUNTIME_CLASS(CSearchResult), IDD_SEARCHRESULT, "目录查询结果显示", IDI_SEARCHRESULT);
	
	//m_wndDockPageBar.AddPage (&m_wndDockPageBar1);
	return 0;
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics

#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
	CFrameWnd::AssertValid();
}

void CMainFrame::Dump(CDumpContext& dc) const
{
	CFrameWnd::Dump(dc);
}

#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers


bool CMainFrame::InitNodeFile(HTREEITEM hti,CString strReadNode)
{
	HTREEITEM hti1;
	_RecordsetPtr MySet, AttachmentSet;
	CString strNodeName,strNodeValue,strNodeType,strNodeParentId,strNodeTurn,strAttachment,strdata;
	_variant_t Holder;
	MySet.CreateInstance(__uuidof(Recordset));
	AttachmentSet.CreateInstance(__uuidof(Recordset));
	if(m_wndTree.GetItemText(hti)=="我的资料管理目录"){
		CMyFolder Node(hti,"0","我的资料管理目录","0","0","0","0","我的资料管理目录");
		MyNodes.push_back(Node);
	}
	_variant_t _strSQL("SELECT * FROM TTree WHERE ParentId='"+strReadNode+"'");
	if(!theApp.ADOExecute(MySet,_strSQL)) return false;
	//MySet->MoveFirst();
	while(!MySet->adoEOF){
		Holder=MySet->GetCollect("NodeId");
		strNodeValue = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
		Holder=MySet->GetCollect("Title");
		strNodeName = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
		Holder=MySet->GetCollect("ParentId");
		strNodeParentId = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
		Holder=MySet->GetCollect("Type");
		strNodeType = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
		Holder=MySet->GetCollect("Turn");
		strNodeTurn = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
		Holder=MySet->GetCollect("CreateTime");
		strdata = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
		CString strHead=m_wndTree.GetItemText(hti);
		if(strNodeType=="0"){
			hti1=m_wndTree.InsertItem(strNodeName,hti);
			CMyFolder Node(hti1,strNodeValue,strNodeName,strNodeParentId,strNodeType,strNodeTurn,strdata,strHead);
			MyNodes.push_back(Node);
			InitNodeFile(hti1,strNodeValue);
			m_wndTree.Expand(hti1, TVE_EXPAND);
		}else{
			//if(m_wndTree.GetItemText(hti)!="我的资料管理目录"){
				_variant_t _AttachmentSQL("SELECT * FROM TContent WHERE NodeId='"+strNodeValue+"'");
				if(!theApp.ADOExecute(AttachmentSet,_AttachmentSQL)) return false;
				if(AttachmentSet->GetRecordCount()>0){
					Holder=AttachmentSet->GetCollect("AttachmentId");
					strAttachment = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
				}else{
					strAttachment="0";
				}
				hti1=m_wndTree.InsertItem(strNodeName,hti);
				CMyFolder Node(hti1,strNodeValue,strNodeName,strNodeParentId,strNodeType,strNodeTurn,strdata,strHead);
				Node.SetfoderAttachment(strAttachment);
				MyNodes.push_back(Node);
			//}
		}
		MySet->MoveNext();
	}

	if(adStateOpen==MySet->State)	MySet->Close();
	MySet.Release();
	if(adStateOpen==AttachmentSet->State)	AttachmentSet->Close();
	AttachmentSet.Release();
	return 1;
}

void CMainFrame::OnAddnode() 
{
	// TODO: Add your command handler code here

	_RecordsetPtr MySet;
	int iCount;
	_variant_t Holder;
	MySet.CreateInstance(__uuidof(Recordset));
	DlgNode dlg;
begin://如果目录名重复,跳转到开始位置重新输入
	iCount=0;
	if(dlg.DoModal()==IDOK){
		CString str=m_wndTree.GetItemText(m_wndTree.hItem);
		if(str==""){
			AfxMessageBox("你没有选择目录,请选择");
			return ;
		}
		if(m_wndTree.SelectNode.GetfolderType()=="1"){
			AfxMessageBox("你选择的不是目录,不能添加目录");
			return ;
		}
		if(dlg.m_strNodeName.IsEmpty()){
			AfxMessageBox("你没有输入要添加的目录名称,请重新输入");
			goto begin;
		}
		//////////////////////////判断是否有重复目录名////////////////////
		for(int i=0;i<MyNodes.size();i++){
			if(MyNodes[i].GetfolderParentId()==m_wndTree.SelectNode.GetfolderId() && dlg.m_strNodeName==MyNodes[i].GetfolderName()){
				iCount++;
			}
		}
		if(iCount>0) {
			AfxMessageBox("你输入的目录名称在  \""+m_wndTree.SelectNode.GetfolderName()+"\"  目录下已经存在,请更名");
			goto begin;
		}
		int pos=AfxMessageBox("你确定添加此目录到  \""+m_wndTree.SelectNode.GetfolderName()+"\"  选定位置吗?",MB_OKCANCEL);
		if(pos==1){
			MyNodes.clear();
			CString strData,PN_Name,strNodetye="0";
			strData=MySetDate();
			PN_Name.Format("%d",p_Checkout.StringToInt(m_wndTree.SelectNode.GetfolderTurn())+1);
			_variant_t strSQLInsert("INSERT INTO TTree (Title,ParentId,Type,CreateTime,Turn) VALUES('"+dlg.m_strNodeName+"','"+m_wndTree.SelectNode.GetfolderId()+"','"+strNodetye+"','"+strData+"','"+PN_Name+"')");
			if(!theApp.ADOExecute(MySet,strSQLInsert)) return ;
			m_wndTree.DeleteAllItems();
			hti = m_wndTree.InsertItem(_T("我的资料管理目录"));
			InitNodeFile(hti,"0");
			m_wndTree.Expand(hti, TVE_EXPAND);
			//AncestorNodeFile(hti);
		}else{
			goto begin;
		}
	}else{
		
	}
	if(adStateOpen==MySet->State)	MySet->Close();
	MySet.Release();
}

void CMainFrame::OnUpdateAddnode(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(theApp.m_AddNode);
}

void CMainFrame::OnShowleftbar() 
{
	// TODO: Add your command handler code here
	ShowControlBar(&m_wndDockPageBar, !m_wndDockPageBar.IsVisible(), FALSE);
}

void CMainFrame::OnUpdateShowleftbar(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable();
	pCmdUI->SetCheck(m_wndDockPageBar.IsVisible());
}

void CMainFrame::OnShowbottombar() 
{
	// TODO: Add your command handler code here
	ShowControlBar(&m_wndDockPageBar1, !m_wndDockPageBar1.IsVisible(), FALSE);
}

void CMainFrame::OnUpdateShowbottombar(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable();
	pCmdUI->SetCheck(m_wndDockPageBar1.IsVisible());
}

void CMainFrame::OnAddfiles() 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -