标题栏重画问题

oxygen229229 2006-06-09 10:13:33
在一个多文档程序中,要实现自画标题栏,我在CMainFrame中重载OnNcPaint,使得标题栏重画成功。但是若新建一个文档后,程序在响应WM_NCPAINT后自画标题栏,但是在标题栏上标题文字显示区又被系统重画,成为Windows传统标题栏风格,不知道在WM_NCPAINT消息后,又响应了什么消息,使得系统重画,如何避免系统重画?(这个问题似乎只有多文档程序存在,单文档不存在此问题)
...全文
285 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
leafsax 2006-06-15
  • 打赏
  • 举报
回复
MDI 子窗口在创建,激活的时候会重新设置标题,重载一个 CMDIChildFrameWnd 让它不重新设置标题就可以了
oxygen229229 2006-06-15
  • 打赏
  • 举报
回复
是呀,现在问题就是要自绘标题栏,在进行文档操作,比如新建、最大、最小或者关闭文档时,标题栏在被自绘之后,又被系统重画,但在多文档相互之间切换激活时,只会响应WM_NCPAINT消息自绘完成,不会被系统重画。
希望达人到来,答疑解惑,以解燃眉之急!
oxygen229229 2006-06-15
  • 打赏
  • 举报
回复
楼上高人,重载CMDIChildFrameWnd,怎样让它不重新设置标题,请给点代码,提示,不胜感激
oxygen229229 2006-06-14
  • 打赏
  • 举报
回复
应该不是CMDIFrameWnd::OnNcPaint()的问题吧,因为不是标题栏全部重画,而仅仅是标题栏标题文字部分重画,左侧的图标以及右侧的最小、最大、关闭按钮图标都没有重画
Snow_Ice11111 2006-06-14
  • 打赏
  • 举报
回复
如果只是想自己改变标题,不想让窗口的标题内容随着新文档变来变去的话,可以在CMainFrame::PreCreateWindow中加上一行:cs.style &= ~FWS_ADDTOTITLE;
但要是你是自己在标题栏DC中自绘的话就麻烦了,不知道如何保证不被新文档改变?帮顶一下
oxygen229229 2006-06-14
  • 打赏
  • 举报
回复
如何解决这个问题呢?
Snow_Ice11111 2006-06-13
  • 打赏
  • 举报
回复
CMDIFrameWnd::OnNcPaint()在作崇。
oxygen229229 2006-06-13
  • 打赏
  • 举报
回复
怎么没有人回答呢?这个问题一直困扰着我,比较着急,拜托诸位高人了!

15,979

社区成员

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

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