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

📄 scemf2text.cpp

📁 Source code for EMFexplorer 1.0
💻 CPP
📖 第 1 页 / 共 4 页
字号:
			SCBoundsText(pRec->rclBounds),
			SCRegionDataText((RGNDATA*)pRec->RgnData, pRec->cbRgnData));
		
		return SCExtraLog(sExtra);
	}
	SCPlayRecord();
	return SC_BRK_NOERROR;
}

SC_BRKRESULT CSCEMF2Text::OnEmfEXTSELECTCLIPRGN()
{
	// TRACE0("**EMR_EXTSELECTCLIPRGN\n");
	if (m_bLogRecord)
	{
		EMREXTSELECTCLIPRGN *pRec = (EMREXTSELECTCLIPRGN*)m_pRecord;
		CString sExtra;
		sExtra.Format(_T("%s, %s"),
			SCFormatRgnModeText(pRec->iMode),
			SCRegionDataText((RGNDATA*)pRec->RgnData, pRec->cbRgnData));
		
		return SCExtraLog(sExtra);
	}
	SCPlayRecord();
	return SC_BRK_NOERROR;
}

SC_BRKRESULT CSCEMF2Text::OnEmfBITBLT()
{
	// TRACE0("**EMR_BITBLT\n");
	if (m_bLogRecord)
	{
		EMRBITBLT *pRec = (EMRBITBLT*)m_pRecord;
		CString sExtra;
		sExtra.Format(SC_STRFMT_RCLBOUNDS _T(", ") SC_STRFMT_DEST_CXCY _T(", ") SC_STRFMT_ROP _T(", ") SC_STRFMT_BLTSRC,
			SC_PARAM_RCLBOUNDS(pRec->rclBounds),
			SC_PARAM_DEST_CXCY(pRec),
			SC_PARAM_ROP(pRec->dwRop),
			SC_PARAM_BLTSRC(pRec));

		return SCExtraLog(sExtra);
	}
	SCPlayRecord();
	return SC_BRK_NOERROR;
}

SC_BRKRESULT CSCEMF2Text::OnEmfSTRETCHBLT()
{
	// TRACE0("**EMR_STRETCHBLT\n");
	if (m_bLogRecord)
	{
		EMRSTRETCHBLT *pRec = (EMRSTRETCHBLT*)m_pRecord;
		CString sExtra;
		sExtra.Format(SC_STRFMT_RCLBOUNDS _T(", ") SC_STRFMT_DEST_CXCY _T(", ") SC_STRFMT_ROP _T(", ") SC_STRFMT_SBLTSRC,
			SC_PARAM_RCLBOUNDS(pRec->rclBounds),
			SC_PARAM_DEST_CXCY(pRec),
			SC_PARAM_ROP(pRec->dwRop),
			SC_PARAM_SBLTSRC(pRec));

		return SCExtraLog(sExtra);
	}
	SCPlayRecord();
	return SC_BRK_NOERROR;
}

SC_BRKRESULT CSCEMF2Text::OnEmfMASKBLT()
{
	// TRACE0("**EMR_MASKBLT\n");
	if (m_bLogRecord)
	{
		EMRMASKBLT *pRec = (EMRMASKBLT*)m_pRecord;
		CString sExtra;
		sExtra.Format(SC_STRFMT_RCLBOUNDS _T(", ") SC_STRFMT_DEST_CXCY _T(", ") SC_STRFMT_ROP _T(", ") SC_STRFMT_BLTSRC _T(", ") SC_STRFMT_BMPMASK,
			SC_PARAM_RCLBOUNDS(pRec->rclBounds),
			SC_PARAM_DEST_CXCY(pRec),
			SC_PARAM_ROP(pRec->dwRop),
			SC_PARAM_BLTSRC(pRec),
			SC_PARAM_BMPMASK(pRec));

		return SCExtraLog(sExtra);
	}
	SCPlayRecord();
	return SC_BRK_NOERROR;
}

SC_BRKRESULT CSCEMF2Text::OnEmfPLGBLT()
{
	// TRACE0("**EMR_PLGBLT\n");
	if (m_bLogRecord)
	{
		EMRPLGBLT *pRec = (EMRPLGBLT*)m_pRecord;
		CString sExtra;
		sExtra.Format(SC_STRFMT_RCLBOUNDS _T(", Dest[") SC_STRFMT_TRIPOINT _T("], ")  SC_STRFMT_BLTSRC	_T(", ") SC_STRFMT_BMPSRC _T(", ") SC_STRFMT_BMPMASK,
			SC_PARAM_RCLBOUNDS(pRec->rclBounds),
			SC_PARAM_TRIPOINT(pRec->aptlDest),
			SC_PARAM_BLTSRC(pRec),
			SC_PARAM_BMPSRC(pRec),
			SC_PARAM_BMPMASK(pRec));

		return SCExtraLog(sExtra);
	}
	SCPlayRecord();
	return SC_BRK_NOERROR;
}

SC_BRKRESULT CSCEMF2Text::OnEmfSETDIBITSTODEVICE()
{
	// TRACE0("**EMR_SETDIBITSTODEVICE\n");
	if (m_bLogRecord)
	{
		EMRSETDIBITSTODEVICE *pRec = (EMRSETDIBITSTODEVICE*)m_pRecord;

		CString sBmiText = _T("");
		if (pRec->offBmiSrc)
			sBmiText = SCBmiText((BITMAPINFOHEADER *)((BYTE*)pRec + pRec->offBmiSrc));
		
		CString sExtra;
		sExtra.Format(SC_STRFMT_RCLBOUNDS _T(", Dest[x:%d, y:%d], Scans[start:%d, num:%d], ") SC_STRFMT_SETBITSSRC _T(" BmiHeader[%s]"),
			SC_PARAM_RCLBOUNDS(pRec->rclBounds),

			pRec->xDest,
			pRec->yDest,

			pRec->iStartScan,
			pRec->cScans,

			SC_PARAM_SETBITSSRC(pRec),

			sBmiText
			);

		return SCExtraLog(sExtra);
	}
	SCPlayRecord();
	return SC_BRK_NOERROR;
}

SC_BRKRESULT CSCEMF2Text::OnEmfSTRETCHDIBITS()
{
	// TRACE0("**EMR_STRETCHDIBITS\n");
	EMRSTRETCHDIBITS *pRec = (EMRSTRETCHDIBITS*)m_pRecord;
	if (m_bLogRecord)
	{
		CString sBmiText = _T("");
		if (pRec->offBmiSrc)
			sBmiText = SCBmiText((BITMAPINFOHEADER *)((BYTE*)pRec + pRec->offBmiSrc));

		CString sExtra;
		sExtra.Format(SC_STRFMT_RCLBOUNDS _T(", ") SC_STRFMT_DEST_CXCY _T(", ") SC_STRFMT_ROP _T(", ") SC_STRFMT_SETBITSSRC _T(" BmiHeader[%s]"),
			SC_PARAM_RCLBOUNDS(pRec->rclBounds),
			SC_PARAM_DEST_CXCY(pRec),
			SC_PARAM_ROP(pRec->dwRop),
			SC_PARAM_SETBITSSRC(pRec),

			sBmiText
			
			);

		return SCExtraLog(sExtra);
	}
	SCPlayRecord();
	return SC_BRK_NOERROR;
}

SC_BRKRESULT CSCEMF2Text::OnEmfEXTCREATEFONTINDIRECTW()
{
	// TRACE0("**EMR_EXTCREATEFONTINDIRECTW\n");
	EMREXTCREATEFONTINDIRECTW *pRec = (EMREXTCREATEFONTINDIRECTW*)m_pRecord;
	if (m_bLogRecord)
	{
		CString strVendor;
		strVendor.Format(_T("0x%08X"), *(DWORD*)pRec->elfw.elfVendorId);

		CString strLogStyle;
		if (pRec->elfw.elfLogFont.lfWeight>=FW_BOLD)
			strLogStyle += _T("Bold | ");
		if (pRec->elfw.elfLogFont.lfItalic)
			strLogStyle += _T("Italic | ");
		if (pRec->elfw.elfLogFont.lfUnderline)
			strLogStyle += _T("Underlined | ");
		if (pRec->elfw.elfLogFont.lfStrikeOut)
			strLogStyle += _T("StrikeOut | ");
		if (!strLogStyle.IsEmpty())
			strLogStyle = strLogStyle.Left(strLogStyle.GetLength()-3);

		CString sExtra;
		// extra info about height and width
		sExtra.Format(_T("ihFont(%d) ELF[name(%ls) style(%ls) vendor(%s)] LOG[face(%ls), style(%s), charset(%d),family(%d),precision(%d), height(%d), width(%d)]"),
			pRec->ihFont,
			pRec->elfw.elfFullName,pRec->elfw.elfStyle, strVendor,
			pRec->elfw.elfLogFont.lfFaceName,
			strLogStyle,
			pRec->elfw.elfLogFont.lfCharSet,
			pRec->elfw.elfLogFont.lfPitchAndFamily,pRec->elfw.elfLogFont.lfOutPrecision,
			pRec->elfw.elfLogFont.lfHeight,
			pRec->elfw.elfLogFont.lfWidth);

		return SCExtraLog(sExtra);
	}
	SCPlayRecord();
	return SC_BRK_NOERROR;
}

SC_BRKRESULT CSCEMF2Text::OnEmfEXTTEXTOUTA()
{
	// TRACE0("**EMR_EXTTEXTOUTA\n");
	if (m_bLogRecord)
	{
		CString sExtra = STFormatEmrTextA(
			((EMREXTTEXTOUTA*)m_pRecord)->emrtext,
			(EMREXTTEXTOUTA*)m_pRecord);
		return SCExtraLog(sExtra);
	}
	SCPlayRecord();
	return SC_BRK_NOERROR;
}

SC_BRKRESULT CSCEMF2Text::OnEmfEXTTEXTOUTW()
{
	// TRACE0("**EMR_EXTTEXTOUTW\n");
	if (m_bLogRecord)
	{
		CString sExtra = STFormatEmrTextW((
			(EMREXTTEXTOUTW*)m_pRecord)->emrtext,
			(EMREXTTEXTOUTW*)m_pRecord);
		return SCExtraLog(sExtra);
	}
	SCPlayRecord();
	return SC_BRK_NOERROR;
}

SC_BRKRESULT CSCEMF2Text::OnEmfPOLYGON16()
{
	// TRACE0("**EMR_POLYGON16\n");
	if (m_bLogRecord)
	{
		CString sExtra = SCFormatEmrPolygonS((EMRPOLYGON16*)m_pRecord);
		return SCExtraLog(sExtra);
	}
	SCPlayRecord();
	return SC_BRK_NOERROR;
}

SC_BRKRESULT CSCEMF2Text::OnEmfPOLYPOLYGON16()
{
	// TRACE0("**EMR_POLYPOLYGON16\n");
	if (m_bLogRecord)
	{
		CString sExtra = SCFormatEmrPolyPolygonS((EMRPOLYPOLYGON16*)m_pRecord);
		return SCExtraLog(sExtra);
	}
	SCPlayRecord();
	return SC_BRK_NOERROR;
}

SC_BRKRESULT CSCEMF2Text::OnEmfPOLYDRAW16()
{
	// TRACE0("**EMR_POLYDRAW16\n");
	if (m_bLogRecord)
	{
		EMRPOLYDRAW16 *pRec = (EMRPOLYDRAW16*)m_pRecord;
		CString sExtra = SCPolygonTextS(pRec->rclBounds, pRec->apts, pRec->cpts);
		return SCExtraLog(sExtra);
	}
	SCPlayRecord();
	return SC_BRK_NOERROR;
}

SC_BRKRESULT CSCEMF2Text::OnEmfCREATEMONOBRUSH()
{
	// TRACE0("**EMR_CREATEMONOBRUSH\n");
	if (m_bLogRecord)
	{
		EMRCREATEMONOBRUSH *pRec = (EMRCREATEMONOBRUSH*)m_pRecord;
		CString sExtra;
		sExtra.Format(_T("ihBrush(%d), ") SC_STRFMT_BMPDIB,
			pRec->ihBrush,
			SC_PARAM_BMPDIB(pRec));

		return SCExtraLog(sExtra);
	}
	SCPlayRecord();
	return SC_BRK_NOERROR;
}

SC_BRKRESULT CSCEMF2Text::OnEmfCREATEDIBPATTERNBRUSHPT()
{
	// TRACE0("**EMR_CREATEDIBPATTERNBRUSHPT\n");
	if (m_bLogRecord)
	{
		EMRCREATEDIBPATTERNBRUSHPT *pRec = (EMRCREATEDIBPATTERNBRUSHPT*)m_pRecord;
		CString sExtra;
		sExtra.Format(_T("ihBrush(%d), ") SC_STRFMT_BMPDIB,
			pRec->ihBrush,
			SC_PARAM_BMPDIB(pRec));

		return SCExtraLog(sExtra);
	}
	SCPlayRecord();
	return SC_BRK_NOERROR;
}

SC_BRKRESULT CSCEMF2Text::OnEmfEXTCREATEPEN()
{
	// TRACE0("**EMR_EXTCREATEPEN\n");
	SCPlayRecord();
	if (m_bLogRecord)
	{
		EMREXTCREATEPEN *pRec = (EMREXTCREATEPEN*)m_pRecord;
		CString sExtra;

#ifdef SC_LOG_RAWDATA_ONLY
// display raw data
			sExtra.Format(_T(ihPen(%d), style(%d=%s), width(%d), color(0x%08X), brush[style:%d=%s, hatch:0x%08X, user_style_entries:%d], BMP[offBmi:%d, Bmi:%d, offBits:%d, Bits:%d]"),
				pRec->ihPen, 
				pRec->elp.elpPenStyle, SCPenStyleText(pRec->elp.elpPenStyle), 
				pRec->elp.elpWidth, 
				pRec->elp.elpColor, 
				pRec->elp.elpBrushStyle, SCBrushStyleText(pRec->elp.elpBrushStyle),
				pRec->elp.elpHatch, 
				pRec->elp.elpNumEntries,
				pRec->offBmi, pRec->cbBmi, pRec->offBits, pRec->cbBits);
#else
// display interpreted data
		// Pen style
		CString strPenStyle;
		strPenStyle.Format(_T("style(%d=%s"),
			pRec->elp.elpPenStyle, SCPenStyleText(pRec->elp.elpPenStyle));

		if (PS_USERSTYLE==pRec->elp.elpPenStyle)
		{// custom dashes
			CString strDashes;
			strDashes.Format(_T(", Dashes[entries:%d])"), pRec->elp.elpNumEntries);
			strPenStyle += strDashes;
		} else
			strPenStyle += _T(")");

		sExtra.Format(_T("ihPen(%d), %s, width(%d), %s"),
				pRec->ihPen, 
				strPenStyle, 
				pRec->elp.elpWidth, 
				SCExtLogpenBrushStyleText(pRec));
#endif
		
		return SCExtraLog(sExtra);
	}
	return SC_BRK_NOERROR;
}

SC_BRKRESULT CSCEMF2Text::OnEmfPOLYTEXTOUTA()
{
	// TRACE0("**EMR_POLYTEXTOUTA\n");
	if (m_bLogRecord)
	{
		EMRPOLYTEXTOUTA *pRec = (EMRPOLYTEXTOUTA*)m_pRecord;
		CString sExtra;
		sExtra.Format(SC_STRFMT_RCLBOUNDS _T(", ") SC_STRFMT_TXTFORM _T(", nbStrings:%d"),
			SC_PARAM_RCLBOUNDS(pRec->rclBounds),
			SC_PARAM_TXTFORM(pRec),
			pRec->cStrings);
		
		return SCExtraLog(sExtra);
	}
	SCPlayRecord();
	return SC_BRK_NOERROR;
}

SC_BRKRESULT CSCEMF2Text::OnEmfSETICMMODE()
{
	// TRACE0("**EMR_SETICMMODE\n");
	if (m_bLogRecord)
	{
		CString sExtra = SCFormatICMModeText(((EMRSETICMMODE*)m_pRecord)->iMode);
		return SCExtraLog(sExtra);
	}
	SCPlayRecord();
	return SC_BRK_NOERROR;
}

SC_BRKRESULT CSCEMF2Text::OnEmfCREATECOLORSPACE()
{
	// TRACE0("**EMR_CREATECOLORSPACE\n");
	if (m_bLogRecord)
	{
		CString sExtra;
		sExtra.Format(_T("ihCS(%d), %s"),
			((EMRCREATECOLORSPACE*)m_pRecord)->ihCS,
			SCFormatLogColorSpaceAsTextA(((EMRCREATECOLORSPACE*)m_pRecord)->lcs));

		return SCExtraLog(sExtra);
	}
	SCPlayRecord();
	return SC_BRK_NOERROR;
}

SC_BRKRESULT CSCEMF2Text::OnEmfCREATECOLORSPACEW()
{
	// TRACE0("**EMR_CREATECOLORSPACEW\n");
	if (m_bLogRecord)
	{
		CString sExtra;
		sExtra.Format(_T("ihCS(%d), %s"),
			((EMRCREATECOLORSPACEW*)m_pRecord)->ihCS,
			SCFormatLogColorSpaceAsTextW(((EMRCREATECOLORSPACEW*)m_pRecord)->lcs));

		return SCExtraLog(sExtra);
	}
	SCPlayRecord();
	return SC_BRK_NOERROR;
}


SC_BRKRESULT CSCEMF2Text::OnEmfSETCOLORSPACE()
{
	// TRACE0("**EMR_SETCOLORSPACE\n");
	if (m_bLogRecord)
	{
		CString sExtra;
		sExtra.Format(_T("ihCS(%d)"),
			((EMRSELECTCOLORSPACE*)m_pRecord)->ihCS);

		return SCExtraLog(sExtra);
	}
	SCPlayRecord();
	return SC_BRK_NOERROR;
}

SC_BRKRESULT CSCEMF2Text::OnEmfGLSRECORD()
{
	// TRACE0("**EMR_GLSRECORD\n");
	if (m_bLogRecord)
	{
		CString sExtra;
		sExtra.Format(_T("cbData:%d, Data:0x%08x"),
			((EMRGLSRECORD*)m_pRecord)->cbData,
			((EMRGLSRECORD*)m_pRecord)->Data);

		return SCExtraLog(sExtra);
	}
	SCPlayRecord();
	return SC_BRK_NOERROR;
}

SC_BRKRESULT CSCEMF2Text::OnEmfGLSBOUNDEDRECORD()
{
	// TRACE0("**EMR_GLSBOUNDEDRECORD\n");
	if (m_bLogRecord)
	{
		CString sExtra;
		sExtra.Format(SC_STRFMT_RCLBOUNDS _T(", cbData:%d, Data:0x%08x"),
			SC_PARAM_RCLBOUNDS(((EMRGLSBOUNDEDRECORD*)m_pRecord)->rclBounds),
			((EMRGLSBOUNDEDRECORD*)m_pRecord)->cbData,
			((EMRGLSBOUNDEDRECORD*)m_pRecord)->Data);

		return SCExtraLog(sExtra);
	}
	SCPlayRecord();
	return SC_BRK_NOERROR;
}

⌨️ 快捷键说明

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