使用查找对话框后,另一对话框的位图背景加载失败
2010-09-05 13:38
295 查看
问题:
工程中有多个对话框
我在一个对话框中 使用查找对话框设置位图后
打开另一对话框后,发现另一对话框加载位图失败
出现断言错误
CBitmap::GetBitmap中 { ASSERT(m_hObject != NULL);
原因:
HBITMAP hBmp=(HBITMAP)::LoadImage(NULL,L"res//7.jpg",IMAGE_BITMAP,rect.Width(),rect.Height(),LR_LOADFROMFILE);
CBitmap *p_bit=CBitmap::FromHandle(hBmp);
因为这个对话框使用了相对目录,这样呢,当另一个对话框使用了查找对话框后,当前路径发生了变化,而当前路径下没有所要打开的资源,所以就出现了打开位图的错误
解决:
将路径再次定位到资源所在的地方即可:
工程中有多个对话框
我在一个对话框中 使用查找对话框设置位图后
打开另一对话框后,发现另一对话框加载位图失败
出现断言错误
CBitmap::GetBitmap中 { ASSERT(m_hObject != NULL);
原因:
HBITMAP hBmp=(HBITMAP)::LoadImage(NULL,L"res//7.jpg",IMAGE_BITMAP,rect.Width(),rect.Height(),LR_LOADFROMFILE);
CBitmap *p_bit=CBitmap::FromHandle(hBmp);
因为这个对话框使用了相对目录,这样呢,当另一个对话框使用了查找对话框后,当前路径发生了变化,而当前路径下没有所要打开的资源,所以就出现了打开位图的错误
解决:
将路径再次定位到资源所在的地方即可:
void WeiKuangKe::OnPaint() { CPaintDC dc(this); // device context for painting CRect rect; GetClientRect(&rect); CString currentDirectory; GetModuleFileName(NULL,currentDirectory.GetBufferSetLength(MAX_PATH+1),MAX_PATH); currentDirectory.ReleaseBuffer(); int pos=currentDirectory.ReverseFind('//'); currentDirectory=currentDirectory.Left(pos); currentDirectory+=L"//res//13.bmp"; HBITMAP hBmp=(HBITMAP)::LoadImage(NULL,currentDirectory,IMAGE_BITMAP,rect.Width(),rect.Height(),LR_LOADFROMFILE); CBitmap *p_bit=CBitmap::FromHandle(hBmp); BITMAP bitmap; p_bit->GetBitmap(&bitmap); CDC dcMem; dcMem.CreateCompatibleDC(&dc); CBitmap *pbmpOld=dcMem.SelectObject(p_bit); dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY); dcMem.SelectObject(pbmpOld); dcMem.DeleteDC(); }
相关文章推荐
- VC使用位图作为对话框或者控件背景
- VC对话框使用OnEraseBkgnd函数位图背景并透明
- 使用ATL库中的CImage类加载JPG图片作为对话框背景
- 基于对话框的MFC程序加载位图为背景图案
- VC对话框使用OnEraseBkgnd函数位图背景并透明
- VC对话框如何添加WM_ERASEBKGND消息(OnEraseBkgnd函数)及对话框使用位图背景并透明
- VC对话框使用OnEraseBkgnd函数位图背景并透明
- VC对话框使用OnEraseBkgnd函数位图背景并透明
- VC对话框如何添加WM_ERASEBKGND消息(OnEraseBkgnd函数)及对话框使用位图背景并透明
- VC对话框如何添加WM_ERASEBKGND消息(OnEraseBkgnd函数)及对话框使用位图背景并透明
- VC对话框如何添加WM_ERASEBKGND消息(OnEraseBkgnd函数)及对话框使用位图背景并透明
- 使用ATL库中的CImage类加载图片作为对话框背景
- VC对话框使用OnEraseBkgnd函数位图背景并透明
- AngularJS使用ng-inlude指令加载页面失败的原因与解决方法
- 查找/替换对话框CFindReplaceDialog的使用
- MFC对话框如何使用工具栏并修改工具栏的背景颜色与自绘对话框统一
- iOS中使用SDWebImage加载图片失败之后如何重新加载
- 在android中使用ImageLoder加载网络图片时,将图片设置为ImageView的背景
- 使用jquery给加载失败的img元素显示默认图片
- MFC 对话框载入背景图片-控件加载图片