|
And if you look here and then in the C# forum, the lounge has given him more feedback than the C# forum
He who laughs last is a bit on the slow side
|
|
|
|
|
I apologize for this. I saw the text only after I hit the "send" button (too overwhelmed with the issue I guess )
Strange enough, though, I got an answer from this thread instead of the "C#" one!
|
|
|
|
|
ghost1207 wrote: Strange enough, though, I got an answer from this thread instead of the "C#" one!
Maybe, but you've irritated people in the process.
|
|
|
|
|
Hallo,
I want to export the objects on a powerpoint-slide via office automation.
I use Visual Studio .NET 2005 an Office 2003. When I try the funktion
Shape.Export(filename, PowerPoint.PpShapeFormat.ppShapeFormatGIF, width, height, PowerPoint.PpExportMode.ppClipRelativeToSlide);
i get the images, cliparts, etc.. But they don´t have the specified width and height.
The Dimension of the Shapes differs in horizontal and vertical dpi. How can I set correct DPI-sizes and Pixel-sizes?
Thx,
Tobias
|
|
|
|
|
Hi all,
I am wondering if it is possible to determine the size (or number of valid function entries) of a virtual function table using the queried interface pointer.
Say I obtained an interface pointer pIMy via QueryInterface:
pIBase->QueryInterface(&IID_MYINTERFACE, (void**)&pIMy, hr);
I was able to cast the pIMy to vtable pointer pVTable and access each each function's address value with pVTable[0], pVTable[1]..etc. And obviously sizeof(pVTable) returns 4 instead of size of the vtable.
Any ideas how it is possible to determine the size virtual function table?
Thanks in advance,
J.B.
|
|
|
|
|
Perhaps there's a trick that I'm not aware of, but I don't think you can get the size of the vtable in runtime.
If you create an interface that inherits from IUnknown, the first 12 bytes of the vtable will be the addresses of QueryInterface(), AddRef() and Release(). The next four bytes will contain the address of the first method for the new (child) interface and so on until the vtable is complete. The bytes following the vtable will contain data for the member variables, there's no "padding" or "termination" of the vtable, hence I don't think you can tell the size of it in runtime. Perhaps there's a trick when building for 'Debug', but I don't think so.
On the other hand: why do you want to know the size of the vtable?
Perhaps there's another solution for your problem.
--
Roger
"It's supposed to be hard, otherwise anybody could do it!" - selfquote
"No one remembers a coward!" - Jan Elfström 1998 "...but everyone remembers an idiot!" - my lawyer 2005 when heard of Jan's saying above
|
|
|
|
|
Hi,
Can some one redirect me to some link where I can find what a DLL problem is.
Thanks:
Rakesh
|
|
|
|
|
|
|
I work as a trader I have been programming some matlab functions in order to use them within my excel woorksheets. I am working with Matlab 7 and Excel 2003 SP2 professional edition.
The problem comes when creating the matlab generated object in VBasic
.....
If proyJuanclass Is Nothing Then
Set proyJuanclass = CreateObject("proyJuan.proyJuanclass.1_0")
End If
.....
Then a fatal error ocurs and excel launches a dialog
Microsoft Visual C++ Runtime Library
Runtime Error!
Program: C:\ARCHIV-1\MICROS-2\OFFICE11\EXCEL.EXE
abnormal program termination
when clicking the "OK" button excel closes
I have used the "mxltool" that comes with the Matlab Excel Builder
I have executed the MCRInstaller
I have registered the dll generated by the mxltool
|
|
|
|
|
Hi,
Am a Intermediete C# programmer,
can you please guide me which will be the best book to buy?
thanks and regards
Karam C Bose
Thanks in advance
|
|
|
|
|
sorry!
i should have posted this in C# forum.!!!
|
|
|
|
|
In additional you can see articles that are on the codeproject about C#
|
|
|
|
|
Hi All,
Description of Problem:-
I have a interface pointer to some custom dual interface. I am creating a object of _variant_t class like "_variant_t vtSample(pICustom);".
vtSample is created and assigned value as 'TRUE' and its vt as VT_BOOL.
It should have been VT_DISPATCH instead of VT_BOOL and value as some memory address.
Can anyone explain the above behavior?
Thanks...
Suraj Gupta
|
|
|
|
|
Can you show some code ?
Gupta Suraj wrote: I am creating a object of _variant_t class like "_variant_t vtSample(pICustom);".
vtSample is created and assigned value as 'TRUE' and its vt as VT_BOOL.
Why you are assigning its vt as VT_BOOL .
Gupta Suraj wrote: It should have been VT_DISPATCH instead of VT_BOOL and value as some memory address.
Can anyone explain the above behavior?
I'm confused here to understand your problem. Can you explain in detail.
|
|
|
|
|
Hi Prasad,
Thanks for the reply...
I am not explicitly assigning vt to VT_BOOL.
"_variant_t vtSample(pICustom);"
The above statement is causing vtSample object to be instantiated and initialized with vt= VT_BOOL and its value as 'TRUE'.
As pICustom is dual interface pointer so value of vtSample should be pointer to v-table and its vt should be VT_DISPATCH not VT_BOOL.
I don't know why it so?
Am I able to make you understand the problem?
Thanks...
Suraj Gupta
|
|
|
|
|
Gupta Suraj wrote: "_variant_t vtSample(pICustom);"
Can you show code snippet, how you are using this interface? There is no way it should assign vt as VT_BOOL , unless pICustom is BOOL .
While debugging, you can step through the contructor of _variant_t , see which contructor is been called.
|
|
|
|
|
Thanks Prasad...
Actually,pICustom is a smart pointer. So when "vtSample(pICustom)" is executed, bool operator of _com_ptr template class is called. What I think is that the best matching constructor of _variant_t class is that which takes a bool as its paramter.So first bool operator of _com_ptr is called to convert the parameter to bool.
We don't have a overloaded constructor of _variant_t class which takes smart pointer as its parameter.
Please send your comment on this. Am i thinking in right direction?
Suraj.
Suraj Gupta
|
|
|
|
|
Try explicitly casting your object to an IDispatch pointer, for example (IDispatch *)pICustom. That should eliminate falling through to bool.
|
|
|
|
|
Thanks...It worked...
Suraj Gupta
|
|
|
|
|
Though, you had a solution to your problem;
Gupta Suraj wrote: bool operator of _com_ptr template class is called.
Which operator bool you are talking about ? In fact, it should return you custom interface type.
Its implementated like this,
operator T*() {
return p;
So I feel, it should return interface pointer.
Can you show how you have declared this interface ?
Gupta Suraj wrote: We don't have a overloaded constructor of _variant_t class which takes smart pointer as its parameter.
No, CComPtr , will be called for operator T* . Which returns appropriate interface pointer.
i.e. consider this declaration,
CComPtr<IMyInterface> pMy;
_variant_t f(pMy);
Here,in second statement pMy->Operator T* will be get called first. Which returns IMyInterface* .
So, it will set for VT_IDISPATCH automatically.
You dont even need to cast it.
|
|
|
|
|
Hi Prasad,
Here is code snippet of my application..
// Smart pointer(SampleObjects::ISampleSetDualPtr) typedef declarations
_COM_SMARTPTR_TYPEDEF(ISampleSetDual, __uuidof(ISampleSetDual));
// Smart pointer typedef declarations
SampleObjects::ISampleSetDualPtr pMutipleValues = SampleObjects::ISampleSetDualPtr )propertyPtr->Value;
_variant_t vtMultiValue(pMutipleValues);//This statement first causes bool operator of template class _com_ptr_t being called and then overloaded constructor of _variant_t class being called which takes bool as input parameter.
template<typename _iiid=""> class _com_ptr_t
{
......
......
......
operator bool() const throw()
{
return m_pInterface != NULL;
}
}
Please let me know your input on this.
Thanks,
Suraj
Suraj Gupta
|
|
|
|
|
Now I got your point.
I was in assumption, you are using CComPtr , where as you are using _com_ptr_t . Both are having different implementations.
Gupta Suraj wrote: _variant_t vtMultiValue(pMutipleValues);//This statement first causes bool operator of template class _com_ptr_t being called and then overloaded constructor of _variant_t class being called which takes bool as input parameter
Here, compiler looks for mathcing constructor of _variant_t . It doesn't find one with given smart pointer. _com_ptr_t is overloaded for operator bool() . Hence, there is match betn constructor with bool parameter of _variant_t and passed smart pointer variable.
Type casting as said in one of previous replies is one solution.
Or you can Use
_variant_t vtMultiValue(pMutipleValues.GetInterfacePtr()); to resolve ambiguity .
|
|
|
|
|
Thank you...
Solution you suggested works.
I thought another solution that works in this case is
_variant_t vtMultiValue(pMutipleValues, true);
You have being a great help.
Suraj
Suraj Gupta
|
|
|
|
|
Gupta Suraj wrote: _variant_t vtMultiValue(pMutipleValues, true);
Yes, that's becuase, as in previous case compiler was picking _variant_t( bool bSrc ) throw( ) version of constructor as match.
But, in this case that wont happen because of extra parameter provided(That resolved ambuguity in one way).
And compiler matches this construcor _variant_t( IDispatch* pDispSrc, bool fAddRef = true ) throw( ); To do that match, first parameter is typecasted with IDispatch* .
|
|
|
|