窗口标题栏更新问题.给出正确思路者有分.
请问:
我用VC向导创建的MDI应用程序。如何改变主窗口和子窗口的默认窗体标题。我试着用:
this->GetParent()->SetWindowText("ViewText");
AfxGetMainWnd()->SetWindowText("FrameTest");
但在该窗口失去焦点时失效,且在窗口出现时标题栏有一闪(更新)的痕迹。
问题点数:40、回复次数:8Top
1 楼dzqsuper(数风流人物-还看打倒日本猪的人(抵制日货))回复于 2003-11-02 20:44:55 得分 0
窗口失去焦点时失效是什么意思
你是说就不能显示你设的标题吗?
还是你是别的什么意思?Top
2 楼gaoxiaospring(gaoxiaospring)回复于 2003-11-03 19:52:19 得分 0
谢谢!就是打开两个窗口时,只有一个窗口标题显示我后来设的ViewText标题。失去焦点的那个又还原成xxView1的默认名称.Top
3 楼keiven()回复于 2003-11-03 21:49:20 得分 10
那当然啦,你的代码本来就是这样设置的啊,this指针就是当前的窗口啊,也就是获得焦点的。当你把焦点移走的时候当然以前的那个窗口就失效了啊。如果要使所有的窗口都显示那个标题的话可以用GetAllView()来得到你所打开的窗口的视图,然后遍历视图,在遍历的过程中去设置标题就可以了。Top
4 楼gaoxiaospring(gaoxiaospring)回复于 2003-11-04 23:48:46 得分 0
谢谢!我是想,是不是有直接取代默认标题的方法。如果总是在默认标题和我设置的标题之间切换的话,标题栏就总有一闪的现象。Top
5 楼MilitaryMiniatures(++)回复于 2003-11-05 00:31:32 得分 20
很老的问题了。
重载CMDIFrameWnd::PreCreateWindow,如下:
BOOL CYourFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if (CMDIFrameWnd::PreCreateWindow(cs))
{
cs.style &= ~FWS_ADDTOTITLE;
return TRUE;
}
return FALSE;
}
然后,你就可以设置窗口标题了。Top
6 楼ablefirst(able)回复于 2003-11-05 09:07:36 得分 0
关注Top
7 楼cx0928(阳光)回复于 2003-11-05 10:11:26 得分 10
cs.style &= ~FWS_ADDTOTITLE;Top
8 楼gaoxiaospring(gaoxiaospring)回复于 2003-11-09 21:54:21 得分 0
子窗体的解决方法是在文档类中 SetTitle.Top




