Agregar el controlador de botón Ejecutar

Debe agregar una función de controlador para el botón ejecutar creado en el archivo de recursos de diálogo.

Para crear un controlador de botón Ejecutar

Para crear el controlador, debe utilizar las siguientes clases de plantilla de consumidor OLE DB:

Cada una de estas clases corresponde a un objeto COM en el proveedor.

Agregue el código que se muestra a continuación. En este código de controlador, el objeto de CCommand toma una clase de CProvider como un parámetro de plantilla. Este parámetro representa los enlaces utilizados por el proveedor de acceso a los datos.

///////////////////////////////////////////////////////////////////////
/ / TestProvDlg.cpp

void CTestProvDlg::OnRun()
{
   CCommandlt;CAccessor <CProvider> > tabla;
   Fuente de CDataSource;
   CSession período de sesiones;

Si (fuente.Open("MyProvider.MyProvider.1", NULL)! = S_OK)
      retorno;

Si (período de sesiones.Open(Source)! = S_OK)
      retorno;

Si (tabla.Abierto (período de sesiones, _T("c:\\public\\testprf2\\gloo.txt"))! = S_OK)
      retorno;

mientras (tabla.MoveNext() == S_OK)
   {
      m_ctlString1.addString(Table.szCommand);
      m_ctlString2.addString(Table.szText);
   }
}

El controlador utiliza las tres convocatorias abiertas , que se muestra a continuación, que corresponden a tres objetos COM en el proveedor. Busca el proveedor utilizando su identificador ProgID. Puede obtener el ProgID del registro del sistema o buscándolo en el proveedor de rgs archivo ( MyProvider.rgs para el proveedor simple mostrado en implementar un proveedor sencillo de sólo lectura). El proveedor abre un archivo de texto llamado gloo.txt , que contiene un número par de cadenas separadas por transporte devuelve. Abierto pasa la ruta de acceso del archivo al proveedor como una cadena con el proveedor.

   si (fuente.Open("MyProvider.MyProvider.1", NULL)! = S_OK)
      retorno;

Si (período de sesiones.Open(Source)! = S_OK)
      retorno;

Si (tabla.Abierto (período de sesiones, _T("c:\\public\\testprf2\\gloo.txt"))! = S_OK)
      retorno

Para recuperar los datos, las llamadas del controlador de table.MoveNext , como se muestra a continuación. Cuando no hay más filas, el proveedor devuelve DB_S_ENDOFROWSET y termina el bucle. La sentencia de control de bucle compara el valor devuelto a S_OK. Si el código utiliza la macro de éxito , el bucle no concluiría porque DB_S_ENDOFROWSET es considerado un código de retorno exitoso.

   mientras (tabla.MoveNext() == S_OK)
   {
      m_ctlString1.addString(Table.szCommand);
      m_ctlString2.addString(Table.szText);
   }

El consumidor está listo para probar con el simple proveedor (construido en implementar un proveedor sencillo de sólo lectura).

El tema siguiente se muestra cómo modificar el consumidor para su uso con una mayor proveedor que implementa la interfaz IRowsetLocate.

Volver a implementar un consumidor OLE DB plantilla

Index