在基于对话框的程序中画图

lzg350 2009-05-24 05:26:44
我的程序是基于对话框的,想要在程序启动后就在对话框的右上角画出一副位图作为一个log
可是我谢的画图函数只能在运行后点击某个按钮时调用才起作用,我在OnInitDialog()中调用就不行,图画不出来,也不报错。

画图程序如下:
void CTmCETCirDlg::drawlog(CDC* pDC,RECT* pRect)
{
CBitmap bitmap;
BOOL pass = bitmap.LoadBitmap(IDB_BITMAP_COMPANYLOG);

CDC dcComp;
dcComp.CreateCompatibleDC(pDC);
dcComp.SelectObject(&bitmap);

BITMAP bmInfo;
bitmap.GetObject(sizeof(bmInfo),&bmInfo);

int xsrc = pRect->left;
int ysrc = pRect->top +10;
int nsrcWidth = pRect->right - xsrc;
int nsrcHeight = pRect->bottom - ysrc;
pass = pDC->StretchBlt(xsrc,ysrc,
nsrcWidth,nsrcHeight,&dcComp,0,0,bmInfo.bmWidth,bmInfo.bmHeight,SRCCOPY);
}


我传入函数的pDC是对话框函数getdc()获得的指针,pRect是要画的位置,IDB_BITMAP_COMPANYLOG是资源中的位图
函数应该没问题。可问什么函数放在开始的OnInitDialog()执行以后没有图看到,而放在按钮消息处理函数中调用就可以啊
我跟踪了一下,发现函数执行了,可不知图画到哪了

有没有高手指点一下。还是有其他的方法是实现我要的功能,就是让对话框第一次出现时,能够把我指定的位图画在对话框的指定位置。

希望大家给点建议
...全文
118 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzg350 2009-05-24
  • 打赏
  • 举报
回复
多谢各位了,试了一下在OnPaint中就可以了
lili0920 2009-05-24
  • 打赏
  • 举报
回复
OnPaint
  • 打赏
  • 举报
回复
在OnPaint中画
cxxstudy 2009-05-24
  • 打赏
  • 举报
回复
在OnPaint()中画才在每次刷新的时候重绘。
如果你的对话框是新插入的,初始状态下是没有OnPaint()函数的,要在classwizard中为该对话框添加消息响应函数,
即选中massages列表框中选中“WM_PAINT”,
点击“Add Functions”按钮,
再点击“Edit Code”按钮,
就生成OnPaint()函数了。
oyljerry 2009-05-24
  • 打赏
  • 举报
回复
对话框中画图放到OnPaint()中,这样可以防止重绘,就一直能够保持显示
hurryboylqs 2009-05-24
  • 打赏
  • 举报
回复
在OnInitDialog()画图不行,要放到OnPaint里面画
m_tornado 2009-05-24
  • 打赏
  • 举报
回复
OnInitDialog()执行的时候窗口还没出来吧,所以画了一次没见;
还有问题:
你用按钮实现也只能看见一会儿,如果OnPaint()调用后,图像就又会消失,

所以,结论:在OnDraw里面画就可以了把你的代码贴到OnPaint()里面,对话框是OnPaint()视图是OnDraw();
:)

15,979

社区成员

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

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