CBHNDL function

Purpose

In a Callback Function, return the window handle of the caller.

CBHNDL has been superceded by the CB Callback functions, although CBHNDL remains supported for a limited period.  Existing code should be converted to the new syntax as soon as possible.

Syntax

WindowHandle??? = CBHNDL

Remarks

When a user clicks on a button, types into a text box, or generally interacts with any control in a dialog, Windows sends a %WM_COMMAND message to the control callback function. If no control callback function is defined, the message is sent to the dialog callback function. In either type of callback, CBHNDL returns the window handle of the parent dialog.

CBHNDL will also return the window handle for all other types of messages that flow through dialog callback functions. For example, %WM_PAINT, %WM_INITDIALOG, etc. As it is possible to share a control callback function with multiple controls, it is also possible to share a dialog callback function with multiple dialogs. In such cases, CBHNDL can be used to make a clear distinction between each dialog.

If we consider a conventional callback procedure definition:

FUNCTION DlgCallback(BYVAL hDlg???, BYVAL wMsg&, BYVAL wParam&, BYVAL lParam&) _

  EXPORT AS LONG

The handle is sent to the callback as the hDlg??? parameter. hDlg may be a Long-integer or Double-word variable (i.e., hDlg& or hDlg???), but a Double-word variable is recommended.

Restrictions 

This function is only valid inside a Callback Function.

See also

Dynamic Dialog Tools, CB Callback functions

Example

CALLBACK FUNCTION DlgCallback() AS LONG

  SELECT CASE CBMSG ' CBMSG holds the message

    CASE %WM_SYSCOMMAND

      ' CBHNDL is dialog handle here

    CASE %WM_COMMAND

      ' CBCTL is the control ID here

      ' CBCTLMSG is the notification message

      ...

  END SELECT

END FUNCTION