📄 mainfrm.cpp
字号:
// 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 + -