&dispparams,NULL,NULL,NULL);
}
//Аналогично для других свойств с одним параметром.
// m_Grid.SetBackColorBkg(GetSysColor(COLOR_3DFACE));
{
DISPID dispid;
WCHAR * name=L"BackColorBkg";
pDisp->GetIDsOfNames(IID_NULL,&name,1,LOCALE_SYSTEM_DEFAULT,&dispid);
DISPPARAMS dispparams;
DISPID mydispid[1] = { DISPID_PROPERTYPUT };
VARIANTARG vararg[1];
dispparams.rgvarg = vararg; // 1-element array
VariantInit(&dispparams.rgvarg[0]);
dispparams.rgvarg[0].vt = VT_UI4; // 32-bit integer
dispparams.rgvarg[0].ulVal = GetSysColor(COLOR_3DFACE);
dispparams.rgdispidNamedArgs = mydispid; // name array
dispparams.cArgs = 1; // total args
dispparams.cNamedArgs = 1; // named args
pDisp->Invoke(dispid, IID_NULL,LOCALE_SYSTEM_DEFAULT,DISPATCH_PROPERTYPUT,
&dispparams,NULL,NULL,NULL);
}
// m_Grid.SetCols(2);
{
DISPID dispid;
WCHAR * name=L"Cols";
pDisp->GetIDsOfNames(IID_NULL,&name,1,LOCALE_SYSTEM_DEFAULT,&dispid);
DISPPARAMS dispparams;
DISPID mydispid[1] = { DISPID_PROPERTYPUT };
VARIANTARG vararg[1];
dispparams.rgvarg = vararg; // 1-element array
VariantInit(&dispparams.rgvarg[0]);
dispparams.rgvarg[0].vt = VT_I2; // 32-bit integer
dispparams.rgvarg[0].iVal = 2;
dispparams.rgdispidNamedArgs = mydispid; // name array
dispparams.cArgs = 1; // total args
dispparams.cNamedArgs = 1; // named args
pDisp->Invoke(dispid, IID_NULL,LOCALE_SYSTEM_DEFAULT,DISPATCH_PROPERTYPUT,
&dispparams,NULL,NULL,NULL);
}
// m_Grid.SetRows(6);
{
DISPID dispid;
WCHAR * name=L"Rows";
pDisp->GetIDsOfNames(IID_NULL,&name,1,LOCALE_SYSTEM_DEFAULT,&dispid);
DISPPARAMS dispparams;
DISPID mydispid[1] = { DISPID_PROPERTYPUT };
VARIANTARG vararg[1];
dispparams.rgvarg = vararg; // 1-element array
VariantInit(&dispparams.rgvarg[0]);
dispparams.rgvarg[0].vt = VT_I2; // 32-bit integer
dispparams.rgvarg[0].iVal = 6;
dispparams.rgdispidNamedArgs = mydispid; // name array
dispparams.cArgs = 1; // total args
dispparams.cNamedArgs = 1; // named args
pDisp->Invoke(dispid, IID_NULL,LOCALE_SYSTEM_DEFAULT,DISPATCH_PROPERTYPUT,
&dispparams,NULL,NULL,NULL);
}
9. Изменим свойство с несколькими параметрами. Типы параметров и их количество находим в OLE/COM Object Viewer’е. Их 3 - все они входные (флаг in), два 32 – битных числа и одна строка.
// m_Grid.SetTextMatrix(0,0,"Parameters");
Рис.23
Порядок передачи параметров в метод Invoke должен быть обратным тому, как описано в OLE/COM Object Viewer’е. Вызов аналогичен рассмотренному ранее, поэтому прокомментируем только отличающиеся строки.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.