谁能帮帮忙,看看我的代码错哪了!

public 2002-06-12 02:55:38
我是这样做的:
1。用appwizard创建项目MFCDispatchDriver,选定自动化和一个文档接口,所有其他选项均取默认。
2。 将一个类,IDrive 基类COleDispatchDriver ,为PUBLIC类行。
3。添加3个方法。
#if !defined(AFX_IDRIVE_H__3AB8CB92_4E9B_438B_9AD6_053D8FC0ACAD__INCLUDED_)
#define AFX_IDRIVE_H__3AB8CB92_4E9B_438B_9AD6_053D8FC0ACAD__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class IDrive : public COleDispatchDriver
{
public:
void PutAlbumLenth(short nLength);
short GetAlbumLength();
void TrackInformation(short nIndex,BSTR *bstrTitle);
IDrive();
virtual ~IDrive();

};

#endif // !defined(AFX_IDRIVE_H__3AB8CB92_4E9B_438B_9AD6_053D8FC0ACAD__INCLUDED_)

4。方法实现:

void IDrive::TrackInformation(short nIndex, BSTR *bstrTitle)
{
DISPID dispid;
unsigned short * szName=L"Trackinfo";

SCODE scodeReturnError=0L;
HRESULT hresult=m_lpDispatch->GetIDsOfNames(IID_NULL,&szName,1,LOCALE_USER_DEFAULT,&dispid);
static BYTE params[]=VTS_I2 "\x48";
InvokeHelper(dispid,DISPATCH_METHOD,VT_ERROR,(void*)&scodeReturnError,params,nIndex,bstrTitle);
}
void IDrive::PutAlbumLenth(short nLength)
{
DISPID dispid;
unsigned short * szName=L"AlbumLength";
HRESULT hresult=m_lpDispatch->GetIDsOfNames(IID_NULL,&szName,1,LOCALE_USER_DEFAULT,&dispid);
static BYTE params[]=VTS_I2;
InvokeHelper(dispid,DISPATCH_PROPERTYPUT,VT_EMPTY,(void*)NULL,params,nLength);
}

short IDrive::GetAlbumLength()
{
DISPID dispid;
unsigned short * szName=L"AlbumLength";
short nReturnLength=0L;
HRESULT hresult=m_lpDispatch->GetIDsOfNames(IID_NULL,&szName,1,LOCALE_USER_DEFAULT,&dispid);
static BYTE params[]=VTS_I2;
InvokeHelper(dispid,DISPATCH_PROPERTYGET,VT_EMPTY,(void*)nReturnLength,params,NULL);
return nReturnLength;
}
4。在CMFCDispatchDriverDoc类中的OnNewDocument进行操作。
BOOL CMFCDispatchDriverDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;

// TODO: add reinitialization code here
// (SDI documents will reuse this document)
IDrive driver;
_bstr_t b ("Call through InvokeHelper");
wchar_t * pBstr=(wchar_t*)b;
driver.TrackInformation(23,&pBstr);
driver.PutAlbumLenth(45);
short nOut=driver.GetAlbumLength();
if (nOut==45)
{
AfxMessageBox("property access a success");
}


return TRUE;
}
为什么运行到 driver.TrackInformation(23,&pBstr);
就出错了呢!!!

帮我啊,我可以把我的程序发给你,如果给我你的油箱地址。
帮我啊,分不成问题,不够可以加。



...全文
45 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
pursuer 2002-06-12
  • 打赏
  • 举报
回复
bzw@bb163.net
beggarrich 2002-06-12
  • 打赏
  • 举报
回复
richbeggar@sina.com
hbqj 2002-06-12
  • 打赏
  • 举报
回复
ysunrising@163.net
public 2002-06-12
  • 打赏
  • 举报
回复
我发了过去了!
谢谢老兄
mfkzj 2002-06-12
  • 打赏
  • 举报
回复
mfkzj@263.net

16,470

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧