Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

191 lines
5.2 KiB

4 years ago
  1. /************************************************************************
  2. * *
  3. * BTNSEC.CPP *
  4. * *
  5. * Copyright (C) Microsoft Corporation 1993-1995 *
  6. * All Rights reserved. *
  7. * *
  8. ************************************************************************/
  9. #include "stdafx.h"
  10. #include "resource.h"
  11. #pragma hdrstop
  12. #include "hpjdoc.h"
  13. #include "btnsec.h"
  14. #ifdef _DEBUG
  15. #undef THIS_FILE
  16. static char THIS_FILE[] = __FILE__;
  17. #endif
  18. /////////////////////////////////////////////////////////////////////////////
  19. // CBtnSec dialog
  20. CBtnSec::CBtnSec(WSMAG FAR* pCallersWsmag, BOOL fWarn, CWnd* pParent)
  21. : CDialog(CBtnSec::IDD, pParent)
  22. {
  23. pwsmag = pCallersWsmag;
  24. fBackWarn = fWarn;
  25. ASSERT(pwsmag);
  26. /*
  27. * MFC doesn't think non-zero counts for a check box -- it must
  28. * explicitly set to TRUE or FASLE.
  29. */
  30. m_chk_contents = (pwsmag->wMax & FWSMAG_WMAX_CONTENTS) ? TRUE : FALSE;
  31. m_chk_search = (pwsmag->wMax & FWSMAG_WMAX_SEARCH) ? TRUE : FALSE;
  32. m_chk_topics = (pwsmag->wMax & FWSMAG_WMAX_TOPICS) ? TRUE : FALSE;
  33. m_chk_back = (pwsmag->wMax & FWSMAG_WMAX_BACK) ? TRUE : FALSE;
  34. m_chk_print = (pwsmag->wMax & FWSMAG_WMAX_PRINT) ? TRUE : FALSE;
  35. m_chk_find = (pwsmag->wMax & FWSMAG_WMAX_FIND) ? TRUE : FALSE;
  36. m_chk_browse = (pwsmag->wMax & FWSMAG_WMAX_BROWSE) ? TRUE : FALSE;
  37. /*
  38. * Just in case the user tried editing these by hand, or some
  39. * other project editor screwed up, let's make sure we don't have
  40. * both Topics and Contents/Search.
  41. */
  42. if (m_chk_topics)
  43. m_chk_contents = m_chk_search = FALSE;
  44. //{{AFX_DATA_INIT(CBtnSec)
  45. //}}AFX_DATA_INIT
  46. }
  47. void CBtnSec::DoDataExchange(CDataExchange* pDX)
  48. {
  49. CDialog::DoDataExchange(pDX);
  50. //{{AFX_DATA_MAP(CBtnSec)
  51. DDX_Check(pDX, IDC_CHECK_BTN_BACK, m_chk_back);
  52. DDX_Check(pDX, IDC_CHECK_BTN_CONTENTS, m_chk_contents);
  53. DDX_Check(pDX, IDC_CHECK_BTN_PRINT, m_chk_print);
  54. DDX_Check(pDX, IDC_CHECK_BTN_SEARCH, m_chk_search);
  55. DDX_Check(pDX, IDC_CHECK_BTN_TOPICS, m_chk_topics);
  56. DDX_Check(pDX, IDC_CHECK_BTN_FIND, m_chk_find);
  57. //}}AFX_DATA_MAP
  58. if (!pDX->m_bSaveAndValidate) { // initialization
  59. // Can't have both Topics and Contents/Search
  60. if (m_chk_topics) {
  61. ((CButton*) GetDlgItem(IDC_CHECK_BTN_CONTENTS))->
  62. EnableWindow(FALSE);
  63. ((CButton*) GetDlgItem(IDC_CHECK_BTN_SEARCH))->
  64. EnableWindow(FALSE);
  65. }
  66. else if (m_chk_contents || m_chk_search) {
  67. ((CButton*) GetDlgItem(IDC_CHECK_BTN_TOPICS))->
  68. EnableWindow(FALSE);
  69. }
  70. SetChicagoDialogStyles(m_hWnd);
  71. }
  72. else {
  73. // Remove all existing buttons
  74. pwsmag->wMax &=
  75. ~(FWSMAG_WMAX_BROWSE | FWSMAG_WMAX_CONTENTS |
  76. FWSMAG_WMAX_SEARCH | FWSMAG_WMAX_TOPICS |
  77. FWSMAG_WMAX_PRINT | FWSMAG_WMAX_BACK |
  78. FWSMAG_WMAX_FIND);
  79. // Add buttons according to checkboxes
  80. if (m_chk_contents)
  81. pwsmag->wMax |= FWSMAG_WMAX_CONTENTS;
  82. if (m_chk_search)
  83. pwsmag->wMax |= FWSMAG_WMAX_SEARCH;
  84. if (m_chk_topics)
  85. pwsmag->wMax |= FWSMAG_WMAX_TOPICS;
  86. if (m_chk_print)
  87. pwsmag->wMax |= FWSMAG_WMAX_PRINT;
  88. if (m_chk_find)
  89. pwsmag->wMax |= FWSMAG_WMAX_FIND;
  90. if (m_chk_browse)
  91. pwsmag->wMax |= FWSMAG_WMAX_BROWSE;
  92. if (m_chk_back) {
  93. pwsmag->wMax |= FWSMAG_WMAX_BACK;
  94. }
  95. }
  96. }
  97. BEGIN_MESSAGE_MAP(CBtnSec, CDialog)
  98. //{{AFX_MSG_MAP(CBtnSec)
  99. ON_BN_CLICKED(IDC_CHECK_BTN_CONTENTS, OnCheckBtnContents)
  100. ON_BN_CLICKED(IDC_CHECK_BTN_SEARCH, OnCheckBtnSearch)
  101. ON_BN_CLICKED(IDC_CHECK_BTN_TOPICS, OnCheckBtnTopics)
  102. //}}AFX_MSG_MAP
  103. ON_MESSAGE(WM_CONTEXTMENU, OnContextMenu)
  104. ON_MESSAGE(WM_HELP, OnHelp)
  105. END_MESSAGE_MAP()
  106. static const DWORD aHelpIds[] = {
  107. IDC_CHECK_BTN_CONTENTS, IDH_CHECK_BTN_CONTENTS,
  108. IDC_CHECK_BTN_SEARCH, IDH_CHECK_BTN_SEARCH,
  109. IDC_CHECK_BTN_TOPICS, IDH_CHECK_BTN_TOPICS,
  110. IDC_CHECK_BTN_PRINT, IDH_CHECK_BTN_PRINT,
  111. IDC_CHECK_BTN_BACK, IDH_CHECK_BTN_BACK,
  112. IDC_CHECK_BTN_FIND, IDH_CHECK_BTN_FIND,
  113. 0, 0
  114. };
  115. LRESULT CBtnSec::OnContextMenu(WPARAM wParam, LPARAM lParam)
  116. {
  117. ::WinHelp((HWND) wParam,
  118. AfxGetApp()->m_pszHelpFilePath,
  119. HELP_CONTEXTMENU, (DWORD) (LPVOID) aHelpIds);
  120. return 0;
  121. }
  122. LRESULT CBtnSec::OnHelp(WPARAM wParam, LPARAM lParam)
  123. {
  124. ::WinHelp((HWND) ((LPHELPINFO) lParam)->hItemHandle,
  125. AfxGetApp()->m_pszHelpFilePath,
  126. HELP_WM_HELP, (DWORD) (LPVOID) aHelpIds);
  127. return 0;
  128. }
  129. void CBtnSec::OnCheckBtnContents()
  130. {
  131. if (((CButton*) GetDlgItem(IDC_CHECK_BTN_CONTENTS))->GetCheck())
  132. ((CButton*) GetDlgItem(IDC_CHECK_BTN_TOPICS))->
  133. EnableWindow(FALSE);
  134. else
  135. ((CButton*) GetDlgItem(IDC_CHECK_BTN_TOPICS))->
  136. EnableWindow(TRUE);
  137. }
  138. void CBtnSec::OnCheckBtnSearch()
  139. {
  140. if (((CButton*) GetDlgItem(IDC_CHECK_BTN_SEARCH))->GetCheck())
  141. ((CButton*) GetDlgItem(IDC_CHECK_BTN_TOPICS))->
  142. EnableWindow(FALSE);
  143. else
  144. ((CButton*) GetDlgItem(IDC_CHECK_BTN_TOPICS))->
  145. EnableWindow(TRUE);
  146. }
  147. void CBtnSec::OnCheckBtnTopics()
  148. {
  149. if (((CButton*) GetDlgItem(IDC_CHECK_BTN_TOPICS))->GetCheck()) {
  150. ((CButton*) GetDlgItem(IDC_CHECK_BTN_CONTENTS))->
  151. EnableWindow(FALSE);
  152. ((CButton*) GetDlgItem(IDC_CHECK_BTN_SEARCH))->
  153. EnableWindow(FALSE);
  154. }
  155. else {
  156. ((CButton*) GetDlgItem(IDC_CHECK_BTN_CONTENTS))->
  157. EnableWindow(TRUE);
  158. ((CButton*) GetDlgItem(IDC_CHECK_BTN_SEARCH))->
  159. EnableWindow(TRUE);
  160. }
  161. }