首页  编辑  

模拟窗体系统菜单

Tags: /C#/API调用/   Date Created:

using System . Runtime . InteropServices;

const uint TPM_LEFTBUTTON = 0 ;

const uint TPM_RIGHTBUTTON = 2 ;

const uint TPM_LEFTALIGN = 0 ;

const uint TPM_CENTERALIGN = 4 ;

const uint TPM_RIGHTALIGN = 8 ;

const uint TPM_TOPALIGN = 0 ;

const uint TPM_VCENTERALIGN = 0x10 ;

const uint TPM_BOTTOMALIGN = 0x20 ;

const uint TPM_RETURNCMD = 0x100 ;

const uint WM_SYSCOMMAND = 0x0112 ;

#region DllImport

[ DllImport ( "User32.dll" )]

static extern IntPtr GetSystemMenu( IntPtr hWnd, bool bRevert);

[ DllImport ( "User32.dll" )]

static extern bool GetCursorPos( out Point lpPoint);

[ DllImport ( "User32.dll" )]

static extern int TrackPopupMenu( IntPtr hMenu, uint uFlags,

    int x, int y, int nReserved, IntPtr hWnd, out Rectangle prcRect);

[ DllImport ( "User32.DLL" )]

public static extern int SendMessage( IntPtr hWnd, uint Msg, int wParam, int lParam);

#endregion

private void button1_Click( object sender , EventArgs e)

{

    Point vPoint;

    Rectangle vRect;

   GetCursorPos( out vPoint);

   SendMessage(Handle, WM_SYSCOMMAND, TrackPopupMenu(

       GetSystemMenu(Handle, false),

       TPM_RETURNCMD | TPM_LEFTBUTTON, vPoint . X, vPoint . Y,

        0 , Handle, out vRect), 0 );

}