Solved

Set title text of CPropertyPage in wizard at runtime

Posted on 2006-11-29
9
1,592 Views
Last Modified: 2013-11-20
Ah hello.

I have a wizard based on CPropertyPage.  The pages of my app look very similar to that shown at

http://www.codeproject.com/property/Conquering_Wizard97/Fig-5b.jpg

Now, if you look at this image, you will see it has the text "Title" and "Sub Title".  This has been set up in the constructor like so

CSecondPage::CSecondPage()
    : CPropertyPage(CSecondPage::IDD)
{
    m_psp.dwFlags |= PSP_DEFAULT|PSP_USEHEADERTITLE|PSP_USEHEADERSUBTITLE;
    m_psp.pszHeaderTitle = _T("Title");
    m_psp.pszHeaderSubTitle = _T("And subtitle");
}

Now, the simple question: I need to be able to change this text at runtime, but cannot see at all a method of allowing me to do so.

Does anyone know how ?

TIA
0
Comment
Question by:mrwad99
  • 3
  • 3
  • 2
  • +1
9 Comments
 
LVL 44

Accepted Solution

by:
AndyAinscow earned 125 total points
Comment Utility
The only way I can think of would be to iterate through the child controls of the sheet, find the one with the text you want to replace and then replace that window text with the new text.

(Not tried it so it may not function correctly)
0
 
LVL 1

Expert Comment

by:ITSpgrmr
Comment Utility
I would do something like adding a function to CSecondPage to set the Header.  Like this(the same for pszHeaderSubTitle) :
void CSecondPage::ChangeHeader(LPSTR pNewHeader)
{
      m_psp.pszHeaderTitle = _T(pNewHeader);
}
 Then you can change the variable like this:
m_pgSecond.ChangeHeader("NewHeader");
0
 
LVL 19

Author Comment

by:mrwad99
Comment Utility
ITSpgrmr

Thanks for posting.  However, if it was that easy, I would not need to post.  It appears that the m_psp structure is used somehow that I cannot find by tracing stepping into and out of my code.  Once it is set up in the constructor, whatever is reading the values from it is not being called to read them again.  This is why your suggestion does not work.

Andy

That is possible, but an outrageous hack ( ;0) ) that I would like to avoid if at all possible.

Does anyone know where the m_psp variable is read and used ?

Thanks.
0
 
LVL 44

Expert Comment

by:AndyAinscow
Comment Utility
I agree - hack (but if it works only a few lines of simple code).  Why the MFC doesn't seem to support it I can't quite understand.

m_psp usage - I think it is *only* used when the page is created.
0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 
LVL 19

Author Comment

by:mrwad99
Comment Utility
Not what I was hoping for, but it will do.

Thanks Andy.
0
 
LVL 44

Expert Comment

by:AndyAinscow
Comment Utility
Sometimes we have to be satisfied with what works ;-)
0
 
LVL 11

Expert Comment

by:alexcohn
Comment Utility
I am sorry to disappoint, but unfortunately the wizard page does not contain a child for the header and subheader. It's not a coincidence that these features depend on IE version installed: they are rendered via IE mechanisms, bypassing child windows.
0
 
LVL 19

Author Comment

by:mrwad99
Comment Utility
Heh, quite an old question this one... thanks for the follow up though alexcohn!
0
 
LVL 11

Expert Comment

by:alexcohn
Comment Utility
I was looking for the solution, found this thread and saw that Andy suggested some way that I already had rejected. I have settled for brute-force approach: I create two STATIC controls on the PropertySheet surface, set the fonts and positions exactly as the Wizard does for header and subheader, and make sure they are drawn with transparent background.
0

Featured Post

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
repeateFront java challenge 31 86
maven archtype selection in eclipse 1 51
Window placement 17 64
NotAlone Challenge 20 70
Introduction: Dynamic window placements and drawing on a form, simple usage of windows registry as a storage place for information. Continuing from the first article about sudoku.  There we have designed the application and put a lot of user int…
If you use Adobe Reader X it is possible you can't open OLE PDF documents in the standard. The reason is the 'save box mode' in adobe reader X. Many people think the protected Mode of adobe reader x is only to stop the write access. But this fe…
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
This video demonstrates how to create an example email signature rule for a department in a company using CodeTwo Exchange Rules. The signature will be inserted beneath users' latest emails in conversations and will be displayed in users' Sent Items…

763 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now