Search
Module:
Directory

   Desktop Functions:

   Smart Device Functions:


Show Recent Changes
Subscribe (RSS)
Misc. Pages
Comments
FAQ
Helpful Tools
Playground
Suggested Reading
Website TODO List
Download Visual Studio Add-In

APPBARDATA (shell32)
 
.
Summary

C# Signature:

  [StructLayout(LayoutKind.Sequential)]
  public struct APPBARDATA
  {
    public int cbSize; // initialize this field using: Marshal.SizeOf(typeof(APPBARDATA));
    public IntPtr hWnd;
    public uint uCallbackMessage;
    public uint uEdge;
    public RECT rc;
    public int lParam;
  }

VB Signature:

  <StructLayout(LayoutKind.Sequential)> Structure APPBARDATA
    Public cbSize As Integer
    Public hWnd As IntPtr
    Public uCallbackMessage As Integer
    Public uEdge As Integer
    Public rc As RECT
    Public lParam As IntPtr
  End Structure

User-Defined Types:

None.

Notes:

Initialy the C# signature in this article used a public static readonly int for cbSize so it could be initialized inline but the static field is then no longer where you expect it to be in memory so the call to SHAppBarMessage() fails. The field cannot be static.

Tips & Tricks:

If you want a single line way to get an APBARDATA with the cbSize field initialized then you can add a public static method as follows:

  [StructLayout(LayoutKind.Sequential)]
  public struct APPBARDATA
  {
    public int cbSize; // initialize this field using: Marshal.SizeOf(typeof(APPBARDATA));
    public IntPtr hWnd;
    public uint uCallbackMessage;
    public uint uEdge;
    public RECT rc;
    public int lParam;
    public static APPBARDATA NewAPPBARDATA()
    public APBARDATA NewAPBARDATA()
    {
      APPBARDATA abd = new APPBARDATA();
      APBARDATA abd = new APBARDATA();
      abd.cbSize = Marshal.SizeOf(typeof(APPBARDATA));
      return abd;
    }
  }

  ...
  APPBARDATA myBarData = APPBARDATA.NewAPPBARDATA();
  APPBARDATA myBarData = APPBARDATA.NewAPBARDATA();
  myBarData.hWnd = MyBar.Handle;
  ...

Sample Code:

Please add some!

Alternative Managed API:

Do you know one? Please contribute it!

Documentation
APPBARDATA on MSDN

Please edit this page!

Do you have...

  • helpful tips or sample code to share for using this API in managed code?
  • corrections to the existing content?
  • variations of the signature you want to share?
  • additional languages you want to include?

Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing supporting types needed for this API (structures, delegates, and more).

 
Access PInvoke.net directly from VS:
Terms of Use
Edit This Page
Find References
Show Printable Version
Revisions