GetZone メソッド

構文

BOOL GetZone(VARIANT * pvVertex,
    int * pnZoneLevel, BSTR * pszZoneName, BOOL * pbDispZoneName, BOOL * pbDispZoneSize,
    double * pnStringPosX, double * pnStringPosY, double * pdCapacitySeats,
    unsigned char * pbyLineStyle, unsigned char * pbyLineWidth, unsigned long * pocLineColor,
    unsigned char * pbyHatchStyle, unsigned char * pbyHatchWidth,
    unsigned long * pocForeColor, unsigned long * pocBackColor, BOOL * pbBackTrans,
    BSTR * pszFontName, double * pdFontSize, int * pnFontAttr,
    double * pdFontAngle, unsigned long * pocFontColor

(JavaScript用) string GetZoneJS();

カレントのオブジェクトが、ゾーンの場合、その情報を取得します。

パラメータ

pvVertex
(x, y) 頂点列。型は VT_R8 | VT_ARRAY にしてください。vVertex.parrayは不要になったら、SafeArrayDestroyで解放してください。
pnZoneLevel
ゾーンの種類。次のいずれかの値です。
pszZoneName
ゾーン名。
pbDispZoneName
ゾーン名を表示するかどうか。0で表示しません。1で表示します。
pbDispZoneSize
ゾーンのサイズを表示するかどうか。0で表示しません。1で表示します。
pdStringPosX
ゾーン名の表示位置X座標。
pdStringPosY
ゾーン名の表示位置Y座標。
pdCapacitySeats
収容人数。
pbyLineStyle
線の種類。次のいずれかの値です。
pbyLineWidth
線の幅。次のいずれかの値です。
pocLineColor
線の色。
pbyHatchStyle
模様の種類。次のいずれかの値です。
pocForeColor
前景色。
pocBackColor
背景色。
pbBackTrans
背景を透明にするかどうか。0で不透明、1で透明。
pszFontName
部屋名、部屋サイズの表示フォント名。
pdFontSize
部屋名、部屋サイズの表示フォントサイズ。
pbyFontAttr
部屋名、部屋サイズの表示フォント属性。次のフラグの任意の組み合わせです。
pdFontAngle
部屋名、部屋サイズの表示角度。
pocFontColor
部屋名、部屋サイズの表示色。

戻り値

ゾーンの情報を取得できた場合 0 以外を返します。できなかった場合は 0 を返します。

使用例

// 間取りオブジェクトへ接続
CMadoriDoc * m_MadoriDoc = new CMadoriDoc();
CLSIDFromProgID (L"MyHomeDesignerMadori.MadoriDoc", &clsid);
GetActiveObject (clsid, NULL, &pUnk);
pUnk->QueryInterface (IID_IDispatch, (void**)(&pDisp));
m_MadoriDoc->AttachDispatch (pDisp);

// 列挙する
long lRet = m_MadoriDoc->GetTopObject();
if (lRet == 0) AfxMessageBox(_T("何もない"));
	
while (lRet) {
	ULONG uType = m_MadoriDoc->GetCurrentObjectType();
	short nLayer = m_MadoriDoc->GetCurrentObjectLayer();
	CString strMsg;
	strMsg.Format(_T("[%X]type[%d]layer[%d]"), lRet, uType, nLayer);
	AfxMessageBox(strMsg);
	switch (uType) {
	case 51:
	{
	VARIANT vVertex;
	vVertex.vt = VT_R8 | VT_ARRAY;
	vVertex.parray = NULL;
	INT nZoneLevel = 0;
	BSTR szZoneName = NULL;
	INT bDispZoneName = 0;
	INT bDispZoneSize = 0;
	DOUBLE dStringPosX = 0.0;
	DOUBLE dStringPosY = 0.0;
	DOUBLE dCapacitySeats;
	BYTE byLineStyle;
	BYTE byLineWidth;
	OLE_COLOR ocLineColor;
	BYTE byHatchStyle;
	BYTE byHatchWidth;
	OLE_COLOR ocForeColor;
	OLE_COLOR ocBackColor;
	BOOL bBackTrans;
	BSTR szFontName = NULL;
	DOUBLE dFontSize;
	INT nFontAttr;
	DOUBLE dFontAngle;
	OLE_COLOR ocFontColor;
	BOOL bRet = m_MadoriDoc->GetZone(&vVertex,
		(long *)&nZoneLevel,
		&szZoneName,
		(long *)&bDispZoneName,
		(long *)&bDispZoneSize,
		&dStringPosX,
		&dStringPosY,
		&dCapacitySeats,
		&byLineStyle,
		&byLineWidth,
		&ocLineColor,
		&byHatchStyle,
		&byHatchWidth,
		&ocForeColor,
		&ocBackColor,
		(long *)&bBackTrans,
		&szFontName,
		&dFontSize,
		(long *)&nFontAttr,
		&dFontAngle,
		&ocFontColor);
	CString strMsg, strZoneName, strFontName;
	AfxBSTR2CString(&strZoneName, szZoneName);
	strMsg.Format(_T("Zone level[%d]name[%s]disp[%u][%u] StringPos[%lf, %lf] CapacitySeats[%lf]")
		_T("Line style[%u]Width[%u]Color[%ld] Hatch style[%u] width[%u] color[%ld][%ld]")
		_T("BackTrans[%u] Font name[%s]size[%u]attr[%d] angle[%lf] color[%ld] "),
			nZoneLevel, szZoneName, bDispZoneName, bDispZoneSize, dStringPosX, dStringPosY,
			dCapacitySeats, byLineStyle, byLineWidth, ocLineColor, byHatchStyle, byHatchWidth,
			ocForeColor, ocBackColor, bBackTrans,szFontName, dFontSize, nFontAttr, dFontAngle,
			ocFontColor);
	AfxMessageBox(strMsg);
	ULONG uVertex = 0;
	if (vVertex.parray) {
		uVertex = vVertex.parray->rgsabound[0].cElements;
	}
	if (uVertex > 0) {
		double * pVar;
		SafeArrayAccessData(vVertex.parray, (void**)&pVar);
		for (ULONG u = 0; u < uVertex; u += 2) {
			strMsg.Format(_T("Vertex %u[%lf,%lf]"), u / 2, pVar[u], pVar[u + 1]);
			AfxMessageBox(strMsg);
		}
		SafeArrayUnaccessData(vVertex.parray);
	}
	if (vVertex.parray) SafeArrayDestroy(vVertex.parray);
	}
		break;
		default:
			break;
	}
	lRet = m_MadoriDoc->GetNextObject();
}

// JavaScript sample
var doc = new CMadoriDoc();
var lRet = doc.GetTopObject();

while (lRet) {
	var uType = doc.GetCurrentObjectType();
	alert(uType);
	switch (uType) {
		case 51: // zone
			doc.Select();
			var data = eval(doc.GetZoneJS());
			alert("Result[" + data.Result + "]");
			alert(data.Vertex.length);
			for (var i = 0 ; i < data.Vertex.length ; i++) {
				alert("Vertex:[" + data.Vertex[i] + "]");
			}
			var msg = " ZoneLevel[" + data.ZoneLevel + "]\r\n";
			msg += " ZoneName[" + data.ZoneName + "]\r\n";
			msg += " DispZoneName[" + data.DispZoneName + "]\r\n";
			msg += " DispZoneSize[" + data.DispZoneSize + "]\r\n";
			msg += " StringPosX[" + data.StringPosX + "]\r\n";
			msg += " StringPosY[" + data.StringPosY + "]\r\n";
			msg += " CapacitySeats[" + data.CapacitySeats + "]\r\n";
			msg += " LineStyle[" + data.LineStyle + "]\r\n";
			msg += " LineWidth[" + data.LineWidth + "]\r\n";
			msg += " LineColor[" + data.LineColor + "]\r\n";
			msg += " HatchStyle[" + data.HatchStyle + "]\r\n";
			msg += " HatchWidth[" + data.HatchWidth + "]\r\n";
			msg += " ForeColor[" + data.ForeColor + "]\r\n";
			msg += " BackColor[" + data.BackColor + "]\r\n";
			msg += " BackTrans[" + data.BackTrans + "]\r\n";
			msg += " FontName[" + data.FontName + "]\r\n";
			msg += " FontSize[" + data.FontSize + "]\r\n";
			msg += " FontAttr[" + data.FontAttr + "]\r\n";
			msg += " FontAngle[" + data.FontAngle + "]\r\n";
			msg += " FontColor[" + data.FontColor + "]\r\n";
			alert(msg);
			doc.Unselect();
			break;
	}
	lRet = doc.GetNextObject();
}
ページのTOPへ戻る