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

📄 mainfrm.cpp

📁 一个源代码管理工具,支持悬浮框拖曳,后台数据库管理,代码高亮显示灯功能
💻 CPP
📖 第 1 页 / 共 4 页
字号:
	bi.pszDisplayName = name;
//	bi.lpszTitle="Select folder";
	bi.ulFlags = 0;
	LPITEMIDLIST idl = SHBrowseForFolder(&bi);
	if(idl == NULL)
		return 1;
	SHGetPathFromIDList(idl, str.GetBuffer(MAX_PATH));
	str.ReleaseBuffer();
//	m_Path = str;
	if(str.GetAt(str.GetLength()-1) == '\\')
		//str -= "\\";
		str.SetAt(str.GetLength()-1, '\0');
	LPMALLOC lpMalloc;
	if(FAILED(SHGetMalloc(&lpMalloc))) return 1;
	//释放内存
	lpMalloc->Free(idl);
	lpMalloc->Release();
	return 0;
}

void CMainFrame::AddSubDir(HTREEITEM hParent)
{
	CString strvalue = "select * from CodeTable where ParentID = ", strdata;
	long lvalue = m_wndTree.GetItemData(hParent);
	strdata.Format("%ld", lvalue);
	strvalue = strvalue + "'" + strdata +"'";

	m_DbObject.GetValue(strvalue);
	
	CString str, strCodeName;
	
	long lt, ldir;
	_variant_t vname,vtemp;
	HTREEITEM ht;
	while(!m_DbObject.m_pRecordset->adoEOF)
	{
		vname = m_DbObject.m_pRecordset->GetCollect("CodeName");
		vtemp = m_DbObject.m_pRecordset->GetCollect("CodeID");
		str = (LPCTSTR)(_bstr_t)vname;
		lt = (long)vtemp;
		ht = m_wndTree.InsertItem(str, hParent);

		ldir = (long)m_DbObject.m_pRecordset->GetCollect("IsDir");


		if(ldir)
		{
			m_wndTree.SetItemImage(ht, 0, 0);
		}
		else
			m_wndTree.SetMyItemImage(ht, str);
		m_wndTree.SetItemData(ht, lt);
		m_DbObject.m_pRecordset->MoveNext();
	}
}


int CMainFrame::ImportFile()
{


	HTREEITEM hItem, hpItem, htemp1, hroot;

	CString strPathName,str1,dbstr[6],stemp;

	
	CFileDialog OpenFileDlg(TRUE, _T(""), NULL, OFN_HIDEREADONLY|OFN_EXPLORER|OFN_NOCHANGEDIR, "*.*|*.*||");
	if(OpenFileDlg.DoModal() == IDOK)
	{
		strPathName = OpenFileDlg.GetPathName();

		hItem = m_wndTree.GetSelectedItem();
		hpItem = m_wndTree.GetParentItem(hItem);
		hroot = m_wndTree.GetRootItem();

	//	if(hItem == NULL)
	//		hItem = hpItem = hroot;

		if(m_SelectFlag == 1)
		{
			if(SelectDlg.DoModal() == IDOK)
			{
				str1.Format("%s", OpenFileDlg.GetFileName());

				if(m_NewFlag)                         //新建同级节点
				{
					if(hpItem != NULL)
						dbstr[3].Format("%ld", m_wndTree.GetItemData(hpItem));
					htemp1 = m_wndTree.InsertItem(_T(str1), hpItem);
					m_wndTree.SetMyItemImage(htemp1, str1);
				}
				else                                  //新建子节点
				{
					/*如父节点原来无子节点,则更改父节点状态并修改数据库*/
					if((hItem != NULL) && (!m_wndTree.ItemHasChildren(hItem)))
					{
						m_wndTree.SetItemImage(hItem, 0, 0);
						CString strvalue = "select * from CodeTable where CodeID = ", strdata;
						long lvalue = m_wndTree.GetItemData(hItem);
						strdata.Format("%ld", lvalue);
						strvalue = strvalue + "" + strdata +"";

						m_DbObject.GetValue(strvalue);
						m_DbObject.SetData("IsDir", "1");
						m_DbObject.Update();
					}

					if(hItem != NULL)
						dbstr[3].Format("%ld", m_wndTree.GetItemData(hItem));
					htemp1 = m_wndTree.InsertItem(_T(str1), hItem);
					m_wndTree.SetMyItemImage(htemp1, str1);
				}
				dbstr[0].Format("%s", OpenFileDlg.GetFileName());

				dbstr[1] = strPathName;
			//	dbstr[2].Format("%s", "2004-10-05");
				COleDateTime oleDt = COleDateTime::GetCurrentTime();
				dbstr[2]=oleDt.Format("%y年%m月%d日");
				

				dbstr[4].Format("%s", "0");//0为文件
				m_DbObject.AddRecord(dbstr);

				_variant_t vtemp;
				vtemp = m_DbObject.m_pRecordset->GetCollect("CodeID");
				m_wndTree.SetItemData(htemp1, long(vtemp));
			}
		}
		else
		{
			str1.Format("%s", OpenFileDlg.GetFileName());

			if(m_NewFlag)                         //新建同级节点
			{
				if(hpItem != NULL)
					dbstr[3].Format("%ld", m_wndTree.GetItemData(hpItem));
				htemp1 = m_wndTree.InsertItem(_T(str1), hpItem);
				m_wndTree.SetMyItemImage(htemp1, str1);
			}
			else                                  //新建子节点
			{
				/*如父节点原来无子节点,则更改父节点状态并修改数据库*/
				if((hItem != NULL) && (!m_wndTree.ItemHasChildren(hItem)))
				{
					m_wndTree.SetItemImage(hItem, 0, 0);
					CString strvalue = "select * from CodeTable where CodeID = ", strdata;
					long lvalue = m_wndTree.GetItemData(hItem);
					strdata.Format("%ld", lvalue);
					strvalue = strvalue + "" + strdata +"";

					m_DbObject.GetValue(strvalue);
					m_DbObject.SetData("IsDir", "1");
					m_DbObject.Update();
				}
				if(hItem != NULL)
					dbstr[3].Format("%ld", m_wndTree.GetItemData(hItem));
				htemp1 = m_wndTree.InsertItem(_T(str1), hItem);
				m_wndTree.SetMyItemImage(htemp1, str1);

			}
			dbstr[0].Format("%s", OpenFileDlg.GetFileName());

			dbstr[1] = strPathName;
//			dbstr[2].Format("%s", "2004-10-05");
			COleDateTime oleDt = COleDateTime::GetCurrentTime();
			dbstr[2]=oleDt.Format("%y年%m月%d日");
			

			dbstr[4].Format("%s", "0");//0为文件
			m_DbObject.AddRecord(dbstr);

			_variant_t vtemp;
			vtemp = m_DbObject.m_pRecordset->GetCollect("CodeID");
			m_wndTree.SetItemData(htemp1, long(vtemp));
		}
		if(hItem != NULL)
			m_wndTree.Expand(hItem, TVE_EXPAND);
	}
	return 0;
}

int CMainFrame::ImportDir()
{
/*	HTREEITEM hItem, hpItem, hti;
//	int ParentID = m_wndTree.GetItemData(hItem);

	CString FilePath, FileName, dbstr[6];
	if(TakeDirDialog(FilePath) == 0)
	{
		//MessageBox(FilePath);

		int i,j;
		FileName = FilePath;
		for(i = FilePath.GetLength() - 1; i >= 0; i--)
			if(FilePath.GetAt(i) == '\\')
				break;
		if(i >= 0)
		{
			i++;
			for(j = 0; i < FilePath.GetLength(); j++, i++)
				FileName.SetAt(j, FilePath.GetAt(i));
			FileName.SetAt(j, '\0');
		}


		hItem = m_wndTree.GetSelectedItem();
		if(hItem == NULL)
			hItem = m_wndTree.GetRootItem();
		hpItem = m_wndTree.GetParentItem(hItem);

		if(m_SelectFlag == 1)
			SelectDlg.DoModal();

		if(m_NewFlag)                         //新建同级节点
		{
			hti = m_wndTree.InsertItem(FileName, hpItem);
			m_wndTree.SetItemImage(hti, 0, 0);

			dbstr[0] = FileName;
			dbstr[1].Empty();
			dbstr[2].Format("%s", "2004-10-05");
			if(hti != NULL)
			{
				if(hpItem != NULL)
					dbstr[3].Format("%ld", m_wndTree.GetItemData(hpItem));
				else
					dbstr[3].Empty();
			}
			dbstr[4].Format("%s", "1");//0为文件
		}
		else                                  //新建子节点
		{
			hti = m_wndTree.InsertItem(FileName, hItem);
			m_wndTree.SetItemImage(hti, 0, 0);
		//	m_wndTree.SetItemData(hti, m_wndTree.GetItemData());
			dbstr[0] = FileName;
			dbstr[1].Empty();
			dbstr[2].Format("%s", "2004-10-05");
			if(hti != NULL)
				dbstr[3].Format("%ld", m_wndTree.GetItemData(hItem));
			dbstr[4].Format("%s", "1");//0为文件
		}

		m_DbObject.AddRecord(dbstr);

		_variant_t vtemp;
		vtemp = m_DbObject.m_pRecordset->GetCollect("CodeID");
		m_wndTree.SetItemData(hti, long(vtemp));

		BrowseDir(FilePath, m_wndTree, hti);
		if(!m_NewFlag)
			m_wndTree.Expand(hItem, TVE_EXPAND);
	}
	MessageBox(FilePath);*/

	HTREEITEM hItem, hpItem, hti;

	CString FilePath, FileName, dbstr[6];
	if(TakeDirDialog(FilePath) == 0)
	{

		int i,j;
		FileName = FilePath;
		for(i = FilePath.GetLength() - 1; i >= 0; i--)
			if(FilePath.GetAt(i) == '\\')
				break;
		if(i >= 0)
		{
			i++;
			for(j = 0; i < FilePath.GetLength(); j++, i++)
				FileName.SetAt(j, FilePath.GetAt(i));
			FileName.SetAt(j, '\0');
		}


		hItem = m_wndTree.GetSelectedItem();
		if(hItem == NULL)
			hItem = m_wndTree.GetRootItem();
		hpItem = m_wndTree.GetParentItem(hItem);

		if(m_SelectFlag == 1)
		{
			if(SelectDlg.DoModal() == IDOK)
			{
				if(m_NewFlag)                         //新建同级节点
				{
					hti = m_wndTree.InsertItem(FileName, hpItem);
					m_wndTree.SetItemImage(hti, 0, 0);

					dbstr[0] = FileName;
					dbstr[1].Empty();
//					dbstr[2].Format("%s", "2004-10-05");
					COleDateTime oleDt = COleDateTime::GetCurrentTime();
					dbstr[2]=oleDt.Format("%y年%m月%d日");
					if(hti != NULL)
					{
						if(hpItem != NULL)
							dbstr[3].Format("%ld", m_wndTree.GetItemData(hpItem));
						else
							dbstr[3].Empty();
					}
					dbstr[4].Format("%s", "1");//0为文件
				}
				else                                  //新建子节点
				{
					/*如父节点原来无子节点,则更改父节点状态并修改数据库*/
					if((hItem != NULL) && (!m_wndTree.ItemHasChildren(hItem)))
					{
						m_wndTree.SetItemImage(hItem, 0, 0);
						CString strvalue = "select * from CodeTable where CodeID = ", strdata;
						long lvalue = m_wndTree.GetItemData(hItem);
						strdata.Format("%ld", lvalue);
						strvalue = strvalue + "" + strdata +"";

						m_DbObject.GetValue(strvalue);
						m_DbObject.SetData("IsDir", "1");
						m_DbObject.Update();
					}


					hti = m_wndTree.InsertItem(FileName, hItem);
					m_wndTree.SetItemImage(hti, 0, 0);
				//	m_wndTree.SetItemData(hti, m_wndTree.GetItemData());
					dbstr[0] = FileName;
					dbstr[1].Empty();


//					dbstr[2].Format("%s", "2004-10-05");
					COleDateTime oleDt = COleDateTime::GetCurrentTime();
					dbstr[2]=oleDt.Format("%y年%m月%d日");
					if(hti != NULL)
						dbstr[3].Format("%ld", m_wndTree.GetItemData(hItem));
					dbstr[4].Format("%s", "1");//0为文件
				}

				m_DbObject.AddRecord(dbstr);

				_variant_t vtemp;
				vtemp = m_DbObject.m_pRecordset->GetCollect("CodeID");
				m_wndTree.SetItemData(hti, long(vtemp));

				BrowseDir(FilePath, m_wndTree, hti);
				if(!m_NewFlag)
					m_wndTree.Expand(hItem, TVE_EXPAND);
				CString ts = "成功导入" + FilePath + "下所有文件";
				MessageBox(ts, "源码利器");
			}
		}
		else
		{
			if(m_NewFlag)                         //新建同级节点
			{
				hti = m_wndTree.InsertItem(FileName, hpItem);
				m_wndTree.SetItemImage(hti, 0, 0);

				dbstr[0] = FileName;
				dbstr[1].Empty();
//				dbstr[2].Format("%s", "2004-10-05");
				COleDateTime oleDt = COleDateTime::GetCurrentTime();
				dbstr[2]=oleDt.Format("%y年%m月%d日");
				if(hti != NULL)
				{
					if(hpItem != NULL)
						dbstr[3].Format("%ld", m_wndTree.GetItemData(hpItem));
					else
						dbstr[3].Empty();
				}
				dbstr[4].Format("%s", "1");//0为文件
			}
			else                                  //新建子节点
			{
				/*如父节点原来无子节点,则更改父节点状态并修改数据库*/
				if((hItem != NULL) && (!m_wndTree.ItemHasChildren(hItem)))
				{
					m_wndTree.SetItemImage(hItem, 0, 0);
					CString strvalue = "select * from CodeTable where CodeID = ", strdata;
					long lvalue = m_wndTree.GetItemData(hItem);
					strdata.Format("%ld", lvalue);
					strvalue = strvalue + "" + strdata +"";

					m_DbObject.GetValue(strvalue);
					m_DbObject.SetData("IsDir", "1");
					m_DbObject.Update();
				}

				hti = m_wndTree.InsertItem(FileName, hItem);
				m_wndTree.SetItemImage(hti, 0, 0);
			//	m_wndTree.SetItemData(hti, m_wndTree.GetItemData());
				dbstr[0] = FileName;
				dbstr[1].Empty();
//				dbstr[2].Format("%s", "2004-10-05");
				COleDateTime oleDt = COleDateTime::GetCurrentTime();
				dbstr[2]=oleDt.Format("%y年%m月%d日");
				if(hti != NULL)
					dbstr[3].Format("%ld", m_wndTree.GetItemData(hItem));
				dbstr[4].Format("%s", "1");//0为文件
			}

			m_DbObject.AddRecord(dbstr);

			_variant_t vtemp;
			vtemp = m_DbObject.m_pRecordset->GetCollect("CodeID");
			m_wndTree.SetItemData(hti, long(vtemp));

			BrowseDir(FilePath, m_wndTree, hti);
			if(!m_NewFlag)
				m_wndTree.Expand(hItem, TVE_EXPAND);
			CString ts = "成功导入" + FilePath + "下所有文件";
			MessageBox(ts, "源码利器");
			
		}
	}

	return 0;
}

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

	CCodeManagerView *icrEditView = (CCodeManagerView *)GetActiveView();
	CRichEditCtrl &SynCtrl = icrEditView->GetRichEditCtrl();

	CWnd *pWnd = GetFocus();
	if(pWnd->m_hWnd != SynCtrl.m_hWnd)
	{
		pWnd->SendMessage(WM_CUT, 0, 0);
		return;
	}
	
	CHARRANGE cr;
	SynCtrl.GetSel( cr ); 

	icrEditView->GetRichEditCtrl().Cut();  

	if(cr.cpMax != cr.cpMin)
	{
		icrEditView->ReCalcCursorPostion();
	}
	else
	{
		SCROLLINFO si;
		si.cbSize = sizeof(si);
		icrEditView->GetScrollInfo(SB_HORZ, &si);
		icrEditView->m_nHorzMaxOld = si.nMax;
	}
}

void CMainFrame::OnEditundo() 
{
	// TODO: Add your command handler code here
	GetFocus()->SendMessage(EM_UNDO, 0, 0);
}

void CMainFrame::OnViewdo() 
{
	// TODO: Add your command handler code here
	GetFocus()->SendMessage(EM_REDO, 0, 0);
}

void CMainFrame::OnEditcopy() 
{
	// TODO: Add your command handler code here
	CCodeManagerView *icrEditView = (CCodeManagerView *)GetActiveView();
	CRichEditCtrl &edit = icrEditView->GetRichEditCtrl();

	CWnd *pWnd = GetFocus();
	if(pWnd->m_hWnd != edit.m_hWnd)
	{
		pWnd->SendMessage(WM_COPY, 0, 0);
	}
	else
	{
		edit.Copy();
	}
}

void CMainFrame::OnEditpaste() 
{
	// TODO: Add your command handler code here
	char * buffer;
	if(!OpenClipboard())
		return;	

	buffer = (char*)::GetClipboardData(CF_TEXT);
	CloseClipboard(); 
	CString str = buffer;

	CCodeManagerView *icrEditView = (CCodeManagerView *)GetActiveView();
	CRichEditCtrl &edit = icrEditView->GetRichEditCtrl();

	CWnd *pWnd = GetFocus();
	if(pWnd->m_hWnd!=edit.m_hWnd)
	{
		pWnd->SendMessage(WM_PASTE, 0, 0);
		return;

⌨️ 快捷键说明

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