关于PictureControl上面用GDI画图的问题【散分】

OenAuth.Core 2009-10-30 10:51:01
原帖 关于PictureControl上面用GDI画图的问题【新号,望大家见谅】


今天做界面时,遇一问题。相当郁闷,BAIDU GOOGLE很久无果,求助。
问题如下:

我想要的效果就是在原有PictureControl图片的上面显示一个GDI小图

Dialog对话框程序,上面只有一个PictureControl控件里面放个图。
然后我在OnPaint里面写下:


void CGDITestDlg::OnPaint()
{
srand((unsigned)time(NULL));
int n = rand()%20;

CWnd *pwnd = GetDlgItem(ID_PIC_LEFT); //ID_PIC_LEFT为控件ID
CPaintDC pDc(pwnd);
// CDC* pDc = pwnd->GetDC(); // 试了这种方法也不行

m_dcMemo.CreateCompatibleDC(&pDc);
m_dcMemo.SelectObject(m_cbmp);
pDc.BitBlt(10*n, 10*n, 31, 60, &m_dcMemo, 0, 0, SRCAND);
m_dcMemo.DeleteDC();
pDc.DeleteDC();
}



对话框设置Clip children属性也不行。

本来不想用这个号了~~~
看来没分帖是不怎么受欢迎~~~
...全文
261 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ryanwen 2009-10-30
  • 打赏
  • 举报
回复
在PictureControl控件自己的OnPaint函数中绘制
OenAuth.Core 2009-10-30
  • 打赏
  • 举报
回复
有一文:http://topic.csdn.net/u/20080611/11/0e5a7cfa-ebed-4381-8ce9-d039392f9f78.html说是没有得到WM_PAINT消息,可我用SPY++看了一下,WM_PAINT消息很正常
OenAuth.Core 2009-10-30
  • 打赏
  • 举报
回复
下面几种情况:

用:CDC* pDc = pwnd->GetDC(); 时只显示控件的图,没有GDI图。

当用CPaintDC pDc(pwnd);时,选中Clip children时,GDI图片显示,但控件里面的原图没了,得到的效果好像是透明的一样。

当不选中Clip children时,显示小图,控件没了,背景为WINDOWS窗口。

fandh 2009-10-30
  • 打赏
  • 举报
回复
楼主出现什么结果?是不是什么都没有显示?
明天好,会的 2009-10-30
  • 打赏
  • 举报
回复
你的保证界面上不会有其它Paint将你绘制的东西刷掉
zsyyui 2009-10-30
  • 打赏
  • 举报
回复
CPaintDC pDc(this);
把这行代码写到OnPaint()函数的第一行, 删掉后面的 CPaintDC pDc(pwnd);试试。 我的就是这样在控件的位置画图,但是会越界。

15,979

社区成员

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

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