Click here to Skip to main content
15,881,559 members
Articles / Desktop Programming / WTL
Article

Saving and restoring window appearance in WTL

Rate me:
Please Sign up or sign in to vote.
4.71/5 (9 votes)
27 Jun 2001 98.9K   1.4K   24   14
Simple, but useful classes to save/restore window appearance

Overview

Now you can use simple classes CWindowSettings, CReBarSettings, CSplitterSettings with your WTL projects to quickly save/restore window appearance (size, position). Settings are saved in registry. Additional properties saved for ReBar Control including bands sequence and position. So your window will appear next time when opened as user customized him.

How to use these classes in your WTL App

  1. Add two files RegSettings.h and RegSettings.cpp to your project.
  2. Add the header file RegSettings.h to the Frame or Window source code that will be using the classes.
  3. Load window settings from registry by adding the following code to the method that shows the window (the global Run function for a main frame):

    CWindowSettings ws;
    if(ws.Load("Software\\WTLApps\\DemoApp", "MainFrame"))
       ws.ApplyTo(wndMain, nCmdShow);
    else
       wndMain.ShowWindow(nCmdShow);
  4. Load rebar settings from registry by adding the following code to the OnCreate method of the frame class:

    CReBarSettings rs;
    CReBarCtrl rbc = m_hWndToolBar;
    if(rs.Load("Software\\WTLApps\\DemoApp", "ReBar"))
      rs.ApplyTo(rbc);
  5. Save window and rebar settings to registry by adding the following code to the OnDestroy method of the frame class:

    CWindowSettings ws;
    ws.GetFrom(*this);
    ws.Save("Software\\WTLApps\\DemoApp", "MainFrame");
    
    CReBarSettings rs;
    CReBarCtrl rbc = m_hWndToolBar;
    rs.GetFrom(rbc);
    rs.Save("Software\\WTLApps\\DemoApp", "ReBar");

    Also you can save/restore splitter position using CSplitterSettings class

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Web Developer
Russian Federation Russian Federation
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
GeneralSmall adjustment to CreateEx when using splitter bars Pin
Jonathan Davies16-Mar-09 6:00
Jonathan Davies16-Mar-09 6:00 
GeneralRe: Small adjustment to CreateEx when using splitter bars Pin
Magomed Abdurakhmanov16-Mar-09 23:50
Magomed Abdurakhmanov16-Mar-09 23:50 
GeneralRe: Small adjustment to CreateEx when using splitter bars Pin
Jonathan Davies17-Mar-09 2:48
Jonathan Davies17-Mar-09 2:48 
GeneralThis is really good Pin
beaverdown10-Mar-04 10:58
beaverdown10-Mar-04 10:58 
GeneralAnother suggestion Pin
yarp4-Jun-03 5:11
yarp4-Jun-03 5:11 
QuestionHow about.. Pin
30-May-01 12:22
suss30-May-01 12:22 
AnswerRe: How about.. Pin
Magomed Abdurakhmanov30-May-01 22:32
Magomed Abdurakhmanov30-May-01 22:32 
GeneralRe: How about.. Pin
31-May-01 6:00
suss31-May-01 6:00 
GeneralRe: How about.. Pin
[James Pullicino]3-Jun-01 22:31
[James Pullicino]3-Jun-01 22:31 
GeneralSuggestions Pin
Maximilian Hänel30-May-01 7:56
Maximilian Hänel30-May-01 7:56 
GeneralRe: Suggestions Pin
Magomed Abdurakhmanov30-May-01 22:38
Magomed Abdurakhmanov30-May-01 22:38 
GeneralRe: Suggestions Pin
Philippe Mori31-May-01 4:08
Philippe Mori31-May-01 4:08 
I mentionned in a previous message, I suggest using GetWindowPlacement and SetWindowPlacement as it will properly save the current state including the restored size if the window is maximized or minimized and it will also save the "restore to maximized" flag properly so that you or the user ca restore a minimized window to the previous state.

Generally it is good to have a minimum of validation to ensure that the window will be (at least partially) visible if the user changes its screen resolution (or edit the registry).

For application windows, if "start maximized" or "start minimized" was specified, it should have priority over saved settings. Also, if the window was saved minimized, you may want to start it to its last non-minimized state (You may call ShowWindow after SetWindowPlacement for that).


Philippe
GeneralRe: Suggestions Pin
Magomed Abdurakhmanov1-Jun-01 5:56
Magomed Abdurakhmanov1-Jun-01 5:56 
GeneralRe: Suggestions Pin
Maximilian Hänel2-Jun-01 12:16
Maximilian Hänel2-Jun-01 12:16 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.