CustomizeDialog.cpp
上传用户:shuini
上传日期:2007-02-05
资源大小:103k
文件大小:6k
源码类别:

工具条

开发平台:

Visual C++

  1.  /////////////////////////////////////////////////////////////////////////////
  2. // CustomizeDialog.cpp: implementation of the CCustomizeDialog class.
  3. //
  4. /////////////////////////////////////////////////////////////////////////////
  5. // Copyright (c) 2001 by Nikolay Denisov. All rights reserved.
  6. //
  7. // This code is free for personal and commercial use, providing this 
  8. // notice remains intact in the source files and all eventual changes are
  9. // clearly marked with comments.
  10. //
  11. // You must obtain the author's consent before you can include this code
  12. // in a software library.
  13. //
  14. // No warrantee of any kind, express or implied, is included with this
  15. // software; use at your own risk, responsibility for damages (if any) to
  16. // anyone resulting from the use of this software rests entirely with the
  17. // user.
  18. //
  19. // Please email bug reports, bug fixes, enhancements, requests and
  20. // comments to: nick@actor.ru
  21. /////////////////////////////////////////////////////////////////////////////
  22. #include "stdafx.h"
  23. #include "CustomizeDialog.h"
  24. #include "ToolBarEx.h"
  25. #ifdef _DEBUG
  26. #define new DEBUG_NEW
  27. #undef THIS_FILE
  28. static char THIS_FILE[] = __FILE__;
  29. #endif
  30. /////////////////////////////////////////////////////////////////////////////
  31. // CCustomizeDialog dialog
  32. static const int cxPadding = 3;
  33. static const int cyPadding = 3;
  34. IMPLEMENT_DYNAMIC( CCustomizeDialog, CWnd )
  35. CCustomizeDialog::CCustomizeDialog( CToolBarEx* pToolBar,
  36.                                     TextOptions TextOptions,
  37.                                     IconOptions IconOptions )
  38. {
  39. ASSERT_VALID(pToolBar);
  40.     m_pToolBar = pToolBar;
  41. m_eTextOptions=TextOptions;
  42. m_eIconOptions=IconOptions;
  43. }
  44. /////////////////////////////////////////////////////////////////////////////
  45. // Operations
  46. void CCustomizeDialog::SetTextOptions( TextOptions eTextOptions)
  47. {
  48.     m_eTextOptions = eTextOptions;
  49. if (IsWindow(m_wndTextOptions.m_hWnd))
  50.   m_wndTextOptions.SetCurSel(eTextOptions);
  51.     
  52. }
  53. void CCustomizeDialog::SetIconOptions( IconOptions eIconOptions)
  54. {
  55.     m_eIconOptions = eIconOptions;
  56. if (IsWindow(m_wndIconOptions.m_hWnd))
  57. {
  58.   m_wndIconOptions.SetCurSel(eIconOptions);   
  59. }
  60. }
  61. /////////////////////////////////////////////////////////////////////////////
  62. // CCustomizeDialog message handlers
  63. BEGIN_MESSAGE_MAP(CCustomizeDialog, CWnd)
  64.     //{{AFX_MSG_MAP(CCustomizeDialog)
  65. //}}AFX_MSG_MAP
  66.     ON_MESSAGE( WM_INITDIALOG, OnInitDialog )
  67.     ON_CBN_SELENDOK(IDC_CB_TEXTOPTIONS, OnTextOptions)
  68.     ON_CBN_SELENDOK(IDC_CB_ICONOPTIONS, OnIconOptions)
  69. END_MESSAGE_MAP()
  70. LRESULT CCustomizeDialog::OnInitDialog( WPARAM /*wParam*/, LPARAM /*lParam*/ )
  71. {
  72.     CRect rcClient;
  73.     GetClientRect( rcClient );
  74.     CRect rcWindow;
  75.     GetWindowRect( rcWindow );
  76. // create  the windows // sizes are hardcoded //ugly way
  77. CRect  rc;
  78. CFont *pFont =GetFont();
  79. ASSERT_VALID(pFont);
  80.   
  81. //static wnd
  82. rc=CRect(4,2,49,8);
  83. MapDialogRect(m_hWnd,&rc);
  84. rc.left+=rcClient.left;
  85. rc.top+=rcClient.bottom;
  86. VERIFY(m_wndTextOptionsText.Create(_T("Te&xt options:"),WS_CHILD|WS_VISIBLE,rc,this));
  87.   m_wndTextOptionsText.SetFont(pFont);
  88. m_wndTextOptionsText.SetWindowPos(NULL,rc.left,rc.top,rc.right,rc.bottom,SWP_NOZORDER|SWP_NOACTIVATE);
  89. //Text options
  90. rc=CRect(52,0,123,50);
  91. MapDialogRect(m_hWnd,&rc);
  92. rc.left+=rcClient.left;
  93. rc.top+=rcClient.bottom;
  94. VERIFY(m_wndTextOptions.Create(WS_CHILD |WS_VISIBLE |CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP,rc,this, IDC_CB_TEXTOPTIONS));
  95.   m_wndTextOptions.SetFont(pFont);
  96. m_wndTextOptions.AddString(_T("Show Text Labels"));
  97. m_wndTextOptions.AddString(_T("Selective Text on Right"));
  98. m_wndTextOptions.AddString(_T("No Text Labels"));
  99. SetTextOptions(m_eTextOptions);
  100. m_wndTextOptions.SetWindowPos(NULL,rc.left,rc.top,rc.right,rc.bottom,SWP_NOZORDER|SWP_NOACTIVATE);
  101.  
  102. //static wnd
  103. rc=CRect(4,20,49,8);
  104. MapDialogRect(m_hWnd,&rc);
  105. rc.left+=rcClient.left;
  106. rc.top+=rcClient.bottom;
  107. VERIFY(m_wndIconOptionsText.Create(_T("Ico&n options:"),WS_CHILD|WS_VISIBLE,rc,this));
  108. m_wndIconOptionsText.SetFont(pFont);
  109. m_wndIconOptionsText.SetWindowPos(NULL,rc.left,rc.top,rc.right,rc.bottom,SWP_NOZORDER|SWP_NOACTIVATE);
  110. //icon combo
  111. rc=CRect(52,18,123,50);
  112. MapDialogRect(m_hWnd,&rc);
  113. rc.left+=rcClient.left;
  114. rc.top+=rcClient.bottom;
  115. VERIFY(m_wndIconOptions.Create(WS_CHILD |WS_VISIBLE |CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP,rc,this, IDC_CB_ICONOPTIONS));
  116.   m_wndIconOptions.SetFont(pFont);
  117. m_wndIconOptions.AddString(_T("Small Icons"));
  118. m_wndIconOptions.AddString(_T("Large Icons"));
  119. SetIconOptions(m_eIconOptions);
  120. m_wndIconOptions.SetWindowPos(NULL,rc.left,rc.top,rc.right,rc.bottom,SWP_NOZORDER|SWP_NOACTIVATE);
  121. // final rect
  122. rc=CRect(0,0,179,34);
  123. MapDialogRect(m_hWnd,&rc);
  124. rc.left+=rcClient.left;
  125. rc.top+=rcClient.bottom;
  126.  
  127.     // Increase height of Customize Toolbar dialog accordingly
  128.     rcWindow.bottom += (rc.bottom+cyPadding);
  129.     VERIFY( SetWindowPos( 0, 0, 0, rcWindow.Width(), rcWindow.Height(),
  130.         SWP_NOZORDER | SWP_NOMOVE ) );
  131. //Set Title
  132. ASSERT(m_pToolBar);
  133. CString strName,strOrgName;
  134. m_pToolBar->GetWindowText(strName);
  135. if (!strName.IsEmpty())
  136. {
  137. GetWindowText(strOrgName);
  138. SetWindowText(strOrgName + _T(" - ")+ strName);
  139. }
  140.     return Default();
  141. }
  142. void CCustomizeDialog::OnTextOptions()
  143. {
  144. m_eTextOptions=(TextOptions)m_wndTextOptions.GetCurSel();
  145. m_pToolBar->SetTextOptions(( TextOptions )m_eTextOptions,TRUE);
  146. }
  147. void CCustomizeDialog::OnIconOptions()
  148. {
  149. m_eIconOptions=(IconOptions)m_wndIconOptions.GetCurSel();
  150. }
  151. LRESULT CCustomizeDialog::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
  152. {
  153. // TODO: Add your specialized code here and/or call the base class
  154. if (message==WM_HELP)
  155. {
  156.   LPHELPINFO lphi = (LPHELPINFO) lParam; 
  157.   if ( (lphi->iCtrlId != IDC_CB_TEXTOPTIONS) && (lphi->iCtrlId != IDC_CB_ICONOPTIONS) )
  158. return DefWindowProc(message,wParam,lParam);
  159. }
  160. return CWnd::WindowProc(message, wParam, lParam);
  161. }