/////声明
// 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();
///////////////结果不对//////////////////
请指点。
解决方案 »
- 关于串口DSR信号
- MFC中用户管理怎么在一个对话框里添加信息,同时给两个表插入数据
- [讨论]关于socket Server的一些问题
- 行间距问题……
- 无法在VS2005.Net环境下创建智能MFC ActiveX项目。。。
- 小弟对于元文件(MetaFile)的一点理解,不知对不对,请高手指正。
- 有哪位高手知道怎样可以捉用户登陆时的屏幕吗. 100分求救,
- com 组件如何从 dll 形式的转成 静态链接到 主程序里?
- 请问:WriteProfileString()和GetProfileString()怎么用的?
- 如何在msflexgrid里的表格中加入一个icon
- 有关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一定会失败的。