powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / c++ builder: com-объекты.
1 сообщений из 1, страница 1 из 1
c++ builder: com-объекты.
    #33853967
13th_apostle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
создал activex-библиотеку, добавил com-объект; ide сгенерила треубемые файлы, один из к-рых вызывает вопросы: bdequery.h
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
#ifndef BDEQueryH
#define BDEQueryH

#define ATL_APARTMENT_THREADED

#include "BDEAccess_TLB.h"
#include "DBTables.hpp"                                                          //добавлено мной
#include <extctrls.hpp>                                                          //добавлено мной


/////////////////////////////////////////////////////////////////////////////
// TBDEQueryImpl     Implements IBDEQuery, default interface of BDEQuery
// ThreadingModel : tmApartment
// Dual Interface : FALSE
// Event Support  : FALSE
// Default ProgID : Project1.BDEQuery
// Description    : 
/////////////////////////////////////////////////////////////////////////////
class ATL_NO_VTABLE TBDEQueryImpl :
  public CComObjectRootEx<CComSingleThreadModel>,
  public CComCoClass<TBDEQueryImpl, &CLSID_BDEQuery>,
  public IBDEQuery
{
public:
  TBDEQueryImpl()
  {
	myQ = new TQuery((TComponent*)NULL);             //добавлено мной
  }

  // Data used when registering Object
  //
  DECLARE_THREADING_MODEL(otApartment);
  DECLARE_PROGID("BDEAccess.BDEQuery");
  DECLARE_DESCRIPTION("");

  // Function invoked to (un)register object
  //
  static HRESULT WINAPI UpdateRegistry(BOOL bRegister)
  {
    TTypedComServerRegistrarT<TBDEQueryImpl>
    regObj(GetObjectCLSID(), GetProgID(), GetDescription());
    return regObj.UpdateRegistry(bRegister);
  }


BEGIN_COM_MAP(TBDEQueryImpl)
  COM_INTERFACE_ENTRY(IBDEQuery)
END_COM_MAP()

	TQuery* myQ;                                            //добавлено мной
// IBDEQuery
public:

  STDMETHOD(Run(LPSTR ptrQry, LPSTR ptrAllias));
  STDMETHOD(FieldsSize(unsigned* Sizes));
  STDMETHOD(RowCount(unsigned* ptrCount));
  STDMETHOD(GetData(short fieldNum, void* ptrData));
  STDMETHOD(First());
  STDMETHOD(Last());
  STDMETHOD(Next());
  STDMETHOD(Prior());
};

#endif //Unit1H

строки, добавлненные мной вручную, я отметил. все остальное сгенерировано с помощью ide. вот у меня и вопрос: как отделить объявление методов интерфейса и его самого от объявления класса?
я com только начал изучать и получаю проблему, что при использовании интерфейса ibdequery в др. проектах мне требуется включать bdequery.h, чтобы компилятор знал, где искать описание интерфейса ibdequery; в рез-те в довесок он получает объявление tquery, включение dbtables.hpp, extctrls.hpp - как раз то, что я бы хотел скрыть внутри com-объекта.
писать заголовочный файл-заглушку для интерфейса, к-рый будет только объявлять методы интерфейса?
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / c++ builder: com-объекты.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]