cdxCSizingDialog.cpp
上传用户:cbxyz2008
上传日期:2007-01-02
资源大小:45k
文件大小:3k
源码类别:

Static控件

开发平台:

Visual C++

  1. // cdxCSizingDialog.cpp: implementation of the cdxCSizingPropSheet class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "cdxCSizingDialog.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // cdxCSizingDialog dialog
  13. /////////////////////////////////////////////////////////////////////////////
  14. IMPLEMENT_DYNAMIC(cdxCSizingDialog,CDialog);
  15. /////////////////////////////////////////////////////////////////////////////
  16. // construction
  17. /////////////////////////////////////////////////////////////////////////////
  18. BEGIN_MESSAGE_MAP(cdxCSizingDialog, CDialog)
  19. //{{AFX_MSG_MAP(cdxCSizingDialog)
  20. ON_WM_SIZE()
  21. ON_WM_GETMINMAXINFO()
  22. //}}AFX_MSG_MAP
  23. END_MESSAGE_MAP()
  24. /////////////////////////////////////////////////////////////////////////////
  25. // cdxCSizingDialog message handlers
  26. /////////////////////////////////////////////////////////////////////////////
  27. /*
  28.  * set up dialog; this function MUST be called before you add any controls
  29.  * NOTE: The real OnInitDialog() virtual function calls this one by using
  30.  * DEF_STRETCH as a iAddSzPercent.
  31.  * This value automatically grows the size of the dialog (therefore it
  32.  * won't appear in minimum height what I assume to be worse looking).
  33.  * Call it with a value of 0 to make it as small as you designed it
  34.  * in the resource editor.
  35.  */
  36. BOOL cdxCSizingDialog::OnInitDialog(UINT iAddSzPercent, Freedom fd, bool bMkIcon)
  37. {
  38. BOOL b = CDialog::OnInitDialog();
  39. ASSERT(::IsWindow(m_hWnd));
  40. cdxCDynamicControlsManager::DoInitWindow(*this,fd,bMkIcon);
  41. if(iAddSzPercent)
  42. StretchWindow((int)iAddSzPercent);
  43. return b;
  44. }
  45. /*
  46.  * perform window sizing and adaption of controls
  47.  */
  48. void cdxCSizingDialog::OnSize(UINT nType, int cx, int cy) 
  49. {
  50. CDialog::OnSize(nType, cx, cy);
  51. cdxCDynamicControlsManager::DoOnSize(nType,cx,cy);
  52. CRect rect;
  53. GetClientRect(&rect);
  54. }
  55. /*
  56.  * tell system what minimum size we have
  57.  */
  58. void cdxCSizingDialog::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) 
  59. {
  60. CDialog::OnGetMinMaxInfo(lpMMI);
  61. cdxCDynamicControlsManager::DoOnGetMinMaxInfo(lpMMI);
  62. }
  63. /////////////////////////////////////////////////////////////////////////////
  64. // Additional utilities
  65. /////////////////////////////////////////////////////////////////////////////
  66. /*
  67.  * pump all messages for this window
  68.  * call it during lengthy operations to ensure
  69.  * sizing takes place
  70.  */
  71. void cdxCSizingDialog::PumpMessages(void)
  72. {
  73. // Must call Create() before using the dialog
  74. ASSERT(::IsWindow(m_hWnd));
  75. MSG msg;
  76. // Handle dialog messages for all windows 
  77. while(::PeekMessage(&msg, m_hWnd, 0, 0, PM_REMOVE))
  78. {
  79. if(!CDialog::IsDialogMessage(&msg)) // not used by our dialog
  80. {
  81. ::TranslateMessage(&msg); // pass to application
  82. ::DispatchMessage(&msg);  
  83. }
  84. }
  85. }