Windows API Guide: ReadFile Function


Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hWnd As Long, ByVal Msg As Long, wParam As Any, lParam As Any) As Long

Platforms

  • Windows 95: Supported.
  • Windows 98: Supported.
  • Windows NT: Requires Windows NT 3.1 or later.
  • Windows 2000: Supported.
  • Windows CE: Requires Windows CE 1.0 or later.

Description & Usage

SendMessage sends a message to a window. Specifically, the function calls that window's procedure to handle to message. This function does not return until the window has completed processing the message.

Return Value

The function returns the return value of the message which was sent.

Visual Basic-Specific Issues

Whenever passing a string or a Long integer as wParam or lParam, the ByVal keyword must appear in front of the parameter. ByVal is not needed if a structure or a pointer is being passed. Additionally, if a literal number (i.e., one that is not stored in a variable) is passed, it must be encased in the CLng() Visual Basic function to force its data type to Long. See the example for a demonstration of ByVal usage.

Parameters

hWnd
A handle to the window to send the message to. If this is HWND_BROADCAST, the message is sent to all open top-level windows.
Msg
The identifier of the message to send.
wParam
Additional message-specific data.
lParam
Additional message-specific data.

Constant Definitions

Const HWND_BROADCAST = &HFFFF

Example

' This code is licensed according to the terms and conditions listed here. ' Open the Browse for Folder dialog box and display both the display name and ' the actual name of the folder (if it is not a virtual folder).  Although any ' folders under My Computer can be selected, have the directory ' C:\StartHere selected by default. ' *** Place the following code in a module. *** ' This function compensates for the fact that the AddressOf operator ' can only be used in a function call.  It returns the parameter ' passed to it. Public Function DummyFunc(ByVal param As Long) As Long   DummyFunc = param End Function ' This function is the callback function for the dialog box.  It sets ' the selected folder to C:\StartHere when the box is initialized. Public Function BrowseCallbackProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal lParam As Long, ByVal lpData As Long) As Long   Dim pathstring As String  ' name of path to set by default   Dim retval As Long  ' return value   ' If the BFFM_INITIALIZED message is received, set the   ' default selection to C:\StartHere.   Select Case uMsg   Case BFFM_INITIALIZED     pathstring = "C:\StartHere"  ' the path to make the default selection     ' Send a message to the dialog box telling it to select this path.     ' Note the use of ByVal and the CLng function here.     retval = SendMessage(hwnd, BFFM_SETSELECTION, ByVal CLng(1), ByVal pathstring)   End Select   BrowseCallbackProc = 0  ' the function should always return 0 End Function ' *** Place the following code where you want to open the *** ' *** Browse for Folder dialog box. *** Dim bi As BROWSEINFO  ' structure passed to the function Dim pidl As Long  ' PIDL to the user's selection Dim physpath As String  ' string used to temporarily hold the physical path Dim retval As Long  ' return value ' Initialize the structure to be passed to the function. bi.hwndOwner = Form1.hWnd  ' window Form1 is the owner of the dialog box ' Specify the My Computer virtual folder as the root retval = SHGetSpecialFolderLocation(Form1.hWnd, CSIDL_DRIVES, bi.pidlRoot) ' Make room in the buffer to get the [virtual] folder's display name bi.pszDisplayName = Space(260) bi.lpszTitle = "Please choose a folder."  ' Message displayed to the user bi.ulFlags = 0  ' no flags are needed here ' Identify the callback function to use for the dialog box.  Note ' how our DummyFunc is needed because AddressOf only works ' inside a function call. bi.lpfn = DummyFunc(AddressOf BrowseCallbackProc) bi.lParam = 0  ' the callback function here doesn't need this bi.iImage = 0  ' this will be set by the function ' Open the Browse for Folder dialog box. pidl = SHBrowseForFolder(bi) ' If the user selected something, display its display name ' and its physical location on the system. If pidl <> 0 Then   ' Remove the empty space from the display name variable.   bi.pszDisplayName = Left(bi.pszDisplayName, InStr(bi.pszDisplayName, vbNullChar) - 1)   Debug.Print "The user selected: "; bi.pszDisplayName   ' If the folder is not a virtual folder, display its physical location.   physpath = Space(260)  ' make room in the buffer   retval = SHGetPathFromIDList(pidl, physpath)   If retval = 0 Then     Debug.Print "Physical Location: (virtual folder)"   Else     ' Remove the empty space and display the result.     physpath = Left(physpath, InStr(physpath, vbNullChar) - 1)     Debug.Print "Physical Location: "; physpath   End If   ' Free the pidl returned by the function.   CoTaskMemFree pidl End If ' Whether successful or not, free the PIDL which was used to ' identify the My Computer virtual folder. CoTaskMemFree bi.pidlRoot

Category

Messages

Go back to the alphabetical Function listing.
Go back to the Reference section index.


Last Modified: September 26, 1999
This page is copyright © 1999 Paul Kuliniewicz. Copyright Information Revised October 29, 2000 Revised October 29, 2000
Go back to the Windows API Guide home page.
E-mail: vbapi@vbapi.com Send Encrypted E-Mail
This page is at http://www.vbapi.com/ref/s/sendmessage.html



Windows API Guide
Windows API Guide - Reference - Volume 1: Version 3.0 For the MS-DOS and PC-DOS Operating Systems
ISBN: B001V0KQIY
EAN: N/A
Year: 1998
Pages: 610

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net