我是新手 高手帮看看错在哪?在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 样式转换或函数样式转换
...全文
472 45 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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 是因为它的问题吗?
加载更多回复(25)

16,472

社区成员

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

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

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