CWnd::GetDSCCursor
更新 : 2007 年 11 月
データ ソース コントロールの DataSource、UserName、Password、および SQL プロパティで (二次的に) 定義されているカーソルへのポインタを取得するには、このメンバ関数を呼び出します。
IUnknown * GetDSCCursor( );
戻り値
データ ソース コントロールによって定義されているカーソルへのポインタ。ポインタの AddRef 呼び出しは、MFC が行います。
解説
戻り値のポインタは、データ連結グリッド コントロールのような複雑なデータ連結コントロールの ICursor プロパティを設定するために使用します。データ ソース コントロールは、連結コントロールがカーソルを最初に要求するまで、アクティブになることはありません。GetDSCCursor の呼び出しによる明示的な方法、または MFC バインディング マネージャによる暗黙的な方法によって、アクティブになります。どちらの場合でも、GetDSCCursor を呼び出して、戻り値の IUnknown へのポインタで Release を呼び出すことによって、データ ソース コントロールを強制的にアクティブにできます。アクティブになると、データ ソース コントロールはデータ ソースに接続しようと試みます。戻り値のポインタは、次のように使用されます。
使用例
BOOL CMyDlg::OnInitDialog()
{
...
// Find the child controls on the dialog
HRESULT hr = E_FAIL;
CWnd* pDSC = GetDlgItem(IDC_DATASOURCE);
CWnd* pListWnd = GetDlgItem(IDC_DBLIST1);
IUnknown* punkList = pListWnd->GetControlUnknown();
IDBList* pList = NULL;
if (NULL != punkList)
{
hr = punkList->QueryInterface(__uuidof(IDBList), (void**)&pList);
}
if (SUCCEEDED(hr))
{
// Tell the MFC binding manager that we are
// binding DISPID 3 to the data-source control.
pListWnd->BindProperty(0x3, pDSC);
// Tell the listbox which field to expose as its bound column
pList->put_BoundColumn(_T("ContactFirstName"));
// Tell the listbox which cursor and column to populate its list from
pList->put_ListField(_T("ContactFirstName"));
IUnknown* punkCursor = pDSC->GetDSCCursor();
if (NULL != punkCursor)
{
punkCursor->Release();
}
pList->Release();
...
return TRUE;
}
必要条件
ヘッダー : afxwin.h