|
I am trying to implement an ATL based .EXE server , with Connection Point Support
I am trying to Call a handler in the client with two variables
BSTR fileName
VARIANT result (intended to be a UINT)
The first variable is successfully passed to the client
while the VARIANT is not getting passed properly . it points to VT_NULL in my client
Code from my CoClass
STDMETHODIMP CMySrvr::OpenModel(BSTR FileName)<br />
{<br />
<br />
_bstr_t str(FileName);<br />
bool res = mgr.OpenModel((string)str);<br />
<br />
VARIANT result ;<br />
result.vt= VT_UINT ;<br />
if(res)<br />
result.uintVal=0x01;<br />
else<br />
result.uintVal=0x00;<br />
<br />
Fire_XmlOpenResponse(FileName,result); <br />
<br />
return S_OK;<br />
}
Here is the IDE generated code for Fire_XmlOpenResponse
HRESULT Fire_XmlOpenResponse(BSTR fileName, VARIANT result)<br />
{<br />
CComVariant varResult;<br />
T* pT = static_cast<T*>(this);<br />
int nConnectionIndex;<br />
CComVariant* pvars = new CComVariant[2];<br />
int nConnections = m_vec.GetSize();<br />
<br />
for (nConnectionIndex = 0; nConnectionIndex < nConnections; nConnectionIndex++)<br />
{<br />
pT->Lock();<br />
CComPtr<IUnknown> sp = m_vec.GetAt(nConnectionIndex);<br />
pT->Unlock();<br />
IDispatch* pDispatch = reinterpret_cast<IDispatch*>(sp.p);<br />
if (pDispatch != NULL)<br />
{<br />
VariantClear(&varResult);<br />
pvars[1] = fileName;<br />
pvars[0] = &result;<br />
DISPPARAMS disp = { pvars, NULL, 2, 0 };<br />
pDispatch->Invoke(0x2, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, &varResult, NULL, NULL);<br />
}<br />
}<br />
delete[] pvars;<br />
return varResult.scode;<br />
<br />
} IDL definition of the above
dispinterface _IEACEepromSrvrEvents<br />
{<br />
properties:<br />
methods:<br />
[id(1), helpstring("method Event1")] HRESULT Event1();<br />
[id(2), helpstring("method XmlOpenResponse")] HRESULT XmlOpenResponse([in] BSTR fileName , [in] VARIANT result);<br />
};
Here is my client code
client .h file
static _ATL_FUNC_INFO dataInfo = {CC_STDCALL, VT_EMPTY, 0, 0};<br />
static _ATL_FUNC_INFO xmlOpenInfo = { CC_STDCALL, VT_EMPTY,2,{VT_BSTR , VT_UINT}};<br />
<br />
class CEacEepromClient : public IDispEventImpl<0,CEacEepromClient ,&DIID__IEACEepromSrvrEvents,&LIBID_EEPROMSERVERLib,1,0><br />
{<br />
public:<br />
void Use1();<br />
CEacEepromClient();<br />
virtual ~CEacEepromClient();<br />
<br />
BEGIN_SINK_MAP(CEacEepromClient)<br />
SINK_ENTRY_INFO(0,DIID__IEACEepromSrvrEvents,1,HandlerEvent1,&dataInfo)<br />
SINK_ENTRY_INFO(0,DIID__IEACEepromSrvrEvents,2,HandleXmlFileOpen,&xmlOpenInfo)<br />
END_SINK_MAP()<br />
HRESULT __stdcall HandlerEvent1();<br />
HRESULT __stdcall HandleXmlFileOpen(BSTR fileName , VARIANT result);<br />
protected :<br />
<br />
IEACEepromSrvrPtr m_srvr;<br />
IUnknownPtr iPtr ;<br />
<br />
<br />
};
Handler code in the client.cpp file
STDMETHODIMP CEACEepromSrvr::OpenXmlModel(BSTR xmlFileName)<br />
{<br />
<br />
_bstr_t str(xmlFileName);<br />
bool res = mgr.OpenModel((string)str);<br />
<br />
<br />
VARIANT result ;<br />
result.vt= VT_UINT ;<br />
if(res)<br />
result.uintVal=0x01;<br />
else<br />
result.uintVal=0x00;<br />
<br />
Fire_XmlOpenResponse(xmlFileName,result);<br />
<br />
<br />
return S_OK;<br />
}
Please help
|
|
|
|
|
Wrong last parameter in line
<br />
static _ATL_FUNC_INFO xmlOpenInfo = { CC_STDCALL, VT_EMPTY,2,{VT_BSTR , VT_UINT}};<br />
should be VT_VARIANT instead of VT_UINT.
Professional C++ libraries for getting images from any TWAIN or DirectShow compatible device on www.neatcpp.com
|
|
|
|
|
Can anybody advise me a right forum where i can discuss the questions about neural networks and OCR???
|
|
|
|
|
Hi,
I'm trying to create a balloon tooltip window that has a close button.
Like this one (taken from MSDN)[^]
I've tried to add the TTS_CLOSE style, but it didn't change anything...
How do i create this close button?
Thanks in advance!
Koo
|
|
|
|
|
Hi,
I've been trying for some time to establish reliable serial comms for a 4-port system, i.e. with the two regular COM1 and COM2 on the motherboard and with a dual PCI serial card (COM3 and COM4). The serial class I have works fine with COMs 1 and 2, but I can only read from COMs 3 and 4, not write. Other applications seem to work fine with all the ports, so it's not a hardware issue. Is there something special I need to do when dealing with COMs on a PCI card? (I am using Win2000 on a Celeron 1.2GHz)
Many Thanks,
Karl
|
|
|
|
|
Hello,
How can I detect the border sizes of an MFC dialog? I want to draw something on the dialog bar. First I resize the dialog to some run-time detected size. Then I want to re-position and redraw some controls inside accordingly. The upper boundary is OK since the first pixel of the dialog is defined as (0,0) for the client. But for example, if I click on the leftmost pixel (or convert it with ScreenToClient() since I know the start point of the dialog) of the left border I get (-3,y) as the client value. Then I can say that the thickness of the vertical border of the dialog is 3.
Can I be sure that the lower border thickness is the same as the vertical ones? Or is there some function to diagnose it (regarding that it will change w.r.t. your Windows settings)?
I would appreciate any help
Thanks in advance
caykahve
|
|
|
|
|
|
Thanks!
How I exactly got the border:
int HBorder = GetSystemMetrics(SM_CXDLGFRAME);
int VBorder = GetSystemMetrics(SM_CYDLGFRAME);
int CaptionHeight = GetSystemMetrics(SM_CYCAPTION);
int UpperBorder = CaptionHeight + HBorder;
|
|
|
|
|
"(GetWindowRect - GetClientRect)/2"
Professional C++ libraries for getting images from any TWAIN or DirectShow compatible device on www.neatcpp.com
|
|
|
|
|
hi,
i got a special TTF file and i want to use it in my Dialog.
i just to put a text using this special font on an EditBox.
how can i do that? i didn't manage to figure this out by myself...
Avi.
|
|
|
|
|
|
Hi,
I'm having problems with this static library I'm writing. It seems that every time I use the new or malloc commands, I get a pointer of 0x00000000 returned! Is there somthing important that I'm forgetting to do?
Thanks in advance.
Joel Holdsworth
Wanna give me a job this summer?
Check out my online CV and project history[^]
|
|
|
|
|
Strange. Can we see some of the code?
|
|
|
|
|
What's stranger is that the problem only seems to occur in debug mode!
Joel Holdsworth
Wanna give me a job this summer?
Check out my online CV and project history[^]
|
|
|
|
|
Anyone could please tell me in which plateform the language smalltalk is used.
|
|
|
|
|
I suppose it could be used on any platform, as long as the compiler supported it.
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
Hello everyone.
I'm using a Microsoft Access database for storing some strings.
The field size is fixed at 64 characters.
Now my problem is the following:
When I read the value of that fields with SQLGetData the functions returns the string followed by many spaces (e.g. 10 characters and 54 spaces). Is it a problem with the database, a configuration error or a query error?
Thx for any help.
Don't try it, just do it!
|
|
|
|
|
Hello,
I try to do a simple application where I can drag and drop pictures.
I'm trying to use the COleDropSource class, and it's member function ::CacheData() as I read it in the Help, but I get an error message like this "CacheData is not a member of COleDropSource". What did I do wrong? Is that the right way or is there something easier/better to do it? Can anybody help me or give me an example of code that actually works?
Thanks
JET
|
|
|
|
|
Hi,
A better way is to create a temporary transparent window which covers the whole screen. Use GetSystemMetrics(SM_CXSCREEN) and GetSystemMetrics(SM_CYSCREEN) to get the window dims. Use its mouse events to control the drag.
|
|
|
|
|
ALOK
I HAD A DATA SAY "C:/TEMPURL"OF A VALUE SAY "DOWNLOAD" IN REGISTRY.I HAVE TO CHECK THE PRESENCE OF THE MENTIONED FOLDER IN THE GIVEN DATA.IF NOT PRESENT THEN CREATE THE FOLDER IN THE MENTIONED DIRECTRY.
PLS TELL ME APIs WHICH SEARCH AND CREATE THE FOLDER IF NOT PRESENT.
|
|
|
|
|
Hello Mr.Sunit
sunit5 wrote:
I HAD A DATA SAY "C:/TEMPURL"OF A VALUE SAY "DOWNLOAD" IN REGISTRY.I HAVE TO CHECK THE PRESENCE OF THE MENTIONED FOLDER IN THE GIVEN DATA
check for PathFileExists for checking existense of any folder or file.
sunit5 wrote:
TELL ME APIs WHICH SEARCH FOLDER
CFileFind Class in MFC help in this Regards
sunit5 wrote:
CREATE THE FOLDER IF NOT PRESENT.
Mr M.Dunn has written execellent warpper class for it.
you can found that at this url
http://www.codeproject.com/shell/cshellfileop.asp[^]
sunit5 wrote:
ALOK
Please Don't typecast your post to particular person
[Vote One Here, Complete my Survey....]
Alok Gupta visit me at http://www.thisisalok.tk
"I Think Believe this Will Help"
|
|
|
|
|
on using PathFileExists it is giving me linking error.
Creating library Debug/con1.lib and object Debug/con1.exp
con1.obj : error LNK2001: unresolved external symbol __imp__PathFileExistsA@4
Debug/con1.dll : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
|
|
|
|
|
And please stop shouting. I'm growing deaf.
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
sunit5 wrote:
PLS TELL ME APIs WHICH...CREATE THE FOLDER IF NOT PRESENT.
Use CreateDirectory() .
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
i used PathFileExists() to search for a folder.but it is giving me Linking error ..
Creating library Debug/con1.lib and object Debug/con1.exp
con1.obj : error LNK2001: unresolved external symbol __imp__PathFileExistsA@4
Debug/con1.dll : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
|
|
|
|