Moving the Standard Buttons

Your method for moving _standard_ buttons is fine - if they are all that needs moving (eg. you forgot ID_HELP). But this is not much good if you've added your own controls to the property sheet and need to move them too. (for example, I have a couple of different groups of pages that I want to select between, rather than having lots and lots of tabs all at once, so I have a combo box at the bottom of my property sheet that selects the group of pages I want).

A better sort of solution is to go thru the child window list and move all children (except perhaps the tab control) Here is code that moves all the controls (other than the tab itself) by a given dx and dy..

     // calculate dx and dy to move the controls
     // this could correspond to an increase in sheet size
     CTabCtrl* pTabCtrl = GetTabControl();
     for (CWnd* pChild = GetWindow(GW_CHILD); pChild; pChild =
			pChild->GetNextWindow(GW_HWNDNEXT)) 
     {
          if (pChild == pTabCtrl) continue;
          CRect rectControlWnd;
          pChild->GetWindowRect(rectControlWnd);
          ScreenToClient(rectControlWnd);
          rectControlWnd.top.OffsetRect(dx,dy);
          pChild->MoveWindow(rectControlWnd);
     }

Because I use this code in a CPropertySheet-derived class that I use to base my own property sheets on, I don't know in advance exactly what control are going to be on the sheet (because some of my other property sheet classes add extra controls). This way ALL my control move to make room.

Another improvement could be to compare the control position of the control to the tab control and only move those controls which are, say, below the tab.



Comments

  • Moving the Standard Buttons 2

    Posted by Legacy on 11/23/2001 12:00am

    Originally posted by: Andy Glenister

    how are dx and dy calculated?
    rectControlWnd.top.OffsetRect(dx, dy); does not compile

    I appear to be missing the meaningful code for this solution.

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Companies undertaking an IT project need to find the right balance between cost and functionality. It's important to start by determining whether to build a solution from scratch, buy an out-of-the-box solution, or a combination of both. In reality, most projects will require some system tailoring to meet business requirements. Decision-makers must understand how much software development is enough and craft a detailed implementation plan to ensure the project's success. This white paper examines the different …

  • On-demand Event Event Date: February 12, 2015 The evolution of systems engineering with the SysML modeling language has resulted in improved requirements specification, better architectural definition, and better hand-off to downstream engineering. Agile methods have proven successful in the software domain, but how can these methods be applied to systems engineering? Check out this webcast and join Bruce Powel Douglass, author of Real-Time Agility, as he discusses how agile methods have had a tremendous …

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date