Assicurarsi che si ha realmente bisogno associazione dinamica colonna. Si può bisogno perché:
Per implementare l'associazione dinamica colonna:
statico ATLCOLUMNINFO * _GetColumnInfo (void * pThis, ULONG * pcCols)
Nell'esempio seguente viene illustrata una funzione _GetColumnInfo.
/ / Controlla il flag di proprietà per i segnalibri, se è impostato, lo zero
/ / ordinale voce nella colonna map con informazioni del segnalibro.
CAgentRowset * pRowset = (CAgentRowset *) pThis;
CComQIPtrlt; IRowsetInfo, & IID_IRowsetInfo > spRowsetProps = pRowset;
CDBPropIDSet set(DBPROPSET_ROWSET);
impostare.AddPropertyID(DBPROP_BOOKMARKS);
DBPROPSET * pPropSet = NULL;
ULONG ulPropSet = 0;
HRESULT hr;
Se (spRowsetProps)
HR = spRowsetProps - > GetProperties (1, insieme, ulPropSet & pPropSet);
Se (pPropSet)
{
Var CComVariant = pPropSet - > .vvalue rgProperties [0];
CoTaskMemFree (pPropSet - > rgProperties);
CoTaskMemFree(pPropSet);
Se (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 + +;
}
}
/ / Next istituire le altre colonne.
ADD_COLUMN_ENTRY (ulCols, OLESTR("Command"), 1, 256, DBTYPE_STR, 0xFF, 0xFF, GUID_NULL, CAgentMan, szCommand)
ulCols + +;
ADD_COLUMN_ENTRY (ulCols, OLESTR("Text"), 2, 256, DBTYPE_STR, 0xFF, 0xFF, GUID_NULL, CAgentMan, szText)
ulCols + +;
ADD_COLUMN_ENTRY (ulCols, OLESTR("Command2"), 3, 256, DBTYPE_STR, 0xFF, 0xFF, GUID_NULL, CAgentMan, mentre szCommand2)
ulCols + +;
ADD_COLUMN_ENTRY (ulCols, OLESTR("Text2"), 4, 256, DBTYPE_STR, 0xFF, 0xFF, GUID_NULL, CAgentMan, szText2)
ulCols + +;
Se (pcCols! = NULL)
* pcCols = ulCols;
return _rgColumns;
}