| C & C++ Programming | MFC Programming | Download | Site Index |


 

 

 

 

MFC Programming Supplementary note:

Structures, Styles, Callbacks, and Message Maps

 

 

 

 

What do we have in this Module?

  1. Structures Used by MFC

  2. Styles Used by MFC

  3. MFC Styles

  4. Callback Functions Used by MFC

  5. Message Maps

  6. Message Map Macros

  7. Message-Map Declaration and Demarcation Macros

  8. Message-Mapping Macros

  9. Message-Map Range Macros

This section documents the structures, styles, and callback functions used by the Microsoft Foundation Class Library and the MFC message maps.

 

Structures Used by MFC

 

The following table lists structures that are called from various member functions.

 

ABC Structure

HSE_VERSION_INFO Structure

ABCFLOAT Structure

HTTP_FILTER_AUTHENT Structure

AFX_EXTENSION_MODULE Structure

HTTP_FILTER_CONTEXT Structure

BITMAP Structure

HTTP_FILTER_LOG Structure

BITMAPINFO Structure

HTTP_FILTER_PREPROC_HEADERS Structure

CDaoDatabaseInfo Structure

HTTP_FILTER_RAW_DATA Structure

CDaoErrorInfo Structure

HTTP_FILTER_URL_MAP Structure

CDaoFieldInfo Structure

HTTP_FILTER_VERSION Structure

CDaoIndexFieldInfo Structure

LINGER Structure

CDaoIndexInfo Structure

LOGBRUSH Structure

CDaoParameterInfo Structure

LOGPEN Structure

CDaoQueryDefInfo Structure

MEASUREITEMSTRUCT Structure

CDaoRelationFieldInfo Structure

MINMAXINFO Structure

CDaoRelationInfo Structure

MSG Structure

CDaoTableDefInfo Structure

NCCALCSIZE_PARAMS Structure

CDaoWorkspaceInfo Structure

PAINTSTRUCT Structure

CODBCFieldInfo Structure

POINT Structure

COLORADJUSTMENT Structure

RECT Structure

COMPAREITEMSTRUCT Structure

RGNDATA Structure

CREATESTRUCT Structure

SOCKADDR Structure

DELETEITEMSTRUCT Structure

SOCKADDR_IN Structure

DEVNAMES Structure

SYSTEMTIME Structure

DHtmlUrlEventMapEntry Structure

WINDOWPLACEMENT Structure

DRAWITEMSTRUCT Structure

WINDOWPOS Structure

EXTENSION_CONTROL_BLOCK Structure

WSADATA Structure

FILETIME Structure

XFORM Structure

 

Table 1.

 

 

Styles Used by MFC

 

Use the following styles when you create the corresponding MFC object. In most cases, these styles are set in the dwStyle parameter of the class Create() function.

 

MFC Styles

 

Style

Description

Button styles

Applies to CButton Class objects, such as radio buttons, check boxes and pushbuttons. Specify a combination of styles in the dwStyle parameter of CButton::Create.

Combo-box styles

Applies to CComboBox Class objects. Specify a combination of styles in the dwStyle parameter of CComboBox::Create.

Edit styles

Applies to CEdit Class objects. Specify a combination of styles in the dwStyle parameter of CEdit::Create.

Frame-window styles

Applies to CFrameWnd Class objects. Specify a combination of styles in the dwStyle parameter of CFrameWnd::Create.

List-box styles

Applies to CListBox Class objects. Specify a combination of styles in the dwStyle parameter of CListBox::Create.

Message-box styles

Applies to AfxMessageBox items. Specify a combination of styles in the nType parameter of AfxMessageBox.

Scroll-bar styles

Applies to CScrollBar Class objects. Specify a combination of styles in the dwStyle parameter of CScrollBar::Create.

Static styles

Applies to CStatic Class objects. Specify a combination of styles in the dwStyle parameter of CStatic::Create.

Window styles

Applies to CWnd Class objects. Specify a combination of styles in the dwStyle parameter of CWnd::Create or CWnd::CreateEx.

Extended window styles

Applies to CWnd Class objects. Specify a combination of styles in the dwExStyle parameter of CWnd::CreateEx.

 

Table 2.

 

Callback Functions Used by MFC

 

Three callback functions appear in the Microsoft Foundation Class Library. A description of callback functions that are passed to CDC::EnumObjects, CDC::GrayString, and CDC::SetAbortProc follows this topic. Note that all callback functions must trap MFC exceptions before returning to Windows, since exceptions cannot be thrown across callback boundaries.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Message Maps

 

This section of the reference lists all message mapping macros and all CWnd message-map entries along with the corresponding member function prototypes:

 

Category

Description

WM_COMMAND Message Handler

Handles WM_COMMAND messages generated by user menu selections or menu access keys.

Child Window Notification Message Handlers

Handle notification messages from child windows.

WM_ Message Handlers

Handle WM_ messages, such as WM_PAINT.

User-Defined Message Handlers

Handle user-defined messages.

 

Table 3.

 

Since Windows is a message-oriented operating system, a large portion of programming for the Windows environment involves message handling. Each time an event such as a keystroke or mouse click occurs, a message is sent to the application, which must then handle the event. The Microsoft Foundation Class Library offers a programming model optimized for message-based programming. In this model, "message maps" are used to designate which functions will handle various messages for a particular class. Message maps contain one or more macros that specify which messages will be handled by which functions. For example, a message map containing an ON_COMMAND macro might look something like this:

BEGIN_MESSAGE_MAP(CMyDoc, CDocument)

    ON_COMMAND(ID_MYCMD, OnMyCommand)

    // ... More entries to handle additional commands

END_MESSAGE_MAP( )

The ON_COMMAND macro is used to handle command messages generated by menus, buttons, and accelerator keys. Macros are available to map the following:

 

Windows Messages

Command Messages

Ranges of Messages

Although message-map macros are important, you generally won't have to use them directly. This is because the Properties window automatically creates message-map entries in your source files when you use it to associate message-handling functions with messages. Any time you want to edit or add a message-map entry, you can use the Properties window. The Properties window does not support message-map ranges. You must write these message-map entries yourself. However, message maps are an important part of the Microsoft Foundation Class Library. You should understand what they do, and documentation is provided for them.

 

Message Map Macros

 

To support message maps, MFC supplies the following macros:

 

Message-Map Declaration and Demarcation Macros

 

DECLARE_MESSAGE_MAP

Declares that a message map will be used in a class to map messages to functions (must be used in the class declaration).

BEGIN_MESSAGE_MAP

Begins the definition of a message map (must be used in the class implementation).

END_MESSAGE_MAP

Ends the definition of a message map (must be used in the class implementation).

 

Table 4.

 

Message-Mapping Macros

 

ON_COMMAND

Indicates which function will handle a specified command message.

ON_CONTROL

Indicates which function will handle a specified control-notification message.

ON_MESSAGE

Indicates which function will handle a user-defined message.

ON_OLECMD

Indicates which function will handle a menu command from a DocObject or its container.

ON_REGISTERED_MESSAGE

Indicates which function will handle a registered user-defined message.

ON_REGISTERED_THREAD_MESSAGE

Indicates which function will handle a registered user-defined message when you have a CWinThread class.

ON_THREAD_MESSAGE

Indicates which function will handle a user-defined message when you have a CWinThread class.

ON_UPDATE_COMMAND_UI

Indicates which function will handle a specified user-interface update command message.

 

Table 5.

 

Message-Map Range Macros

 

ON_COMMAND_RANGE

Indicates which function will handle the range of command IDs specified in the first two parameters to the macro.

ON_UPDATE_COMMAND_UI_RANGE

Indicates which update handler will handle the range of command IDs specified in the first two parameters to the macro.

ON_CONTROL_RANGE

Indicates which function will handle notifications from the range of control IDs specified in the second and third parameters to the macro. The first parameter is a control-notification message, such as BN_CLICKED.

 

Table 6.

 

 

 

 

 

 

 


| C & C++ Programming | MFC Programming | Download | Site Index |