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

📄 docmanagerex.cpp

📁 支持在线编辑的活动文档控件
💻 CPP
字号:
// DocManagerEx.cpp : implementation file
//

#include "stdafx.h"
#include "KyOffice.h"
#include "KyOfficeDoc.h"
#include "DocManagerEx.h"
#include "KSFileDialog.h"

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

/////////////////////////////////////////////////////////////////////////////
// CDocManagerEx

CDocManagerEx::CDocManagerEx()
{
}

CDocManagerEx::~CDocManagerEx()
{
}


// Do not edit the following lines, which are needed by ClassWizard.
#if 0
BEGIN_MESSAGE_MAP(CDocManagerEx, CDocManager)
	//{{AFX_MSG_MAP(CDocManagerEx)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()
#endif	// 0

/////////////////////////////////////////////////////////////////////////////
// CDocManagerEx member functions

static void AppendFilterSuffix(CString & filter, OPENFILENAME & ofn, CDocTemplate* pTemplate, CString * pstrDefaultExt)
{
	ASSERT_VALID(pTemplate);
	ASSERT_KINDOF(CDocTemplate, pTemplate);

	CString strFilterExt, strFilterName;
	if (pTemplate->GetDocString(strFilterExt, CDocTemplate::filterExt) &&
	!strFilterExt.IsEmpty() &&
	pTemplate->GetDocString(strFilterName, CDocTemplate::filterName) &&
	!strFilterName.IsEmpty())
	{
		// a file based document template - add to filter list
#ifndef _MAC
		ASSERT(strFilterExt[0] == '.');
#endif
		if (pstrDefaultExt != NULL)
		{
			// set the default extension
#ifndef _MAC
			*pstrDefaultExt = ((LPCTSTR)strFilterExt) + 1; // skip the '.'
#else
			*pstrDefaultExt = strFilterExt;
#endif
			ofn.lpstrDefExt = (LPTSTR)(LPCTSTR)(*pstrDefaultExt);
			ofn.nFilterIndex = ofn.nMaxCustFilter + 1; // 1 based number
		}

		// add to filter
		filter += strFilterName;
		ASSERT(!filter.IsEmpty()); // must have a file type name
		filter += (TCHAR)'\0'; // next string please
#ifndef _MAC
		filter += (TCHAR)'*';
#endif
		filter += strFilterExt;
		filter += (TCHAR)'\0'; // next string please
		ofn.nMaxCustFilter++;
	}
}

BOOL CDocManagerEx::DoPromptFileName(CString& fileName, UINT nIDSTitle, DWORD lFlags, BOOL bOpenFileDialog, CDocTemplate* pTemplate)
{
	CKSFileDialog dlgFile(bOpenFileDialog);

	CWnd * pParentWnd = AfxGetApp()->m_pMainWnd;
	while(pParentWnd && pParentWnd->GetParent())
		pParentWnd = pParentWnd->GetParent();
	dlgFile.SetMyParent(pParentWnd);

	CString title;
	VERIFY(title.LoadString(nIDSTitle));
	
	CString strFilter;
	
	//所有Microsoft Office文档
	CString strFilterName = _T("Microsoft Office 文档"), strFilterExt;
	for(int i=0; i<CKyOfficeDoc::m_arrayDocInfo.GetSize(); i++)
	{
		CString strExt;
		CKyDocInfo * pDocInfo = CKyOfficeDoc::m_arrayDocInfo[i];
		AfxExtractSubString(strExt, pDocInfo->m_strDocStrings, CDocTemplate::filterExt);
		strExt = "*" + strExt;

		if(strFilterExt.Find(strExt) == -1)
		{
			if(!strFilterExt.IsEmpty())
				strFilterExt += _T(";");
			strFilterExt += strExt;
		}
	}
	strFilter += strFilterName;
	strFilter += (TCHAR)'\0';   // next string please
	strFilter += strFilterExt;
	strFilter += (TCHAR)'\0';   // last string
	dlgFile.m_ofn.nMaxCustFilter ++;
	
	//其他的Office文档
	for(i=0; i<CKyOfficeDoc::m_arrayDocInfo.GetSize(); i++)
	{
		CKyDocInfo * pDocInfo = CKyOfficeDoc::m_arrayDocInfo[i];

		CString strFilterName, strFilterExt;
		AfxExtractSubString(strFilterName, pDocInfo->m_strDocStrings, CDocTemplate::docName);
		AfxExtractSubString(strFilterExt, pDocInfo->m_strDocStrings, CDocTemplate::filterExt);
		strFilterExt = "*" + strFilterExt;

		strFilter += strFilterName;
		strFilter += (TCHAR)'\0';   // next string please
		strFilter += strFilterExt;
		strFilter += (TCHAR)'\0';   // last string
		dlgFile.m_ofn.nMaxCustFilter ++;
	}
	
	// append the "*.*" all files filter
	CString allFilter;
	VERIFY(allFilter.LoadString(AFX_IDS_ALLFILTER));
	strFilter += allFilter;
	strFilter += (TCHAR)'\0';   // next string please
	strFilter += _T("*.*");
	strFilter += (TCHAR)'\0';   // last string
	dlgFile.m_ofn.nMaxCustFilter++;

	dlgFile.m_ofn.lpstrFilter = strFilter;
	dlgFile.m_ofn.lpstrTitle = title;
	dlgFile.m_ofn.lpstrFile = fileName.GetBuffer(_MAX_PATH);

	int nResult = dlgFile.DoModal();
	fileName.ReleaseBuffer();
	return nResult == IDOK;
}

⌨️ 快捷键说明

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