Generated Image

C#模拟窗体系统菜单

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime;
using System.Runtime.InteropServices;


namespace Neicun
{
    
public partial class Form1 : Form
    {



        
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
        
public Form1()
        {
            InitializeComponent();
        }

        
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);

        }
    }



}
posted @ 2007-04-27 10:36  桂圆  阅读(659)  评论(0编辑  收藏  举报