大家好,初学vc++,希望大家多多指教。
在编写动态打开一个.bmp文件的程序时,我的程序段如下:
void CCDYnSplitView::OnOpen()
{
if(FileDialog.DoModal()==IDOK)
{
FileName=(LPSTR)(LPCTSTR)FileDialog.GetFileName();//FileName是我定义的一个字符指针型的全局变量,我的原意是在这里获取选中的文件。
}
}
然后我在void CCDYnSplitView::OnDraw(CDC* pDC)函数中
{
extern char* FileName;
dib.LoadFile(FileName);//dib是我定义的一个类,用来显示图像。我想把上面程序中的文件传到这里来。
.
.
.
下面的程序我省略了
}在编译链接的时候都没有问题,但是运行时就会出问题。大家能给我一个原因和建议吗?不胜感激!
在编写动态打开一个.bmp文件的程序时,我的程序段如下:
void CCDYnSplitView::OnOpen()
{
if(FileDialog.DoModal()==IDOK)
{
FileName=(LPSTR)(LPCTSTR)FileDialog.GetFileName();//FileName是我定义的一个字符指针型的全局变量,我的原意是在这里获取选中的文件。
}
}
然后我在void CCDYnSplitView::OnDraw(CDC* pDC)函数中
{
extern char* FileName;
dib.LoadFile(FileName);//dib是我定义的一个类,用来显示图像。我想把上面程序中的文件传到这里来。
.
.
.
下面的程序我省略了
}在编译链接的时候都没有问题,但是运行时就会出问题。大家能给我一个原因和建议吗?不胜感激!
解决方案 »
- UDP聊天小程序有疑问?
- 关于CrollBar控件的应用
- 关于ListControl获得行列的问题
- VC中的CString类有没有向像Java中的String类中split方法,把一个CString类型的串分割成CString数组!
- 有什么函数可以调用来设置屏幕的分辨率的啊?
- 求助:那里有MAC地址编辑控件的源代码???
- 用dom读取xml文档的时候如何把attribute的value转化为字符串?
- 如何在打印预览视图中的工具条上添加其它按钮?
- 让各位见笑了,2和8进制数怎么表示?
- WPF怎么做出像360云盘的文件管理效果?
- VC中如何获取读入并修改一张BMP的RGB像素
- ADO连接数据库的问题
在stdafx.cpp中声明如下:char* FileName;
不知道这样是否可以?等你的答复。谢谢!
运行是什么问题,能不能详细说一下。
{
CFileDialog FileDialog(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
"JPEG(*.JPG,*.JPE),BMP(*.BMP,*.RLE),TIFF(*.TIF)|*.BMP;*.RLE;*.JPG;JPE;*.TIF;*.TIFF|BMP(*.BMP,*.RLE)|*.BMP;*.RLE|JPEG(*.JPG,*.JPE)|*.JPG;JPE|TIFF(*.TIF)|*.TIF;*.TIFF|*.*|", NULL);
if(FileDialog.DoModal()==IDOK)
FileName=(LPSTR)(LPCTSTR)FileDialog.GetFileName();//FileName是我定义的一个字符指针型的全局变量,我的原意是在这里获取选中的文件。
}
在这里获得打开对话框中的文件后我想把它传到void CCDYnSplitView::OnDraw(CDC* pDC)函数中,即给dib.LoadFile((LPSTR)(LPCTSTR)Bmpname),目的是传给dib这个类的LoadFile函数。LoadFile()这个函数是提取一幅.bmp图像。
编译链接的时候没有问题,执行的时候会跳出一个出错的对话框,说0x102179db引用指令为0x00000000,不能为read,终止程序点“确定”,要调试点取消。请分析一下原因,谢谢!!!
{
TCHAR strFilter[] = { TEXT("Picture Files (*.bmp)|*.bmp||") };
CFileDialog dlg(TRUE, TEXT(".bmp"), NULL, 0, strFilter); if( dlg.DoModal() == IDOK )
{
strFilename = dlg.GetFileName();
Invalidate();
}
}
应该没问题的 我做过
如果一定要用指针,可以给FileName分配合适的大小,然后用lstrcpy等函数将字符串拷贝到里面;或者,用CString类型来定义FileName(最好改成别的变量名,比如m_strFileName):
void CCDYnSplitView::OnOpen()
{
if(FileDialog.DoModal()==IDOK)
{
m_strFileNameFileDialog.GetFilePath();//注意GetFileName和GetFilePath的区别。
}
}