Aggiungendo il gestore pulsante Esegui

È necessario aggiungere una funzione del gestore per il pulsante Esegui creata nel file di risorse di dialogo.

Per creare un gestore di pulsante Esegui

Per creare il gestore, è necessario utilizzare le seguenti classi di modelli Consumer OLE DB:

Ognuna di queste classi corrisponde a un oggetto COM nel provider.

Aggiungere il codice riportato di seguito. In questo codice del gestore, l'oggetto CCommand accetta una classe CProvider come parametro di template. Questo parametro rappresenta le associazioni utilizzate dal provider per accedere ai dati.

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

public static void CTestProvDlg::OnRun()
{
   CCommandlt;CAccessor <CProvider> > tabella;
   CDataSource fonte;
   CSession sessione;

Se (fonte.Open("MyProvider.MyProvider.1", null)! = S_OK)
      ritorno;

Se (sessione.Open(source)! = S_OK)
      ritorno;

Se (table.Aperto (sessione, _T("c:\\public\\testprf2\\gloo.txt"))! = S_OK)
      ritorno;

mentre (table.MoveNext () = = S_OK)
   {
      m_ctlString1.AddString(table.szCommand);
      m_ctlString2.AddString(table.szText);
   }
}

Il gestore utilizza le tre chiamate Open , qui sotto, che corrispondono a tre oggetti COM nel provider. Esso individua il provider utilizzando il ProgID. Si può ottenere il ProgID dal Registro di sistema o guardando nel provider rgs file ( MyProvider.rgs per il provider semplice mostrato nell'implementazione di un Provider semplice di sola lettura). Il provider si apre un file di testo denominato gloo.txt , che contiene un numero pari di stringhe separate da trasporto restituisce. Open passa il percorso del file al provider come stringa al provider.

   se (fonte.Open("MyProvider.MyProvider.1", null)! = S_OK)
      ritorno;

Se (sessione.Open(source)! = S_OK)
      ritorno;

Se (table.Aperto (sessione, _T("c:\\public\\testprf2\\gloo.txt"))! = S_OK)
      ritorno

Per recuperare i dati, il gestore chiama table.MoveNext , come illustrato di seguito. Quando ci sono più righe, il provider restituisce DB_S_ENDOFROWSET e termina il ciclo. L'istruzione di controllo del ciclo confronta il valore restituito S_OK. Se il codice utilizzato la macro SUCCEEDED , il ciclo si termina non perché DB_S_ENDOFROWSET è considerato un codice di ritorno di successo.

   mentre (table.MoveNext () = = S_OK)
   {
      m_ctlString1.AddString(table.szCommand);
      m_ctlString2.AddString(table.szText);
   }

Il consumatore è ora pronto per il test con il provider semplice (realizzato nell'implementazione di un Provider semplice di sola lettura).

L' argomento successivo viene illustrato come modificare il consumatore per l'utilizzo con un avanzato fornitore che implementa l'interfaccia IRowsetLocate.

Torna a implementazione di un Consumer di Template DB OLE

Index