我是新手 高手帮看看错在哪?在6.0就可以 在VSC++2005上就不行

lz2212 2010-07-09 12:38:57
public:
CBitmap* bitmap[4][4];
#include "gameWnd.h"
{
Create(NULL,L"创建窗口");

char ch[8];
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
sprintf(ch,"%d.%d.bmp",i+1,j+1);
bitmap[i][j]=new CBitmap;
bitmap[i][j]->m_hObject=LoadImage(NULL,ch,IMAGE_BITMAP,93,100,LR_LOADFROMFILE);


}
错误提示:error C2536:“gameWnd::gameWnd::bitmap”: 无法指定数组的显式初始值设定项
error C2065: “j”: 未声明的标识符
error C2227: “->m_hObject”的左边必须指向类/结构/联合/泛型类型
error C2664: “LoadImageW”: 不能将参数 2 从“char [8]”转换为“LPCWSTR”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
...全文
435 点赞 收藏 45
写回复
45 条回复
切换为时间正序
请发表友善的回复…
发表回复
死神的微笑 2012-02-13
《我是新手 高手帮看看错在哪?在6.0就可以 在VSC++2005上就不行 》我也和你一样出现运行一会就出错误,你加我QQ373277211,我们交流一下
回复
lz2212 2010-07-27
指针初始化有问题吗?为什么返回的this==NULL?
回复
lz2212 2010-07-27
成功了~ 就是运行一会就报那个错误~
回复
wltg2001 2010-07-27
另外 ,你上面的错误指向不是你自己的,所以不好确实,你应该在调试时在自己 的代码中下断点,看看哪一句出了问题。
回复
wltg2001 2010-07-27
[Quote=引用 38 楼 lz2212 的回复:]
调试后错误指向:_AFXWIN_INLINE HGDIOBJ CGdiObject::GetSafeHandle() const
{ return this == NULL ? NULL : m_hObject; }
调用堆栈指向:> game32.exe!CGdiObject::GetSafeHandle() 行100 + 0x1b 字节
还用m_hObject CXX0030: 错误: ……
[/Quote]
看看上面的LoadImage是不是成功了
回复
gisupc 2010-07-27
不是很明白,帮顶………………
回复
lz2212 2010-07-27
调试后错误指向:_AFXWIN_INLINE HGDIOBJ CGdiObject::GetSafeHandle() const
{ return this == NULL ? NULL : m_hObject; }
调用堆栈指向:> game32.exe!CGdiObject::GetSafeHandle() 行100 + 0x1b 字节
还用m_hObject CXX0030: 错误: 无法计算表达式的值
怎么解决啊~试了好多方法,不知道错在哪,调试运行,提示访问冲突game32.exe 中的 0x004c3e7b 处未处理的异常: 0xC0000005: 读取位置 0xfdfdfe01 时发生访问冲突
全部代码在上面,大家看看怎么办啊?
回复
lz2212 2010-07-27
我在vc6。0中打开过这个程序~ 是不是这个问题啊?我看到提示是在另一个编辑器中打开~
回复
lyl0625 2010-07-10
可能是指针的初始化值有问题哦,你查查看。或者设置断点跟踪下。
回复
wltg2001 2010-07-10
[Quote=引用 35 楼 lz2212 的回复:]
上面的代码 调试后提示访问冲突:
game32.exe 中的 0x004c3e7b 处未处理的异常: 0xC0000005: 读取位置 0xfdfdfe01 时发生访问冲突
我用的2005 是因为它的问题吗?
[/Quote]
这个你只能自己调试了,但是与VS2005一定没有关系,肯定是你代码的事
回复
lz2212 2010-07-09
谢谢大家~ 我去调试看看~ 谢谢谢谢
回复
bingying19872008 2010-07-09
楼主的图片可能是个4x4 的,以此好区分吧呵呵
回复
Eleven 2010-07-09
有必要搞个指针数组吗?CBitmap bitmap[MAX_COUNT];类似这样不就可以了
回复
bingying19872008 2010-07-09
如果改成 WCHAR 的话 那么 sprintf 之类的函数也要改成swprintf......
回复
wltg2001 2010-07-09
for(int j=0;j<4;j++)
==============
在for里面定义int j,那么这里的int j;只在for循环内部有效。所以下面就无效了。

error C2664: “LoadImageW”: 不能将参数 2 从“char [8]”转换为“LPCWSTR”
===========
这个将前面char ch[8];改成TCHAR ch[8];或改成WCHAR ch[8];
回复
hongya6088 2010-07-09
第二for循环少了{},lz的环境是Unicode, 把char换成wchar_t或者THCAR或者转为宽字节
回复
bingying19872008 2010-07-09
工程设置为多字节
回复
bingying19872008 2010-07-09
char ch[8];
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
sprintf(ch,"%d.%d.bmp",i+1,j+1);
bitmap[i][j]=new CBitmap;
bitmap[i][j]->m_hObject=LoadImage(NULL,ch,IMAGE_BITMAP,93,100,LR_LOADFROMFILE);


}

j 的声明周期 只有这2行
for(int j=0;j<4;j++)
sprintf(ch,"%d.%d.bmp",i+1,j+1);
回复
wltg2001 2010-07-09
bitmap[i][j]=new CBitmap;
=========
bitmap是CBitmap指针,你将CBitmap对象给它当然出错了。
回复
lz2212 2010-07-09
上面的代码 调试后提示访问冲突:
game32.exe 中的 0x004c3e7b 处未处理的异常: 0xC0000005: 读取位置 0xfdfdfe01 时发生访问冲突
我用的2005 是因为它的问题吗?
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告
暂无公告