1、你都不知道,我哪儿知道!?或许是例子中的而已;
2、好像不是 COPY 的问题吧?看看这个吧!http://www.devx.com/free/mgznarch/vcdj/1998/dec98/comstring1.asp
3、取决于 _UNICODE 是否定义;
4、不能,COM 准则就是只能通过 HRESULT 来返回错误;
5、用 MAKE_HRESULT;
5.1. 不明白,我头也大了,没在书上找到你写的代码。
2、好像不是 COPY 的问题吧?看看这个吧!http://www.devx.com/free/mgznarch/vcdj/1998/dec98/comstring1.asp
3、取决于 _UNICODE 是否定义;
4、不能,COM 准则就是只能通过 HRESULT 来返回错误;
5、用 MAKE_HRESULT;
5.1. 不明白,我头也大了,没在书上找到你写的代码。
解决方案 »
- sendmessage问题
- 大家帮忙看看一个资源释放问题--刷子Brush的是释放是不是有问题
- 菜鸟求救 Directshow Timeline怎么保存到文件!!!!中间就一段音频。。。
- 利用MSComm控件接收串口数据,在编辑框中显示,如何实现在接收下一串数据时,编辑框清空以前的数据,只显示刚接收的数据
- debug工具能画图吗
- 各位仁兄,能不能给我一个简单网络管理协议的代理程序啊?谢谢啦,急用.
- 请教:Sleep的影响范围?
- MSFlexGrid让文本折行是不是需要在wordwrap情况下加回车
- ●●请问,这条语句怎么写?●●
- 如何消除矢量绘图的闪烁?
- 精通VC需多长时间?
- 我放弃学vc++了!我必须重新奠定好基础!!!
2.certainly!
3.看看FormatMessage的定义
...
#ifdef _UNICODE
typedef FormatMessageW FormatMessage
#else
typedef FormatMessageA FormatMessage
...
如果你要不受 _UNICODE宏控制,请直接使用FormatMessageA或FormatMessageW
你说MSDN上找不到定义,它的定义跟FormatMessage一样,只不过字符串的定义是LPWSTR
4.当然可以.截获错误以后以约定的方式告诉客户端.
5.如果你知道GetLastError()如何工作的,那么相信这个问题不成为问题.
你可以在服务端维护一个错误号.如果某一方法产生错误,先设置错误号,返回S_FALSE.提供一个方法诸如:
HRESULT get_last_server_errro([out]DWORD *dwCode)
{
*dwCode = 你维护的错误信息;
return S_OK;
}
1.在我在COM中使用IDD_IEncrypt,我的组件名叫Encrypt,感觉是GUID,可是我不知道它在哪里写义?
2.上次地址有问题,这个行,我好好看。
3.COM在95或NT上都可以运行,可95只支持部分的UNICODE API,而且书上说COM是使用UNICODE,这与定不定义有关系吗?
4.你误解我的意思了,我的意思是能在COM中使用try...catch;,处理发现在程序中的错误,但并不把错误给Client。
5.MAKE_HRESULT如何用,假如我使用CryptEncrypt返回失败,我想把::GetLastError()的ID与::FormatMessage的错误信息,返回给Client,我该如何使用这个宏?(给段代码吧!)
5.1在《Inside COM》(中文译本)第199页,我就是参照它的。
再帮帮我吧!
1.IID_IEncrypt应该是个GUID,可是我不知道它在哪里写义?
4.如何做(给段代码吧!)
5.像我在ASP中使用ADO的对象方法中,如何发生错误时,在ASP会显示出错误来,包括错误号与错误信息,这只想做到这一步,用专门一个方法的话,ASP知道吗?我该如何做哪?
2、上次对不起了;
3、SysAllocString/SysFreeString/...
4、当然可以,但不能跨越组件边界;
5、return err == 0 ? S_OK : MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, err);
5.1 天哪!我的是 E 文的,199 页找不到!
1.是用ATL生成工程
再问:
1.我在我的组件的构造函数使用SysAllocString到一个类变量指针里,可该对象没有析构函数,该在哪里delete.
2.以下你码该如何改(C++基础差):
STDMETHODIMP CEncrypt::Encrypt(BSTR *pEncryptString)
{char *pData=(char*)_bstr_t(pEncryptString);//编译出错
也就是如何把**指针赋给*指针呢?
5.你这各方法如何返回Error Decription呢?
1.在COM中有一个方法中,调动WINAPI出错,程序中如何把取得的错误返回告诉客户端?
edyang提到用return err == 0 ? S_OK : MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, err);
可是该方法如何返回Error Decription呢?
2.以下是我从《Inside COM》中摘出来的处理Error,高手帮我看一下:
ICreateErrorInfo *pErrorInfo;
pErrorInfo->SetGUID(IID_IEncrypt);
pErrorInfo->SetSource(L"ASPEncrypt.Encrypt");
pErrorInfo->SetDescription(szErrorText);
IErrorInfo *pErrInfo;
pErrorInfo->QueryInterface(IID_IEncrypt,(void**)&pErrInfo);
SetErrorInfo(::GetLastError(),pErrInfo);//其中第一个参数在Client能得到吗?,放到哪里好呢?
pErrInfo->Release();
pErrorInfo->Release();
return E_ABORT;//该处该返回啥值比较好!还是E_FAIL,还是用MAKE_HRESULT等。
我如何把::GetLastError()放到哪里才能让Client端收到。
还有别的方法吗?
用 Return Error(" your error decription "),客户端用
try
{
//调用组件的方法
}
catch (_com_error e)
{
MessageBox((LPCTSTR)e.Description(),"MessageBox",MB_OK|MB_ICONSTOP);
}