/////声明
// IAccount
public:
STDMETHOD(GetInt)(/*[out,retval]*/long *i);
long i;
////定义
STDMETHODIMP CAccount::GetInt(long *i)
{
// TODO: Add your implementation code here
*i=100; return S_OK;
}
//////使用
IAccount m_acc;
m_s1=m_acc.GetInt();
///////////////结果不对//////////////////
请指点。
// IAccount
public:
STDMETHOD(GetInt)(/*[out,retval]*/long *i);
long i;
////定义
STDMETHODIMP CAccount::GetInt(long *i)
{
// TODO: Add your implementation code here
*i=100; return S_OK;
}
//////使用
IAccount m_acc;
m_s1=m_acc.GetInt();
///////////////结果不对//////////////////
请指点。
解决方案 »
- 关于openssl库的用法.
- Visual C++中的组合框如何可以边输入边筛选
- 问题:两个内存快合并为一个内存块?教教我!!!
- 我的一个绘图多文档工程编译完执行后,没做任何操作,当关闭子窗口后即出现断言错误,实在不解
- 请问为什么在编译一个包含Gdiplus的工程时有时出现一大堆错误有时又不出现?很奇怪!
- 用vc6.0或者vc7.0怎么生成omf格式的lib文件?
- 求音频压缩方面的资料,高分相送!!
- 调试程序时,debug里出现如下情况,为什么?
- 也是一个多线程的通信问题
- 谁能教我把《轻轻松松背单词II》中的一个“空格”起作用的键,换成“回车键”起作用?
- 有关GetCharacterPlacement函数的问题,我出1000分
- 关于Edit Box的问题
long* m_s1
//////使用
IAccount m_acc;
HRESULT ret=m_acc.GetInt(m_s1);
IAccount *p;
CoCreateInstance(__uuidof(CAccount), NULL, CLSCTX_INPROC_SERVER, __uuidof(IAccount), (LPVOID *)&p);
long l;
p->GetInt(&l);
p->Release();
//int m_s1
//IAccount m_acc;
if (m_acc.CreateDispatch("Test.Account.1") != 0)
{
m_s1=m_acc.GetInt();
m_acc.ReleaseDispatch();
}
//////结果是-859045788
/////本来应当是100的啊
IAccount m_acc;
long m_sl = 0;
m_acc.GetInt(&m_sl);
-----------------------------------------------
STDMETHOD(GetInt)(/*[out]*/long *i);
没想到用COM做这么简单的事情都如此之难,ai
BTW:我是用ATL做的
>
>我这样做了
> //int m_s1
> //IAccount m_acc;
> if (m_acc.CreateDispatch("Test.Account.1") != 0)
> {
> m_s1=m_acc.GetInt();
> m_acc.ReleaseDispatch();
> }
>//////结果是-859045788
>/////本来应当是100的啊
基本是对的!1.你调用过CoInitialize(NULL)或AfxOleInit()吗?
2.判断条件最好改成:
HRESULT hr=m_acc.CreateDispatch("Test.Account.1");
if(SUCCEEDED(hr))
{
m_s1=m_acc.GetInt();
m_acc.ReleaseDispatch();
}
我调用过AfxOleInit()的,这个你放心,我相信如果没有初始化COM库,CreateDispatch一定会失败的。