📄 docmanagerex.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 + -