一个关于属性表的问题

swjj 2001-04-22 07:57:00
我想在属性页转换时,在属性表最下面的空白处(按钮左边),进行相应提示,
我在属性表中加如下函数,每次换页AfxMessageBox()都提示我正确页号,也证明
OnPaint() 在换页时已正常运行,但就时不见提示文本更新,将属性表最小化后,再最大化,才能看到最新的文本,你说怪不怪??



void CMyPropertySheet::OnPaint()
{
CPaintDC dc(this); // device context for painting



dc.SetBkMode(TRANSPARENT);

CString m_sstr[7]={
"a0000",
"11111",
"22222d",
"333333f",
"444444",
"55555",
"66666"

};

int m_iAcitvePage=GetActiveIndex();

//可在此绘画到sheet底图上


//Get size of PropertySheet
GetClientRect(&rect);
rect.left=rect.left+200;
rect.top =rect.bottom - 31;
rect.bottom =rect.bottom - 3;
rect.right=600;

dc.SetTextColor(RGB(255,255,255));
dc.DrawText(m_sstr[m_iAcitvePage],-1,&rect,DT_LEFT ¦ DT_SINGLELINE ¦ DT_NOPREFIX ¦ DT_NOCLIP ¦ DT_VCENTER ¦ DT_END_ELLIPSIS);

AfxMessageBox(m_sstr[m_iAcitvePage]);

}
...全文
64 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzlxk 2001-08-18
  • 打赏
  • 举报
回复
我也在搞这反面的东西.关注
joke100 2001-04-22
  • 打赏
  • 举报
回复
知道我的本意吗
我是要设定更新区域...

我的那个rect不是指画文字的rect,而是需要更新的整个区域(整个客户区椰,),要的是这个GetClientRect(&rect);...
你直接用画文字的rect,当然就只能一遍一遍一遍一遍的叠加了.






干脆不要计算剪载区了
dc.SelectClipRgn(NULL);
重画所有的部分得了...

swjj 2001-04-22
  • 打赏
  • 举报
回复
非常感谢:joke100的幽默,不过我还是未搞定,不知你试过没

而且我还可告诉你一更奇怪的现象

在另一对话框中,我用一函数写一图片,写完后再在其上写一txt文字,结果是,图象不刷新,文字一次次往上叠加,一塌浮土,但最小话后,再最大化后,图片文本都画了,用的都是同一函数呀??
joke100 2001-04-22
  • 打赏
  • 举报
回复


...
CPropertyPage::OnPaint(); // 别忘记调用基类的方法

...
CRgn rgn;
rgn.CreateRectRgn(rect.left, rect.top, rect.right, rect.bottom);
dc.SelectClipRgn(&rgn);
// 画啊画,画个大脚丫...
...
dc.SelectClipRgn(NULL);
...
// 剧终

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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