在CStatic控件上写字的问题

孙立人315 2010-07-03 09:15:39
我在对话框上定义了一个CStatic成员

创建后加载了一幅图片

然后要在图片上写上一行字。

我是在Onpaint函数里写的。

但是显示时没有。

只要一遮挡就显示出来了。

改到OniniteDlg函数里

只显示图片不显示字

请问是什么问题啊 !
...全文
135 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwgddx 2010-07-05
  • 打赏
  • 举报
回复
然后要在图片上写上一行字。

我是在Onpaint函数里写的
-----------------------
Onpaint函数里写的代码呢?

从现象来看你是用主对话框的DC来写文字的,
而你显示的图片却是由CStatic控件来管理的,

当你启动的时候你主对话框的DC写出来的文字以后会被CStatic控件的刷新显示给覆盖掉。
当你遮挡主对话框的时候就会产生ONPAINT消息来写文字,而此时CStatic控件并未被挡住,
所有不会产生ONPAINT消息,所以文字就显示出来了。

由于一个在子窗口更新,一个在主窗口更新,所有很难协调一致,最好的办法就是用楼上的方法,都放在重载的CSTATIC类中显示。
Eleven 2010-07-05
  • 打赏
  • 举报
回复

// 重载CStatic类型,在WM_PAINT消息的OnPaint函数中加载Bitmap位图和绘制文字
void CNewStatic::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
CString strText(_T("Hello,World!"));
CDC memDC;
memDC.CreateCompatibleDC(&dc);
CRect rc;
GetClientRect(&rc);
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);
HBITMAP hOldbmp = (HBITMAP)memDC.SelectObject(bmp);
memDC.SetBkMode(TRANSPARENT);
memDC.DrawText(strText, &rc, DT_CENTER|DT_VCENTER);
dc.BitBlt(0, 0, rc.Width(), rc.Height(), &memDC, 0, 0, SRCCOPY);
memDC.SelectObject(hOldbmp);
bmp.DeleteObject();
memDC.DeleteDC();
// Do not call CStatic::OnPaint() for painting messages
}
孙立人315 2010-07-05
  • 打赏
  • 举报
回复
不可以

不透明

还有图片会覆盖[Quote=引用 8 楼 liweisdut 的回复:]
直接写在图片上不可以吗?
[/Quote]
孙立人315 2010-07-03
  • 打赏
  • 举报
回复
楼上说的不行啊

那相当于调用了InVilidate

闪个不停

在Onpaint里用的
Hiiishe 2010-07-03
  • 打赏
  • 举报
回复
把CStatic这个控件窗口这么整一下

ShowWindow(SW_HIDE);
ShowWindow(SW_NORMAL);
孙立人315 2010-07-03
  • 打赏
  • 举报
回复
这是什么类啊
CSDN上都查不到??
怎么用啊 ![Quote=引用 1 楼 xiaoc1026 的回复:]
可以用: CSkinStatic
[/Quote]
见习学术士 2010-07-03
  • 打赏
  • 举报
回复
可以用: CSkinStatic
liweisdut 2010-07-03
  • 打赏
  • 举报
回复
直接写在图片上不可以吗?
C瓜哥 2010-07-03
  • 打赏
  • 举报
回复
mark
wxh_77777 2010-07-03
  • 打赏
  • 举报
回复
从cstatic下继承,然后在OnEraseBk 擦除背景的消息中绘制,不要再调用原来的擦除函数,return true。 增加接口 设置图片,文字。 在dlg中将 控件类型修改为新的类就可以了。 要使用标准的继承方式进行扩展, 在dlg中画,代码很难看,也没有模块性。
mrgeog 2010-07-03
  • 打赏
  • 举报
回复
以CWnd为基类实现一下,
然后把CStatic定义为这个类

或者把你的cstatic改为picture control

15,978

社区成员

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

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