MFC图片不显示出来,在OnInitDialog()函数中调用,哪里的问题,怎么办?

jatavc 2016-08-07 09:00:43
void CBaccaratGameRecordDlg::ShowResultToUI(std::vector<TABLETINFO>& VTabInfo)
{
//程序启动时加载
CDC *dc = GetDC();
CBitmap bmp;
int i = 0, nCount = VTabInfo.size();
while (i < nCount)
{
switch (VTabInfo[i].nResult)
{
case 1:
bmp.LoadBitmap(1); //
break;
case 2:
bmp.LoadBitmap(2); //
break;
case 3:
bmp.LoadBitmap(3); //
break;
case 14:
bmp.LoadBitmap(4); //
break;
case 15:
bmp.LoadBitmap(5); //
break;
case 24:
bmp.LoadBitmap(6); //
break;
case 25:
bmp.LoadBitmap(7); //
break;
case 34:
bmp.LoadBitmap(8); //
break;
case 35:
bmp.LoadBitmap(9); //
break;
case 145:
bmp.LoadBitmap(10); //
break;
case 245:
bmp.LoadBitmap(11); //
break;
case 345:
bmp.LoadBitmap(12); //
break;
}

BITMAP bm;
bmp.GetBitmap(&bm); //用来取位图的详细信息
CDC mdc;//CMemDC CClientDC CPaintDC CWindowDC
mdc.CreateCompatibleDC(dc);//代入一个DC模板
mdc.SelectObject(&bmp);

int j = 0;
while (j < 11)
{
int k = 0;
while (k < 6)
{
if (!nMax[j][k])
{
dc->SetStretchBltMode(HALFTONE);
dc->StretchBlt(1062 + (26 * i), 7 + (26 * j), bm.bmWidth - 1, bm.bmHeight - 1, &mdc,
0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY);
bmp.DeleteObject();
mdc.DeleteDC();
nMax[j][k] = 1;
return;
}
k++;
}
j++;
}
bmp.DeleteObject();
++i;
}
dc->DeleteDC();
bmp.DeleteObject();
}

如上面的代码,在MFC中,最终要在下面的网格中显示图片出来,可是现在图片不显示出来,在OnInitDialog()函数中调用。如果我把这个函数放到一个Button中,一次一次的点击,图片是正常显示出来的,哪里的问题,如何处理??请高手帮忙
...全文
1005 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2016-08-07
  • 打赏
  • 举报
回复
放到OnPaint中画格子
schlafenhamster 2016-08-07
  • 打赏
  • 举报
回复
问题在 ShowResultToUI() 先执行, 结果被覆盖 OnPaint() 后执行。
schlafenhamster 2016-08-07
  • 打赏
  • 举报
回复
ShowResultToUI() 放 OnTimer 中; ::OnInitDialog() { SetTimer(1,100,0); } ::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default KillTimer(1); ShowResultToUI(); CDialog::OnTimer(nIDEvent); }
schlafenhamster 2016-08-07
  • 打赏
  • 举报
回复
让它一直保留要放到OnPaint()中
jatavc 2016-08-07
  • 打赏
  • 举报
回复
引用
问题在 ShowResultToUI() 先执行, 结果被覆盖 OnPaint() 后执行。
谢谢一楼的精彩回复,我已经修改我的代码了,我想再问,这样的绘图,我刷新窗口或者窗口拖动到屏幕边缘就会被覆盖,有办法让它一直保留着吗,是不是还要用到OnPaint()?

2,586

社区成员

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

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