Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
 |  |  |
[C++] конченный ламер продолжает рубить... 08.02.02 21:58 Число просмотров: 1148
Автор: + <Mikhail> Статус: Elderman
|
> честно говоря, ничего в этом не понимаю, но надо, надо > :\.... > Поэтому и просил пример... > > > Skoree vsego kogda ty sozdaval control ty dobavi HWND > > propery, i tvoi control based on IPersistXXX type > > interfaces i v etom cluchae VB pytaetsi chitat` HWND > > property kotory invalid potomuchto on not set > (conechno zhe > > HWND eche ne inicializirovan, a kontainer pytaetsia > > ispolzovat etot HWND kotory invalid). Voobchem > otkomentirui > > etu liniu code v header tvoego controla: > > > > // PROP_ENTRY("HWND", DISPID_HWND, CLSID_NULL)
> > ---
> > орёт > > d:\blablabla\mytextboxcontrol.h(148) : error C2440:
> 'initializing' : cannot convert from 'unsigned short [5]'
> to 'const struct _GUID *'
> Types pointed to are unrelated; conversion requires
> reinterpret_cast, C-style cast or function-style cast
> ---
> > и вообще, я прально понимаю (точнее, обезьянничаю с > готового кода), что надысь написать след. конструкцию: > > >
> BEGIN_COM_MAP( MyTextBoxControl )
>
> COM_INTERFACE_ENTRY( IMyTextBoxControl )
> COM_INTERFACE_ENTRY2( IPersist, IPersistStreamInit )
> COM_INTERFACE_ENTRY( IPersistStreamInit )
>
> COM_INTERFACE_ENTRY_IID( __uuidof(IDispatch),
> IMyTextBoxControl )
> COM_INTERFACE_ENTRY_NOINTERFACE( IProvideClassInfo2 )
> COM_INTERFACE_ENTRY_AGGREGATE_BLIND( m_textBox.m_ptr )
> COM_INTERFACE_ENTRY_CHAIN( MyTextBoxControlImpl )
>
> END_COM_MAP()
>
> ---
> > а при описании класса > > > class MyTextBoxControl : public MyTextBoxControlImpl,
> public IPersistStreamInit,
> public SomeMyEventsHandler
> {
> public:
>
> MyTextBoxControl();
> void Constructor();
> void Destructor();
>
> public: // IPersist
>
> HRESULT _stdcall GetClassID( CLSID *pClassID );
>
> public: // IPersistStreamInit
>
> HRESULT _stdcall IsDirty();
> HRESULT _stdcall Load( LPSTREAM pStm );
> HRESULT _stdcall Save( LPSTREAM pStm, BOOL fClearDirty
> );
> HRESULT _stdcall GetSizeMax( ULARGE_INTEGER* pCbSize );
> HRESULT _stdcall InitNew();
>
> ---
> > мож я какой интерфейс недодерживаю/передерживаю?.. ыыы.. > тёмный лес.... > > чесслова, весь вчерашний день искал нормальный хелп/пример > в MSDN, codeguru и т.п... дельного и доступного не > обнаружил...
Strannyi kode kakoi-to. a che ty wizardom ne polzueshsia?
Kak u tebia MyTextBoxControlImpl implementirovan??
Mozhet chto net tak ty namudril v IPersistStreamInit (Load and Save), eto tak?
voobche kin`ka "tvoicontrol.h" i "tvoicontrol.cpp"
Poprobui debagirovat s tracami:
define ati tracy:
#define ATL_TRACE_LEVEL 4
#define ATL_TRACE_CATEGORY 0xFFFFFFFF
i posmotri v debugere chto tam pechataet, i ty uvidish gde neponiatka.
Potom postavish breakpoints o pokovyriasia.
|
|
<programming>
|
[C++] ATL не поможете с контролом? 07.02.02 15:41
Автор: paganoid Статус: Member
|
Киньте , если у кого есть в закромах, ссылку на пример контрола, написанного с исп. ATL, аггрегирущего TextBox...
вродь все написал.. когда в VBA швыряю контрол на форму, сперва идет сообщение "Не удается завершить операцию из-за ошибки 800a88ce".. далее идут ошибки "Неопределенная ошибка".. Контрол так и не кажется..
в ActiveX Control Tester контрол видно нормально...
ыы....
|
 |
[C++] ATL не поможете с контролом? 07.02.02 22:53
Автор: + <Mikhail> Статус: Elderman
|
> > Киньте , если у кого есть в закромах, ссылку на пример > контрола, написанного с исп. ATL, аггрегирущего TextBox... > > вродь все написал.. когда в VBA швыряю контрол на форму, > сперва идет сообщение "Не удается завершить операцию из-за > ошибки 800a88ce".. далее идут ошибки "Неопределенная > ошибка".. Контрол так и не кажется.. > > в ActiveX Control Tester контрол видно нормально... > > ыы.... Skoree vsego kogda ty sozdaval control ty dobavi HWND propery, i tvoi control based on IPersistXXX type interfaces i v etom cluchae VB pytaetsi chitat` HWND property kotory invalid potomuchto on not set (conechno zhe HWND eche ne inicializirovan, a kontainer pytaetsia ispolzovat etot HWND kotory invalid). Voobchem otkomentirui etu liniu code v header tvoego controla:
// PROP_ENTRY("HWND", DISPID_HWND, CLSID_NULL)
---
|
 |  |
[C++] конченный ламер продолжает рубить... 08.02.02 10:47
Автор: paganoid Статус: Member Отредактировано 08.02.02 10:48 Количество правок: 1
|
честно говоря, ничего в этом не понимаю, но надо, надо :\....
Поэтому и просил пример...
> Skoree vsego kogda ty sozdaval control ty dobavi HWND > propery, i tvoi control based on IPersistXXX type > interfaces i v etom cluchae VB pytaetsi chitat` HWND > property kotory invalid potomuchto on not set (conechno zhe > HWND eche ne inicializirovan, a kontainer pytaetsia > ispolzovat etot HWND kotory invalid). Voobchem otkomentirui > etu liniu code v header tvoego controla: > > // PROP_ENTRY("HWND", DISPID_HWND, CLSID_NULL)
> ---
орёт
d:\blablabla\mytextboxcontrol.h(148) : error C2440: 'initializing' : cannot convert from 'unsigned short [5]' to 'const struct _GUID *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
---
и вообще, я прально понимаю (точнее, обезьянничаю с готового кода), что надысь написать след. конструкцию:
BEGIN_COM_MAP( MyTextBoxControl )
COM_INTERFACE_ENTRY( IMyTextBoxControl )
COM_INTERFACE_ENTRY2( IPersist, IPersistStreamInit )
COM_INTERFACE_ENTRY( IPersistStreamInit )
COM_INTERFACE_ENTRY_IID( __uuidof(IDispatch), IMyTextBoxControl )
COM_INTERFACE_ENTRY_NOINTERFACE( IProvideClassInfo2 )
COM_INTERFACE_ENTRY_AGGREGATE_BLIND( m_textBox.m_ptr )
COM_INTERFACE_ENTRY_CHAIN( MyTextBoxControlImpl )
END_COM_MAP()
---
а при описании класса
class MyTextBoxControl : public MyTextBoxControlImpl,
public IPersistStreamInit,
public SomeMyEventsHandler
{
public:
MyTextBoxControl();
void Constructor();
void Destructor();
public: // IPersist
HRESULT _stdcall GetClassID( CLSID *pClassID );
public: // IPersistStreamInit
HRESULT _stdcall IsDirty();
HRESULT _stdcall Load( LPSTREAM pStm );
HRESULT _stdcall Save( LPSTREAM pStm, BOOL fClearDirty );
HRESULT _stdcall GetSizeMax( ULARGE_INTEGER* pCbSize );
HRESULT _stdcall InitNew();
---
мож я какой интерфейс недодерживаю/передерживаю?.. ыыы.. тёмный лес....
чесслова, весь вчерашний день искал нормальный хелп/пример в MSDN, codeguru и т.п... дельного и доступного не обнаружил...
|
 |  |  |
[C++] конченный ламер продолжает рубить... 08.02.02 21:58
Автор: + <Mikhail> Статус: Elderman
|
> честно говоря, ничего в этом не понимаю, но надо, надо > :\.... > Поэтому и просил пример... > > > Skoree vsego kogda ty sozdaval control ty dobavi HWND > > propery, i tvoi control based on IPersistXXX type > > interfaces i v etom cluchae VB pytaetsi chitat` HWND > > property kotory invalid potomuchto on not set > (conechno zhe > > HWND eche ne inicializirovan, a kontainer pytaetsia > > ispolzovat etot HWND kotory invalid). Voobchem > otkomentirui > > etu liniu code v header tvoego controla: > > > > // PROP_ENTRY("HWND", DISPID_HWND, CLSID_NULL)
> > ---
> > орёт > > d:\blablabla\mytextboxcontrol.h(148) : error C2440:
> 'initializing' : cannot convert from 'unsigned short [5]'
> to 'const struct _GUID *'
> Types pointed to are unrelated; conversion requires
> reinterpret_cast, C-style cast or function-style cast
> ---
> > и вообще, я прально понимаю (точнее, обезьянничаю с > готового кода), что надысь написать след. конструкцию: > > >
> BEGIN_COM_MAP( MyTextBoxControl )
>
> COM_INTERFACE_ENTRY( IMyTextBoxControl )
> COM_INTERFACE_ENTRY2( IPersist, IPersistStreamInit )
> COM_INTERFACE_ENTRY( IPersistStreamInit )
>
> COM_INTERFACE_ENTRY_IID( __uuidof(IDispatch),
> IMyTextBoxControl )
> COM_INTERFACE_ENTRY_NOINTERFACE( IProvideClassInfo2 )
> COM_INTERFACE_ENTRY_AGGREGATE_BLIND( m_textBox.m_ptr )
> COM_INTERFACE_ENTRY_CHAIN( MyTextBoxControlImpl )
>
> END_COM_MAP()
>
> ---
> > а при описании класса > > > class MyTextBoxControl : public MyTextBoxControlImpl,
> public IPersistStreamInit,
> public SomeMyEventsHandler
> {
> public:
>
> MyTextBoxControl();
> void Constructor();
> void Destructor();
>
> public: // IPersist
>
> HRESULT _stdcall GetClassID( CLSID *pClassID );
>
> public: // IPersistStreamInit
>
> HRESULT _stdcall IsDirty();
> HRESULT _stdcall Load( LPSTREAM pStm );
> HRESULT _stdcall Save( LPSTREAM pStm, BOOL fClearDirty
> );
> HRESULT _stdcall GetSizeMax( ULARGE_INTEGER* pCbSize );
> HRESULT _stdcall InitNew();
>
> ---
> > мож я какой интерфейс недодерживаю/передерживаю?.. ыыы.. > тёмный лес.... > > чесслова, весь вчерашний день искал нормальный хелп/пример > в MSDN, codeguru и т.п... дельного и доступного не > обнаружил...
Strannyi kode kakoi-to. a che ty wizardom ne polzueshsia?
Kak u tebia MyTextBoxControlImpl implementirovan??
Mozhet chto net tak ty namudril v IPersistStreamInit (Load and Save), eto tak?
voobche kin`ka "tvoicontrol.h" i "tvoicontrol.cpp"
Poprobui debagirovat s tracami:
define ati tracy:
#define ATL_TRACE_LEVEL 4
#define ATL_TRACE_CATEGORY 0xFFFFFFFF
i posmotri v debugere chto tam pechataet, i ty uvidish gde neponiatka.
Potom postavish breakpoints o pokovyriasia.
|
 |  |  |
уточнение выяснилось - это специфика VBA 08.02.02 13:00
Автор: paganoid Статус: Member
|
|
уродский MS... Контрол работает в VB, в ActiveX Control Tester, но не работает в VBA (!)...
|
 |  |  |  |
уточнение выяснилось - это специфика VBA 08.02.02 22:24
Автор: + <Mikhail> Статус: Elderman
|
> уродский MS... Контрол работает в VB, в ActiveX Control > Tester, но не работает в VBA (!)...
Kak eto но не работает в VBA chto ne rabotaet?? podrobnee
|
|
|