描述:
void CDeskTopClient::ConnectToDeskTopServer()
{
InvokeHelper(0x1, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void CDeskTopClient::SetDeskTopServerIP(BSTR* DeskTopServerIP)
{
static BYTE parms[] =
VTS_PBSTR;
InvokeHelper(0x2, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
DeskTopServerIP);
}
void CDeskTopClient::SetClientName(BSTR* Name)
{
static BYTE parms[] =
VTS_PBSTR;
InvokeHelper(0x3, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
Name);
}
void CDeskTopClient::SendDeskTop()
{
InvokeHelper(0x4, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void CDeskTopClient::FinishSendDeskTop()
{
InvokeHelper(0x5, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void CDeskTopClient::SetServerIPFin(LPCTSTR lpszNewValue)
{
static BYTE parms[] =
VTS_BSTR;
InvokeHelper(0x9, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
lpszNewValue);
}
void CDeskTopClient::SetSetClientNameFin(LPCTSTR lpszNewValue)
{
static BYTE parms[] =
VTS_BSTR;
InvokeHelper(0xa, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
lpszNewValue);
}
void CDeskTopClient::SetServerIPInt(long IP)
{
static BYTE parms[] =
VTS_I4;
InvokeHelper(0xb, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
IP);
}
void CDeskTopClient::SetDrawWindow(long HDrawWindow)
{
static BYTE parms[] =
VTS_I4;
InvokeHelper(0xc, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
HDrawWindow);
}
整个程序实现的是抓屏幕,然后将图通过socket传送到客户机,也就是实现共享桌面的功能。这个是别人写的程序,用的都是InvokeHelper函数,现在要对这部分进行修改,可我连程序都没看懂。
之后看书,知道InvokeHelper是IDispatch的成员函数,知道了VARIANT和Invoke的三个函数,以及所带参数的意义,但是我还是看不懂程序,比如怎么实现的等等,每个函数里都用InvokeHelper,到底实现了什么功能?InvokeHelper的第一个参数应该怎么确定?
希望解释的详细些!
解决方案1:
这类只是暴露的接口,你要修改的话,当然要到这个com组件的源代码以修改之
解决方案2:你看的这个CDeskTopClient类不过是个包装类,是由VC自动生成,负责把你的调用转换成Invoke调用,里面是没有实现的,你修改这个类是没有意义的。真正的实现在组件的DLL里面。