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

📄 afxcore.cpp.svn-base

📁 股票软件源码
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
		if (!strFilterExt.IsEmpty())
		{
			ASSERT(strFilterExt[0] == '.');

			LONG lSize = _MAX_PATH * 2;
			LONG lResult = ::RegQueryValue(HKEY_CLASSES_ROOT, strFilterExt,
				strTemp.GetBuffer(lSize), &lSize);
			strTemp.ReleaseBuffer();

			if (lResult != ERROR_SUCCESS || strTemp.IsEmpty() ||
				strTemp == strFileTypeId)
			{
				strTemp.Format(_afxShellNewFmt, (LPCTSTR)strFilterExt);
				AfxDeleteRegKey(strTemp);

				// no association for that suffix
				AfxDeleteRegKey(strFilterExt);
			}
		}
	}
}

void AfxRegisterShellFileTypes(BOOL bCompat)
{
	CString strPathName, strTemp;

	AfxGetModuleShortFileName(AfxGetInstanceHandle(), strPathName);

	CString strOpenCommandLine = strPathName;
	CString strPrintCommandLine = strPathName;
	CString strPrintToCommandLine = strPathName;
	CString strDefaultIconCommandLine = strPathName;

	CString	strMainFrame;
	VERIFY(strMainFrame.LoadString( IDR_MAINFRAME ));

	if (bCompat)
	{
		CString strIconIndex;
		HICON hIcon = ::ExtractIcon(AfxGetInstanceHandle(), strPathName, 1);
		if (hIcon != NULL)
		{
			strIconIndex.Format(_afxIconIndexFmt, 1);
			DestroyIcon(hIcon);
		}
		else
		{
			strIconIndex.Format(_afxIconIndexFmt, DEFAULT_ICON_INDEX);
		}
		strDefaultIconCommandLine += strIconIndex;
	}

	CString strFilterExt, strFileTypeId, strFileTypeName;

	if (AfxExtractSubString( strFileTypeId, strMainFrame,
		CDocTemplate::regFileTypeId) && !strFileTypeId.IsEmpty())
	{
		// enough info to register it
		if (!AfxExtractSubString( strFileTypeName, strMainFrame, 
		   CDocTemplate::regFileTypeName))
			strFileTypeName = strFileTypeId;    // use id name

		ASSERT(strFileTypeId.Find(' ') == -1);  // no spaces allowed

		// first register the type ID of our server
		if (!AfxSetRegKey(strFileTypeId, strFileTypeName))
			return;       // just skip it

		if (bCompat)
		{
			// path\DefaultIcon = path,1
			strTemp.Format(_afxDefaultIconFmt, (LPCTSTR)strFileTypeId);
			if (!AfxSetRegKey(strTemp, strDefaultIconCommandLine))
				return;       // just skip it
		}

		// path\shell\open\command = path filename
		// path\shell\print\command = path /p filename
		// path\shell\printto\command = path /pt filename printer driver port
		strOpenCommandLine += _afxOpenArg;
		if (bCompat)
		{
			strPrintCommandLine += _afxPrintArg;
			strPrintToCommandLine += _afxPrintToArg;
		}

		// path\shell\open\command = path filename
		strTemp.Format(_afxShellOpenFmt, (LPCTSTR)strFileTypeId,
			(LPCTSTR)_afxCommand);
		if (!AfxSetRegKey(strTemp, strOpenCommandLine))
			return;       // just skip it

		if (bCompat)
		{
			// path\shell\print\command = path /p filename
			strTemp.Format(_afxShellPrintFmt, (LPCTSTR)strFileTypeId,
				(LPCTSTR)_afxCommand);
			if (!AfxSetRegKey(strTemp, strPrintCommandLine))
				return;       // just skip it

			// path\shell\printto\command = path /pt filename printer driver port
			strTemp.Format(_afxShellPrintToFmt, (LPCTSTR)strFileTypeId,
				(LPCTSTR)_afxCommand);
			if (!AfxSetRegKey(strTemp, strPrintToCommandLine))
				return;       // just skip it
		}

		AfxExtractSubString( strFilterExt, strMainFrame, CDocTemplate::filterExt);
		if (!strFilterExt.IsEmpty())
		{
			ASSERT(strFilterExt[0] == '.');

			LONG lSize = _MAX_PATH * 2;
			LONG lResult = ::RegQueryValue(HKEY_CLASSES_ROOT, strFilterExt,
				strTemp.GetBuffer(lSize), &lSize);
			strTemp.ReleaseBuffer();

			if (lResult != ERROR_SUCCESS || strTemp.IsEmpty() ||
				strTemp == strFileTypeId)
			{
				// no association for that suffix
				if (!AfxSetRegKey(strFilterExt, strFileTypeId))
					return;

				if (bCompat)
				{
					strTemp.Format(_afxShellNewFmt, (LPCTSTR)strFilterExt);
					(void)AfxSetRegKey(strTemp, _afxShellNewValue, _afxShellNewValueName);
				}
			}
		}
	}
}

#ifdef AFX_CORE3_SEG
#pragma code_seg(AFX_CORE3_SEG)
#endif

AFX_STATIC void AFXAPI _AfxAppendFilterSuffix(CString& filter, OPENFILENAME& ofn,
											  CString *pstrDefaultExt)
{
	CString	strMainFrame;
	VERIFY(strMainFrame.LoadString( IDR_MAINFRAME ));

	CString strFilterExt, strFilterName;
	if (AfxExtractSubString(strFilterExt, strMainFrame, CDocTemplate::filterExt) &&
	 !strFilterExt.IsEmpty() &&
	 AfxExtractSubString(strFilterName, strMainFrame, CDocTemplate::filterName) &&
	 !strFilterName.IsEmpty())
	{
		// a file based document template - add to filter list
		ASSERT(strFilterExt[0] == '.');
		if (pstrDefaultExt != NULL)
		{
			// set the default extension
			*pstrDefaultExt = ((LPCTSTR)strFilterExt) + 1;  // skip the '.'
			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
		filter += (TCHAR)'*';
		filter += strFilterExt;
		filter += (TCHAR)'\0';  // next string please
		ofn.nMaxCustFilter++;
	}
}

BOOL AfxDoPromptFileName(CString& fileName, UINT nIDSTitle, DWORD lFlags, BOOL bOpenFileDialog )
{
	CKSFileDialog dlgFile(bOpenFileDialog);

	CString title;
	VERIFY(title.LoadString(nIDSTitle));

	dlgFile.m_ofn.Flags |= lFlags;
	
	CString strFilter;
	CString strDefault;
	
	_AfxAppendFilterSuffix(strFilter, dlgFile.m_ofn,&strDefault);

	// 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();
	CString	strPath = dlgFile.GetPathName( );
	return nResult == IDOK;
}

BOOL AfxDoSelectDirectory( CString & strSrc, HWND hWnd )
{
/*	The Old Version */
/*
	BROWSEINFO bi;
	char szWorkDir[MAX_PATH+1]	=	"";
	LPITEMIDLIST piidlRoot;
	SHGetSpecialFolderLocation(hWnd, CSIDL_DRIVES, &piidlRoot);
	ZeroMemory(&bi, sizeof(BROWSEINFO));
	bi.hwndOwner = hWnd;
	bi.pidlRoot = piidlRoot;
	bi.pszDisplayName = szWorkDir;
	CString	strTitle;
	strTitle.LoadString( IDS_SELECT_DIRECTORY );
	if( GetSystemMetrics(SM_DBCSENABLED) )
	{
		bi.lpszTitle = strTitle.GetBuffer(strTitle.GetLength()+1);
	}
	bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT;
	LPITEMIDLIST	piidlTarget = SHBrowseForFolder(&bi);
	if( piidlTarget )
	{
		::SHGetPathFromIDList( piidlTarget, szWorkDir ) ;
		strSrc		=	szWorkDir;
		::CoTaskMemFree( piidlTarget );
		return TRUE;
	}
	return FALSE;
*/
	/* The New Version Using CPathDialog */
	CString strCaption;
	CString strTitle;
	strCaption.LoadString( IDS_SELECT_DIRECTORY );
	strTitle.LoadString( IDS_SELECT_DIRECTORY );

	CPathDialog dlg(strCaption, strTitle, strSrc);

	if(dlg.DoModal()==IDOK
		&& CPathDialog::MakeSurePathExists(dlg.GetPathName())==0 )
	{
		strSrc	=	dlg.GetPathName();
		return TRUE;
	}
	return FALSE;
}

CString	AfxGetStrategyFileExt( )
{
	CString	strMainFrame;
	strMainFrame.LoadString( IDR_MAINFRAME );
	CString strExt;
	VERIFY( AfxExtractSubString( strExt, strMainFrame,CDocTemplate::filterExt) );
	ASSERT( !strExt.IsEmpty() && strExt[0] == '.');
	return strExt;
}

CString	AfxGetApplicationName( )
{
	CString	strMainFrame;
	strMainFrame.LoadString( IDR_MAINFRAME );
	CString strName;
	VERIFY( AfxExtractSubString( strName, strMainFrame,CDocTemplate::windowTitle) );
	return strName;
}

CString AfxGetStockIndexReportTip( )
{
	CString strResult;

	CString strSHTipFmt, strSZTipFmt;
	strSHTipFmt.LoadString( IDS_MAINFRAME_SHINDEXTIP );
	strSZTipFmt.LoadString( IDS_MAINFRAME_SZINDEXTIP );

	double dDevided = 100000000;
#ifdef CLKLAN_ENGLISH_US
	dDevided = 1000000000;
#endif

	CStockInfo infoMain, infoMainSZN;
	double dDiff;
	CString strSH, strSZ;
	if( AfxGetStockContainer().GetStockInfo( STKLIB_CODE_MAIN, &infoMain )
		&& infoMain.GetDiff(&dDiff, infoMain.m_datetech ,1) )
		strSH.Format( strSHTipFmt, infoMain.m_fClose, dDiff, infoMain.m_fAmount/dDevided );
	if( AfxGetStockContainer().GetStockInfo( STKLIB_CODE_MAINSZN, &infoMainSZN )
		&& infoMainSZN.GetDiff(&dDiff, infoMainSZN.m_datetech,1) )
		strSZ.Format( strSZTipFmt, infoMainSZN.m_fClose, dDiff, infoMainSZN.m_fAmount/dDevided );

	if( strSH.IsEmpty() && strSZ.IsEmpty() )
		return AfxGetApplicationName();
	
	strResult = strSH + "  " + strSZ;
	return strResult;
}

#ifdef AFX_CORE2_SEG
#pragma code_seg(AFX_CORE2_SEG)
#endif

#ifdef AFX_TERM_SEG
#pragma code_seg(AFX_TERM_SEG)
#endif

#ifdef AFX_INIT_SEG
#pragma code_seg(AFX_INIT_SEG)
#endif

/////////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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