Title bar text on CFrameWnd
Bruce -- bmiller@geographix.com
Tuesday, September 24, 1996
Environment: VC++ 4.1, Windows NT 4.0
I need to access the child window number that appears in titlebar (the
':1' in mydoc1:1).
so I can override the main portion but keep the window number. When I
do a GetWindowText
in ShowWindow or anytime beforehand, all I get is 'mydoc1'. I have not
disabled the FWS_ADDTOTITLE
style bit.
How can I get this info?
Bruce Miller
Lightning is God telling you to save your work.
Hugh Robinson -- hugh@ssihou.ssii.com
Thursday, September 26, 1996
[Mini-digest: 3 responses]
I was just looking at that code myself. Hopefully this will help...
First, MFC sets the frame title in the routine (have a look at the
source).
The number you are after is stored in the m_nWindow member, which is
initialized to -1 in CFrameWnd::CFrameWnd().
The test "if (m_nWindow > 0)" in CMDIChildWnd::OnUpdateFrameTitle shows
why you are not getting the window title you expect:
whenever m_nWindow is <=0, you will get "mydoc1".
I think your answer lies in *when* you look at the window title text...
m_nWindow is not updated until right at the end of
CFrameWnd::InitialUpdateFrame().
When CFrameWnd::InitialUpdateFrame() runs, it sends the wm_initialupdate
message to all your views (causing CView::OnInitialUpdate() to be
called). However, m_nWindow is still set to -1 until right at the end of
CFrameWnd::InitialUpdateFrame() , when the number is incremented by
calling CDocument::UpdateFrameCounts().
If you call GetWindowText() after InitialUpdateFrame() has finished, I
*think* you will be okay!
Now, what I would like to do is to be able to change the window title to
reflect some information about the view as well as the document. I
haven't figured that one out yet, though
Hugh Robinson
hugh@ssihou.ssii.com
----------
From: owner-mfc-l
Sent: Tuesday, September 24, 1996 7:48 PM
To: 'MFC list'
Subject: Title bar text on CFrameWnd
Environment: VC++ 4.1, Windows NT 4.0
I need to access the child window number that appears in titlebar (the
':1' in mydoc1:1).
so I can override the main portion but keep the window number. When I
do a GetWindowText
in ShowWindow or anytime beforehand, all I get is 'mydoc1'. I have not
disabled the FWS_ADDTOTITLE
style bit.
How can I get this info?
Bruce Miller
Lightning is God telling you to save your work.
-----From: "Krishna Prasad .P"
i tried your problem and found the GetWindowText() is returning
everything on the Title bar including that " : 1 ".In CView derived class
I handled WM_LBUTTONDOWN message .The code in that handler is like this :
CString str;
GetParent()->GetWindowText(str);
AfxMessageBox(str);
Try this , you are always welcome for further clarifications.
with regards,
P.V.S Krishna Prasad,
Bangalore.
-----From: Jim Barry
Check out the CFrameWnd::m_nWindow member and the function
CMDIChildWnd::OnUpdateFrameTitle. OnUpdateFrameTitle is virtual so you
should be able to override it to your satisfaction.
My approach would be simply to call CDocument::SetTitle() which updates
all the frame captions automatically.
- Jim
| Вернуться в корень Архива
|