동적 열 바인딩을 정말 해야 한다는 것을 확인해 라. 때문에 할 수 있습니다.:
동적 열 바인딩을 구현 하려면:
정적 ATLCOLUMNINFO * _GetColumnInfo (void * pThis, ULONG * pcCols)
다음 예제에서는 _GetColumnInfo 함수를 보여 줍니다.
/ / 그것은 설정, 0을 설정 하는 경우 책갈피의 속성 플래그를 확인
/ / 책갈피 정보 열의 서 수 항목 지도.
CAgentRowset * pRowset (CAgentRowset *) pThis; =
CComQIPtrlt; IRowsetInfo, & IID_IRowsetInfo > spRowsetProps pRowset; =
CDBPropIDSet set(DBPROPSET_ROWSET);
설정 합니다.AddPropertyID(DBPROP_BOOKMARKS);
DBPROPSET * pPropSet = NULL;
ULONG ulPropSet = 0;
HRESULT hr;
경우 (spRowsetProps)
hr = spRowsetProps-> GetProperties (1, 및 세트 & ulPropSet, 및 pPropSet);
경우 (pPropSet)
{
CComVariant var = pPropSet-> rgProperties [0].vvalue;
CoTaskMemFree (pPropSet-> rgProperties);
CoTaskMemFree(pPropSet);
경우 (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 + +;
}
}
/ / 다음 다른 열을 설정 합니다.
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 + +;
경우 (pcCols! = NULL)
* pcCols = ulCols;
반환 _rgColumns;
}