3 /////////////////////////////////////////////////////////////////////////////
5 // Copyright (c) 2002 Iain Murray, Inference Group, Cavendish, Cambridge.
7 /////////////////////////////////////////////////////////////////////////////
12 #include "../resource.h"
14 // Track memory leaks on Windows to the line that new'd the memory
17 #define DEBUG_NEW new( _NORMAL_BLOCK, THIS_FILE, __LINE__ )
20 static char THIS_FILE
[] = __FILE__
;
24 void CMenu::SetStatus(UINT Command
, bool Grayed
, bool Checked
) {
26 Options
.Grayed
= Grayed
;
27 Options
.Checked
= Checked
;
28 m_Items
[Command
] = Options
;
31 bool CMenu::GetCheck(UINT Command
) {
32 return m_Items
[Command
].Checked
;
35 void CMenu::SortOut(HMENU Menu
) {
36 // Clipboard special case (not a saved option - depends on
37 // current state of Windows's clipboard)
38 if(IsClipboardFormatAvailable(CF_TEXT
))
39 SetStatus(ID_EDIT_PASTE
, false, false);
41 SetStatus(ID_EDIT_PASTE
, true, false);
43 int NumberItems
= GetMenuItemCount(Menu
);
45 for(int i
= 0; i
< NumberItems
; i
++) {
46 UINT MenuItem
= GetMenuItemID(Menu
, i
);
48 // If we don't know, do nothing
49 if(m_Items
.find(MenuItem
) == m_Items
.end())
52 if(m_Items
[MenuItem
].Checked
)
53 CheckMenuItem(Menu
, MenuItem
, MF_CHECKED
);
55 CheckMenuItem(Menu
, MenuItem
, MF_UNCHECKED
);
57 if(m_Items
[MenuItem
].Grayed
)
58 EnableMenuItem(Menu
, MenuItem
, MF_GRAYED
);
60 EnableMenuItem(Menu
, MenuItem
, MF_ENABLED
);