В "Шаг 364 - Встраивание DBGRID в класс вида" описано как можно встраивать GRID в вид. Если за основу взять этот шаг то изменений будет совсем мало. Сначала надо добавить описание класса CADODC и CDataGrid. Подключаем описание классов:
#include "adodc.h"
#include "_recordset.h"
#include "datagrid.h"
#define IDC_DBGRID1 111111
#define IDC_ADO 2222222
class CTestViewGridView : public CView
{
Описываем объекты.
class CTestViewGridView : public CView
{
protected: // create from serialization only
CTestViewGridView();
DECLARE_DYNCREATE(CTestViewGridView)
// Attributes
public:
CTestViewGridDoc* GetDocument();
C_Recordset cr;
CAdodc ca;
private:
CDataGrid cmg;
Обратите внимание на строку CDataGrid cmg; я просто заменил класс для переменной cmg так как все остальное не меняется. Ну и теперь инициализироваться ADODC и передать указатель набора записей в GRID.
////////////////////////////////////
// CTestViewGridView message handlers
int CTestViewGridView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
CRect rc;
GetClientRect(&rc);
cmg.Create(_T("STATIC"), "Hi", WS_CHILD | WS_VISIBLE, CRect(0, 0, 400, 200), this, IDC_DBGRID1);
cmg.ShowWindow(SW_SHOW);
ca.Create(_T("STATIC"), "Hi", WS_CHILD | WS_VISIBLE, CRect(0, 0, 400, 200), this, IDC_ADO);
ca.SetConnectionString("PROVIDER=MSDASQL.1;dsn=Auto;uid=sa;pwd=123;database=auto;");
ca.SetRecordSource("SELECT * FROM car");
ca.Refresh();
cr=ca.GetRecordset();
ca.SetConnectionString("PROVIDER=MSDASQL.1;dsn=Auto;uid=sa;pwd=123;database=auto;");
ca.SetRecordSource("SELECT * FROM car");
ca.Refresh();
cr=ca.GetRecordset();
long i=cr.GetRecordCount();
cmg.SetRefDataSource(cr);
cmg.UpdateData();
return 0;
}
Запускам и смотрим.

Вывод из всех этих шагов напрашивается сам по себе. Что VC так же удачно и просто использует OCX как и VB.