A Snap Size Dialog Class

While creating a fairly complex resizable dialog application, I became annoyed with the amount the controls flickered while being sized. What I wanted was something along the lines of the rubber band sizing available with Plus!, where the contents of the application are sized only when the dragging action is finished.

The solution I came up with sizes the contents of the dialog only when the dragging action is finished, whether or not "Size window contents while dragging" is checked in the Plus! settings.

  1. Add SnapDlg.h to your StdAfx.h.
  2. Derive your dialog class from CSnapDlg.
  3. Change your dialog's constructor to call CSnapDlg's constructor:
  4. CSnapDialogDlg::CSnapDialogDlg(CWnd* pParent /*=NULL*)
       : CSnapDlg(CSnapDialogDlg::IDD, pParent)
    
  5. Change your dialog's message map to flow through CSnapDlg:
  6. BEGIN_MESSAGE_MAP(CSnapDialogDlg, CSnapDlg)
  7. Overload the virtual function SizeDialog() to size your dialog's contents.
  8. Make sure your dialog's OnSize, OnSizing, OnInitDialog, and OnCaptureChanged handlers call the member functions of CSnapDlg instead of CDialog.

Download demo project - 32 KB

Download source - 2 KB



About the Author

Mike Scanlon

Visit http://mike.pricklysoft.com.

Comments

  • Sizing dialogs

    Posted by Legacy on 05/13/2002 12:00am

    Originally posted by: Davon

    This is exactly what I was looking for. Thanks.

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

Top White Papers and Webcasts

  • When individual departments procure cloud service for their own use, they usually don't consider the hazardous organization-wide implications. Read this paper to learn best practices for setting up an internal, IT-based cloud brokerage function that service the entire organization. Find out how this approach enables you to retain top-down visibility and control of network security and manage the impact of cloud traffic on your WAN.

  • 2015 is shaping up to include some of the best innovation the mobile industry has ever experienced. There will be new discoveries, new technologies, and existing giants in the vendor space will test the limits to increase productivity while ensuring the confidentiality, integrity, and availability of data. While all of this innovation is taking place, enterprises must continue to remain vigilant as cybercriminals continue to look for weaknesses to steal company data, and intellectual property by infiltrating …

Most Popular Programming Stories

More for Developers

RSS Feeds

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