首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在表单系统菜单中插入项目

在表单系统菜单中插入项目
EN

Stack Overflow用户
提问于 2012-02-26 20:06:51
回答 1查看 1.3K关注 0票数 0

我的测试:

代码语言:javascript
复制
Public Class Form1

   Public Const WM_SYSCOMMAND As Int32 = &H112
   Public Const MF_BYPOSITION As Int32 = &H400
   Public Const MYMENU1 As Int32 = 1000
   Public Const MYMENU2 As Int32 = 1001

   Dim hSysMenu As Long


   Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
   Public Declare Function InsertMenu Lib "user32" Alias "InsertMenuA" _
       (ByVal hMenu As IntPtr, ByVal nPosition As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As String) As Boolean

   Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
      MyBase.WndProc(m)
      If (m.Msg = WM_SYSCOMMAND) Then
         Select Case m.WParam.ToInt32
            Case MYMENU1
               MsgBox("1")
            Case MYMENU2
               MsgBox("2")
         End Select
      End If
   End Sub

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      hSysMenu = GetSystemMenu(Me.Handle, False)
      InsertMenu(hSysMenu, 5, MF_BYPOSITION, MYMENU1, "My Menu 1")
      InsertMenu(hSysMenu, 6, MF_BYPOSITION, MYMENU2, "My Menu 2")

   End Sub
End Class

我得到了一个错误:

检测到PInvokeStackImbalance消息:对PInvoke函数'WindowsApplication1!WindowsApplication1.Form1::GetSystemMenu‘的调用使堆栈不平衡。这可能是因为托管PInvoke签名与非托管目标签名不匹配。检查PInvoke签名的调用约定和参数是否与目标非托管签名匹配。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-26 20:11:44

在声明中用Integer替换Long

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9452904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档