Stellen Sie sicher, dass Sie dynamische Spaltenbindung wirklich brauchen. Sie können es da brauchen:
Dynamische Spaltenbindung implementiert:
statische ATLCOLUMNINFO * _GetColumnInfo (Void * pThis, ULONG * PcCols)
Das folgende Beispiel zeigt eine _GetColumnInfo -Funktion.
/ / Check Eigenschaftsflag für Lesezeichen, wenn festgelegt ist, legen Sie die NULL
/ / ordinal Eintrag in der Spalte mit den Lesezeichen-Informationen anzeigen.
CAgentRowset * pRowset = (CAgentRowset **) pThis;
CComQIPtrlt; IRowsetInfo & IID_IRowsetInfo > SpRowsetProps = pRowset;
CDBPropIDSet set(DBPROPSET_ROWSET);
festgelegt.AddPropertyID(DBPROP_BOOKMARKS);
DBPROPSET * pPropSet = NULL;
ULONG UlPropSet = 0;
HRESULT hr;
Wenn (SpRowsetProps)
HR = SpRowsetProps - > GetProperties (1, Satz, & UlPropSet & pPropSet);
Wenn (pPropSet)
{
CComVariant Var = pPropSet - > RgProperties [0] .vvalue;
CoTaskMemFree (pPropSet - > RgProperties);
CoTaskMemFree(pPropSet);
Wenn (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 ++;
}
}
/ / Weiter die anderen Spalten eingerichtet.
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, szCommand2)
UlCols ++;
ADD_COLUMN_ENTRY (UlCols, OLESTR("Text2"), 4, 256, DBTYPE_STR, 0xFF, 0xFF, GUID_NULL, CAgentMan, szText2)
UlCols ++;
Wenn (PcCols! = NULL)
* PcCols = UlCols;
Rückkehr _rgColumns;
}