How to add a context-sensitive help button to the title bar of dialog boxes in Windows 95 (138505)



The information in this article applies to:

  • The Microsoft Foundation Classes (MFC), when used with:
    • Microsoft Visual C++, 32-bit Editions 2.1
    • Microsoft Visual C++, 32-bit Editions 2.2
    • Microsoft Visual C++, 32-bit Editions 4.0
    • Microsoft Visual C++, 32-bit Editions 4.1
    • Microsoft Visual C++, 32-bit Enterprise Edition 5.0
    • Microsoft Visual C++, 32-bit Enterprise Edition 6.0
    • Microsoft Visual C++, 32-bit Professional Edition 5.0
    • Microsoft Visual C++, 32-bit Professional Edition 6.0
    • Microsoft Visual C++, 32-bit Learning Edition 6.0
  • Microsoft Visual C++ .NET (2002)
  • Microsoft Visual C++ .NET (2003)

This article was previously published under Q138505
Note Microsoft Visual C++ .NET (2002) supports both the managed code model that is provided by the Microsoft .NET Framework and the unmanaged native Microsoft Windows code model. The information in this article applies only to unmanaged Visual C++ code.

SUMMARY

Windows 95 provides DS_CONTEXTHELP as a dialog box style to implement context-sensitive help in dialog boxes. The Dialog Editor included with Visual C++ versions 2.1 and 2.2, does not provide a way to set this style when designing the dialog box. This article shows, by example, how to add the context-sensitive help button to the title bar of dialog boxes.

Starting with version 4.0 of Visual C++, the resource editor does allow this extended style to be set. However, this causes the resource editor to generate a DIALOGEX resource that is not supported on Win32s. Therefore, to stay compatible with Win32s, you can still apply the method discussed in this article.

In Visual C++ version 5.0 and 6.0, the resource editor allows you to set both options.

In Visual C++.NET, open the Resource View of the project and set the "Context Help" property of the dialog box to "True".

MORE INFORMATION

If the DS_CONTEXTHELP style is set for a dialog box, Windows 95 adds a question mark button to the title bar of the dialog box. When the user clicks the question mark, the mouse pointer changes to a question mark with a pointer. If the user then clicks a control in the dialog box, the control receives a WM_HELP message.

To set this style, override the OnInitDialog member function of the CDialog-derived class, and add the WS_EX_CONTEXTHELP style to the extended styles for the dialog box. The following code illustrates this:
   BOOL CAboutDlg::OnInitDialog()
   {
        CDialog::OnInitDialog();
        LONG style = ::GetWindowLong(m_hWnd, GWL_EXSTYLE);
        style |= WS_EX_CONTEXTHELP;
        ::SetWindowLong(m_hWnd, GWL_EXSTYLE, style);
        return TRUE;
   }
				
NOTE: DS_CONTEXTHELP is just a placeholder. When the dialog box is created, the system checks for DS_CONTEXTHELP and, if it is there, adds WS_EX_CONTEXTHELP to the extended style of the dialog box.

Modification Type:MajorLast Reviewed:4/28/2005
Keywords:kbinfo kbCmnDlg kbcode kbhowto KbUIDesign KB138505 kbAudDeveloper