• 全部
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

真是见鬼了,同样的程序别人机上能运行,我机上就出错。帮忙看看!!!

lf_77 2001-07-29 11:37:30
Dialog中用RichEdit控件显示文件内容,bbbDlg.cpp中加入下内容:
1、回调函数Stream2Edit
DWORD CALLBACK Stream2Edit(DWORD dwCookie,LPBYTE pbBuff,LONG cb,LONG *pcb)
{
static DWORD dwStreamCount=0;
static BOOL bEndTransfer=FALSE;
DWORD n=0; //传给缓冲区的数据量
static DWORD dwDataSize;

//初始化
if( dwStreamCount==0 )
{
char *lpSource=(char *)GlobalLock( (HGLOBAL)dwCookie );
dwDataSize=strlen( lpSource );
GlobalUnlock( (HGLOBAL)dwCookie );
}

//数据已传输完毕或内存句柄为空
if( bEndTransfer ¦¦ dwCookie==NULL )
{
*pcb=0; //结束传输
bEndTransfer=FALSE; //重新置位
dwStreamCount=0; //重新准备计量
dwDataSize=0;
return 0;
}

if( dwStreamCount+cb>dwDataSize ) //要求传输量超过数据量
{
*pcb=n=dwDataSize-dwStreamCount; //只传给其余下的数据
bEndTransfer=TRUE; //此时表明传输数据到了流尾
}
else
*pcb=n=cb;

//填充缓冲区
LPBYTE lpSource=(LPBYTE)GlobalLock( (HGLOBAL)dwCookie );
memmove(pbBuff,lpSource+dwStreamCount,n);
dwStreamCount+=n;
GlobalUnlock( (HGLOBAL)dwCookie );

return 0;
}

2、OnInitDialog()中加入下代码:
char m_hData[500000];
CFile file1;
file1.Open("aaa.txt",CFile::modeRead);
int n=file1.GetLength();
file1.Read(m_hData,n);
file1.Close();
EDITSTREAM es;
es.dwCookie=(DWORD)m_hData; //将内存句柄作为参数传给回调函数
es.dwError=0;
es.pfnCallback=&Stream2Edit;
m_editInstanceView.StreamIn(CF_TEXT,es);
编译通过,运行出错,用Debug跟运行m_editInstanceView.StreamIn(CF_TEXT,es);时出如下提示:
Unhandled exception in bbb.exe(MSVCRTD.DLL)0x0000005:Access Violation.

...全文
87 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lf_77 2001-08-02
谢谢: MSVCer(家宝) 问题解决了
回复
FireBow 2001-07-29
关注
回复
zzh 2001-07-29
你检查一下你机器的配置情况,是不是跟不会出错的机器配置是一样的,特别的VC的补丁包是不是一致,RICHEDIT控件用到了一些OLEDB的东西,很有可能你们两台机器上的配置情况不一样,检查一下RICHEDIT的版本,
回复
lf_77 2001-07-29
麻烦大家!
回复
lf_77 2001-07-29
内容长点大家费心了
回复
shiyutao2010 2001-07-29
gz
回复
MSVCer 2001-07-29
贴子中的代码不是我前几天贴上去的吗!太激动了,好!让我解释一下吧!
回调函数DWORD CALLBACK Stream2Edit(DWORD dwCookie,LPBYTE pbBuff,LONG cb,LONG *pcb)
中第一个参数应传递的为内存句柄,即用GlobalAlloc分配内在后返回的句柄
代码中
EDITSTREAM es;
es.dwCookie=(DWORD)m_hData; //将内存句柄作为参数传给回调函数
明明说要传句柄吗!改一改,一定会成功的,我都用了好长时间了
回复
lf_77 2001-07-29
win2000和98有关系吗?
RICHEDIT的版本怎样查?都是VC6.0
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2001-07-29 11:37
社区公告

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