// 間取りオブジェクトへ接続
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 10: // group
BSTR szGroupName = NULL;
double dXCenter = 0.0;
double dYCenter = 0.0;
double dWidth = 0.0;
double dHeight = 0.0;
int nGroupKind = 0;
BSTR szRoomsetName = NULL;
BSTR szBunruiName = NULL;
BSTR szRoomsetComment = NULL;
double dViewRatio;
if (m_MadoriDoc->GetGroup(&szGroupName, &dXCenter, &dYCenter, &dWidth, &dHeight,
(long *)&nGroupKind, &szRoomsetName, &szBunruiName, &szRoomsetComment,
&dViewRatio))
{
CString strGroupName, strRoomsetName, strBunruiName, strRoomsetComment;
if (szGroupName) AfxBSTR2CString(&strGroupName, szGroupName);
if (szRoomsetName) AfxBSTR2CString(&strRoomsetName, szRoomsetName);
if (szBunruiName) AfxBSTR2CString(&strBunruiName, szBunruiName);
if (szRoomsetComment) AfxBSTR2CString(&strRoomsetComment, szRoomsetComment);
strMsg.Format(_T("Group Name[%s] xPos[%lf] yPos[%lf] width[%lf] height[%lf]\r\n")
_T("Kind[%d] RoomsetName[%s] BunruiName[%s] RoomsetComment[%s] dViewRatio[%lf]"),
strGroupName, dXCenter, dYCenter, dWidth, dHeight,
nGroupKind, strRoomsetName, strBunruiName, strRoomsetComment, dViewRatio);
AfxMessageBox(strMsg);
if (szGroupName) {
::SysFreeString(szGroupName);
}
if (szRoomsetName) {
::SysFreeString(szRoomsetName);
}
if (szBunruiName) {
::SysFreeString(szBunruiName);
}
if (szRoomsetComment) {
::SysFreeString(szRoomsetComment);
}
}
else {
AfxMessageBox(L"データの取得に失敗");
}
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 10: // group
doc.Select();
var data = eval(doc.GetGroupJS());
alert("Result[" + data.Result + "]");
var msg = " GroupName[" + data.GroupName + "]\r\n";
msg += " XCenter[" + data.XCenter + "]\r\n";
msg += " YCenter[" + data.YCenter + "]\r\n";
msg += " Width[" + data.Width + "]\r\n";
msg += " Height[" + data.Height + "]\r\n";
msg += " GroupKind[" + data.GroupKind + "]\r\n";
msg += " RoomsetName[" + data.RoomsetName + "]\r\n";
msg += " BunruiName[" + data.BunruiName + "]\r\n";
msg += " RoomsetComment[" + data.RoomsetComment + "]\r\n";
msg += " ViewRatio[" + data.ViewRatio + "]\r\n";
alert(msg);
doc.Unselect();
break;
}
lRet = doc.GetNextObject();
}