在WM_PAINT消息中绘图,图片没显示出来

tx183584 2011-07-10 11:01:30
不是在MFC中


case WM_CREATE:
hInstance = ((LPCREATESTRUCT) lParam)->hInstance ;
//加载位图,位图已经被添加成资源
hBitmapImag = LoadBitmap (hInstance, _T("IDB_BITMAP2")) ;
//获得位图结构
GetObject (hBitmapImag, sizeof (BITMAP), &bitmap) ;
//位图的宽度和高度
cxBitmap = bitmap.bmWidth ;
cyBitmap = bitmap.bmHeight ;
break;
case WM_SIZE:
cxClient = LOWORD (lParam) ;
cyClient = HIWORD (lParam) ;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: 在此添加任意绘图代码...
//创建兼容内存DC
hdcMemImag = CreateCompatibleDC (hdc) ;
//将位图选入内存DC
SelectObject (hdcMemImag, hBitmapImag) ;

//计算居中显示的位置
x = (cxClient - cxBitmap) / 2 ;
y = (cyClient - cyBitmap) / 2 ;

//将内存DC拷贝到客户区DC
BitBlt (hdc, x, y, cxBitmap, cyBitmap, hdcMemImag, 0, 0, SRCCOPY) ;

//删除内存DC
DeleteDC (hdcMemImag) ;

EndPaint(hWnd, &ps);
break;
...全文
240 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wltg2001 2011-07-10
  • 打赏
  • 举报
回复
hBitmapImag = LoadBitmap (hInstance, _T("IDB_BITMAP2")) ;
==========
看看这个有没有成功
一般的写法是
hBitmapImag = LoadBitmap (hInstance, MAKEINRESOURCE(IDB_BITMAP2)) ;
Mdesigner 2011-07-10
  • 打赏
  • 举报
回复
看下是否调用到绘制部分了,还有区域是否正确
hurryboylqs 2011-07-10
  • 打赏
  • 举报
回复
你看看 hBitmapImag = LoadBitmap (hInstance, _T("IDB_BITMAP2")) ;
这里的图片句柄是否为空?
应该这么写吧:
hBitmapImag = LoadBitmap (hInstance, MAKEINRESOURCE(IDB_BITMAP2)) ;

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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