Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用api创建PopupMenu()_C#_Api_Popupmenu - Fatal编程技术网

C# 使用api创建PopupMenu()

C# 使用api创建PopupMenu(),c#,api,popupmenu,C#,Api,Popupmenu,我想知道如何将createpopupmenu()与api一起使用,我编写的类如下: using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; namespace test { public static extern int DestroyIcon(IntPtr hIcon); [System.Runtime.InteropSe

我想知道如何将createpopupmenu()与api一起使用,我编写的类如下:

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace test
{
   public static extern int DestroyIcon(IntPtr hIcon);

    [System.Runtime.InteropServices.DllImport("user32.dll")]
    public extern static bool ShowWindow(IntPtr hWnd, int nCmdShow);

    public const int GWL_EXSTYLE = -20;
    public const int WM_CLOSE = 16;
    public const int WM_COPY = 0x0301;
    public const int WM_PASTE = 0x0302;
    public const int WM_CUT = 0x0300;
    public const int WM_ERASEBKGND = 0x0014;
    public const int WM_USER = 0x400;
    public const int WM_DEVICECHANGE = 0x219;

    public const int EM_GETSCROLLPOS = (WM_USER + 221);
    public const int EM_SETSCROLLPOS = (WM_USER + 222);

    [DllImport("user32.dll")]
    public static extern IntPtr SetWindowLong(IntPtr hWnd, Int32 nIndex, IntPtr dwNewLong);

    [DllImport("user32.dll")]
    public static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);

    [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
    public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

    [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
    public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, ref POINT point);

    [DllImport("user32.dll", SetLastError = true)]
    public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);

    [DllImport("user32.dll")]
    public static extern IntPtr CreatePopupMenu();

    [DllImport("user32", SetLastError = true, CharSet = CharSet.Auto)]
    public static extern bool InsertMenu(IntPtr hmenu, int position, uint flags, IntPtr item_id, [MarshalAs(UnmanagedType.LPTStr)]string item_text);

    [Flags]
    public enum MenuFlags : uint
    {
        MF_STRING = 0,
        MF_BYPOSITION = 0x400,
        MF_SEPARATOR = 0x800,
        MF_REMOVE = 0x1000,
        MF_POPUP = 0x00000010,
    }

    [StructLayout(LayoutKind.Sequential)]
    public struct POINT
    {
        public int x;
        public int y;
    }
}
}
但是我尝试使用这个类和
createpopupmenu()
方法为我的表单创建菜单,但它不起作用?谁能告诉我我该怎么做…?

您缺少显示菜单和删除菜单的功能。你为什么不直接用这门课呢?