Należy upewnić się, czy rzeczywiście konieczne jest powiązanie kolumny dynamiczną. Może ich potrzeby, ponieważ:
Aby wdrożyć powiązań kolumn dynamiczne:
statyczne ATLCOLUMNINFO * _GetColumnInfo (void * pThis, ULONG * pcCols)
W poniższym przykładzie pokazano funkcję _GetColumnInfo.
/ / Check Flaga właściwości zakładki, jeżeli jest ustawiony, ustawić zero
/ Liczba porządkowa wpis w kolumnie mapę z informacji o zakładkach.
CAgentRowset * pRowset = CAgentRowset ** pThis;
CComQIPtrlt; IRowsetInfo, & IID_IRowsetInfo > spRowsetProps = pRowset;
CDBPropIDSet set(DBPROPSET_ROWSET);
zestaw.AddPropertyID(DBPROP_BOOKMARKS);
DBPROPSET * pPropSet = NULL;
ULONG ulPropSet = 0;
HRESULT hr;
Jeżeli (spRowsetProps)
hr = spRowsetProps - > GetProperties (1 & zestaw & ulPropSet i pPropSet);
Jeżeli (pPropSet)
{
CComVariant var = pPropSet - > rgProperties [0] .vvalue;
CoTaskMemFree (pPropSet - > rgProperties);
CoTaskMemFree(pPropSet);
Jeżeli (SUCCEEDED(hr) & & (var.boolVal == VARIANT_TRUE))
{
ADD_COLUMN_ENTRY_EX (ulCols, OLESTR("Bookmark"), 0, sizeof(DWORD), DBTYPE_BYTES, 0, 0, GUID_NULL, CAgentMan, dwBookmark, DBCOLUMNFLAGS_ISBOOKMARK)
ulCols ++;
}
}
/ / Następne ustawienie innych kolumn.
ADD_COLUMN_ENTRY (ulCols, OLESTR("Command"), 1, 256, typem DBTYPE_STR, 0xFF, 0xFF, GUID_NULL, CAgentMan, szCommand)
ulCols ++;
ADD_COLUMN_ENTRY (ulCols, OLESTR("Text"), 2, 256, typem DBTYPE_STR, 0xFF, 0xFF, GUID_NULL, CAgentMan, szText)
ulCols ++;
ADD_COLUMN_ENTRY (ulCols, OLESTR("Command2"), 3, 256, typem DBTYPE_STR, 0xFF, 0xFF, GUID_NULL, CAgentMan, szCommand2)
ulCols ++;
ADD_COLUMN_ENTRY (ulCols, OLESTR("Text2"), 4, 256, typem DBTYPE_STR, 0xFF, 0xFF, GUID_NULL, CAgentMan, szText2)
ulCols ++;
Jeżeli (pcCols! = NULL)
* pcCols = ulCols;
Zwraca _rgColumns;
}