CMFCCmdUsageCount Class
Tracks the usage count of Windows messages, such as when the user selects an item from a menu.
Syntax
class CMFCCmdUsageCount : public CObject
Members
Public Constructors
Name | Description |
---|---|
CMFCCmdUsageCount::CMFCCmdUsageCount |
Default constructor. |
CMFCCmdUsageCount::~CMFCCmdUsageCount |
Destructor. |
Public Methods
Name | Description |
---|---|
CMFCCmdUsageCount::AddCmd | Increments by one the counter that is associated with the given command. |
CMFCCmdUsageCount::GetCount | Retrieves the usage count that is associated with the given command ID. |
CMFCCmdUsageCount::HasEnoughInformation | Determines whether this object has collected the minimum amount of tracking data. |
CMFCCmdUsageCount::IsFreqeuntlyUsedCmd | Determines whether the given command is frequently used. |
CMFCCmdUsageCount::Reset | Clears the usage count of all commands. |
CMFCCmdUsageCount::Serialize | Reads this object from an archive or writes it to an archive. (Overrides CObject::Serialize.) |
CMFCCmdUsageCount::SetOptions | Sets the values of shared CMFCCmdUsageCount class data members. |
Data Members
Name | Description |
---|---|
m_CmdUsage |
A CMap object that maps commands to their usage counts. |
m_nMinUsagePercentage |
The minimum usage percentage for a command to be frequently used. |
m_nStartCount |
The start counter that is used to determine whether this object has collected the minimum amount of tracking data. |
m_nTotalUsage |
The count of all tracked commands. |
Remarks
The CMFCCmdUsageCount
class maps each numeric Windows message identifier to a 32-bit unsigned integer counter. CMFCToolBar
uses this class to display frequently-used toolbar items. For more information about CMFCToolBar
, see CMFCToolBar Class.
You can persist CMFCCmdUsageCount
class data between runs of your program. Use the CMFCCmdUsageCount::Serialize method to serialize class member data and the CMFCCmdUsageCount::SetOptions method to set shared member data.
Inheritance Hierarchy
Requirements
Header: afxcmdusagecount.h
CMFCCmdUsageCount::AddCmd
Increments by one the counter that is associated with the given command.
void AddCmd(UINT uiCmd);
Parameters
uiCmd
[in] Specifies the command counter to increment.
Remarks
This method adds a new entry to the map structure of command counts, m_CmdUsage
, if the entry does not already exist.
This method does nothing in the following cases:
The toolbar framework is in customization mode (the CMFCToolBar::IsCustomizeMode method returns a nonzero value).
The command refers to a submenu or menu separator ( uiCmd equals 0 or -1).
uiCmd refers to a standard command (the global
IsStandardCommand
function returns a nonzero value).
CMFCCmdUsageCount::GetCount
Retrieves the usage count that is associated with the given command ID.
UINT GetCount(UINT uiCmd) const;
Parameters
uiCmd
[in] The ID of the command counter to retrieve.
Return Value
The usage count that is associated with the given command ID.
CMFCCmdUsageCount::HasEnoughInformation
Determines whether this object has received the minimum amount of tracking data.
BOOL HasEnoughInformation() const;
Return Value
Nonzero if this object has received the minimum amount of tracking data; otherwise 0.
Remarks
This method returns a nonzero value if the total count, m_nTotalUsage
, of all tracked commands is equal to or larger than the initial count, m_nStartCount
. By default, the framework sets the initial count 0. You can override this value by using the CMFCCmdUsageCount::SetOptions method.
This method is used by CMFCMenuBar::IsShowAllCommands to determine whether to show all available menu commands.
CMFCCmdUsageCount::IsFreqeuntlyUsedCmd
Determines whether the given command is frequently used.
BOOL IsFreqeuntlyUsedCmd(UINT uiCmd) const;
Parameters
uiCmd
[in] Specifies the command to check.
Return Value
Nonzero if the command is frequently used; otherwise 0.
Remarks
This method returns 0 if the total command usage, m_nTotalUsage
, is 0. Otherwise, this method returns nonzero if the percentage of which the specified command is used is larger than the minimum percentage, m_nMinUsagePercentage
. By default, the framework sets the minimum percentage to 5. You can override this value by using the CMFCCmdUsageCount::SetOptions method. If the minimum percentage is 0, this method returns nonzero if the specified command count is larger than 0.
CMFCToolBar::IsCommandRarelyUsed uses this method to determine whether a command is rarely used.
CMFCCmdUsageCount::Reset
Clears the usage count of all commands.
void Reset();
Remarks
Call this method to clear all entries from the map structure of command counts, m_CmdUsage
, and to reset the total command usage, m_nTotalUsage
, counter to 0.
CMFCCmdUsageCount::Serialize
Reads this object from an archive, or writes it to an archive.
virtual void Serialize(CArchive& ar);
Parameters
ar
[in] A CArchive
object to serialize from or to.
Remarks
This method serializes the map structure of command counts, m_CmdUsage
, and the total command usage, m_nTotalUsage
, counter from or to the specified archive.
For serialization examples, see Serialization: Serializing an Object.
CMFCCmdUsageCount::SetOptions
Sets the values of shared CMFCCmdUsageCount
class data members.
static BOOL __stdcall SetOptions(
UINT nStartCount,
UINT nMinUsagePercentage);
Parameters
nStartCount
[in] The new initial count of all tracked commands.
nMinUsagePercentage
[in] The new minimum usage percentage.
Return Value
TRUE if the method succeeds, FALSE if the nMinUsagePercentage parameter is larger than or equal to 100.
Remarks
This method sets the shared CMFCCmdUsageCount
class data members m_nStartCount
and m_nMinUsagePercentage
to nStartCount and nMinUsagePercentage, respectively. m_nStartCount
is used by the CMFCCmdUsageCount::HasEnoughInformation method to determine whether this object has collected the minimum amount of tracking data. m_nMinUsagePercentage
is used by the CMFCCmdUsageCount::IsFreqeuntlyUsedCmd method to determine whether a given command is frequently used.
In Debug builds this method generates an assertion failure if the nMinUsagePercentage parameter is larger than or equal to 100.