В "Шаг 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.