精华内容
下载资源
问答
  •   //由于需要的是“可弹出项”的第一层子菜单,因此用GetSubMenu(0)来得到。  popup=menu.GetSubMenu(0);   popup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x, point.y,this);    }  然后需要...
  • 1.设置快捷菜单:为了首先我们需要在菜单下插入...(如果有需要的话还可以根据我们自己的需要添加其他的子菜单项,这里我们不再叙述,仅以“删除为例”) 1.1)在list control中添加快捷菜单:在list control中添加时
    

    1.设置快捷菜单:为了首先我们需要在菜单项下插入一个菜单IDR_MENU1,并在此菜单下创建一个菜单项,此菜单项的名字可以随便取,比如:ab,然后在aa下面添加一个子菜单“删除”,将其ID号设置为ID_SC。(如果有需要的话还可以根据我们自己的需要添加其他的子菜单项,这里我们不再叙述,仅以“删除为例”)

    1.1)在list control中添加快捷菜单:在list control中添加时要为list control添加事件处理程序,此时选中的消息类型为:NM_RCLICK,然后添加代码如下:

     

     NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
     if(pNMListView->iItem != -1)
     {
      DWORD dwPos = GetMessagePos();
      CPoint point( LOWORD(dwPos), HIWORD(dwPos) );

      CMenu menu;
      VERIFY( menu.LoadMenu( IDR_MENU1 ) );     

      CMenu* popup = menu.GetSubMenu(0);
      ASSERT( popup != NULL );
      popup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this );
     }

     *pResult = 0;

    1.2)在单文档应用程序中加快捷菜单:在菜单中的IDR_MENU1中创建菜单项aa,在aa下添加子项“删除”;然后在CMenuView类中添加WM_RBUTTONDOWN消息响应函数,具体代码如下:

    void CdfjklsDlg::OnRButtonDown(UINT nFlags, CPoint point)
    {
     CMenu menu;
     menu.LoadMenu(IDR_MENU1);
     CMenu* pPopup=menu.GetSubMenu(0);
     pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON ,point.x,point.y,GetParent());

     CDialog::OnRButtonDown(nFlags, point);
    }

     

    2.对快捷菜单下的“删除”菜单添加事件处理程序(对于在list control中删除而言),具体是代码如下:

     

     int i,iState;
     int nItemSelected=m_list.GetSelectedCount();
     int nItemCount=m_list.GetItemCount();
     if(nItemSelected<1)
      return;
     for(i=nItemCount-1;i>=0;i--)
     {
      iState=m_list.GetItemState(i,LVIS_SELECTED);
      if(iState!=0)
      {

       m_list.DeleteItem(i);
      }
     }

     

    经过上面的1.1)以及2中的步骤就可以删除list control中选中的项。

    展开全文
  • 菜单,下拉菜单,单选菜单,选择菜单弹出菜单菜单绑定等功能的实现

    python之tkinter中菜单栏的快速学习
    本文主要讲述菜单栏的一些应用,附上代码,供大家学习。

    import tkinter#导入tkinter库
    top=tkinter.Tk()#创建一个主窗口
    top.geometry('400x800+0+0')#指定主窗口大小
    top.wm_title('Menu菜单功能的实现') #设置标题名称
    main_m=tkinter.Menu(top)#创建主菜单
    #-----------------------------------------------------------#
    item_File=tkinter.Menu(main_m,tearoff=0) #创建菜单,tearoff=0是关闭第0行虚线
    for i in ['New','Open','Save','Save As']:#利用for循环逐一给菜单增添下来菜单
        item_File.add_command(label=i)#label是设置下拉菜单的名称
    
    item_File.add_separator() #指定分隔线
    
    for i in ['Option1','Option2','Option3','Option14']:#利用for循环逐一给菜单增添下来菜单
        item_File.add_checkbutton(label=i)#创建选择按钮菜单,可多选
    
    item_File.add_separator() #指定分隔线
    
    for i in ['Option1','Option2','Option3','Option4']:#利用for循环逐一给菜单增添下来菜单
        item_File.add_radiobutton(label=i)#创建单选按钮菜单,只能单选
    
    main_m.add_cascade(label='File',menu=item_File)#级连
    #-----------------------------------------------------------#
    item_Edit=tkinter.Menu(main_m,tearoff=0)
    
    for i in ['Copy','Cut','Paste']:
        item_Edit.add_command(label=i)
    
    main_m.add_cascade(label='Edit',menu=item_Edit)#级连
    #------------------------------------------------------------#
    def f():
        global top,jump_main #定义全局变量
        tkinter.Label(top,text=top.winfo_pointerxy()).grid(row=0,column=0) #或者用pack()会将坐标直接显示在中间,并且一直累积下去
        #winfo_ponterxy()是显示坐标值
    def abc(xyz):
        jump_main.post(xyz.x,xyz.y)#post为弹出菜单
    #-----------------------------------------------------------#
    jump_main=tkinter.Menu(top,tearoff=0)
    
    for i in ['Refresh','Copy','Paste','Exit']:#利用for循环逐一给菜单增添下来菜单
        jump_main.add_command(label=i) #label是设置下拉菜单的名称
    
    jump_main.add_command(label='Display',command=f)
    top.bind('<Button-3>',abc)#bind绑定事件,点击鼠标右键执行相应函数
    
    top['menu']=main_m#指定顶层菜单
    top.mainloop()
    

    另外,
    关于菜单栏还有一些属性,如下:
    activebackground,鼠标位于组件上方时,显示组件背景颜色
    activeborderwidth,
    activeforeground,鼠标位于组件上方时,显示组件背景颜色
    background,背景颜色
    borderwidth,选择边缘的宽度,默认值为2像素点宽
    cursor,指出鼠标形状
    disabledforeground,
    font,指出文本的字体字号
    foreground,前景颜色
    postcommand,可将这个选项设置为一个函数,当用户点击菜单时调用函数
    relief,指出组件风格,默认为flat
    selectcolor,指定选择按钮或单选按钮的显示颜色
    tearoff,设置为0,关闭菜单项上第0行的虚线
    tearoffcommand,菜单独立被触发时的回调
    title,设置控件标题
    等。

    菜单设置的一些方法及命令:
    #添加一个子菜单 option为配置选项
    add_cascade(option…)
    #添加一个切换按钮 option为配置选项
    add_checkbutton(option…)
    #添加一个功能按钮 option为配置选项
    add_command(option…)
    #添加一个单选按钮 option为配置选项
    add_radiobutton(option…)
    #添加一个分割线
    add_separator()
    #删除index1 到 index2之间的选项
    delete(index1,index2)
    #在指定位置插入一个子菜单
    insert_cascade(index,option…)
    #在指定位置插入一个切换按钮
    insert_checkbutton(index,option…)
    #在指定位置插入一个功能按钮
    insert_command(index,option…)
    #在指定位置插入一个单选按钮
    insert_radiobutton(index,option…)
    #在指定位置插入一个分割线
    insert_separator(index)
    #在窗口指定位置弹出菜单
    post(x,y)
    #获取个选项的类型
    type(index)
    #获取某个选项距离菜单顶部的偏移量
    yposition(n)

    展开全文
  • 关于VB6弹出菜单的问题

    千次阅读 2015-11-01 05:06:33
    写一个小程序, 用VB6随意做下界面,离奇的发现弹出菜单居然...弹出菜单子菜单项在这里名称为mPopup1,事件代码为: Option Explicit Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As

    写一个小程序, 用VB6随意做下界面,离奇的发现弹出菜单居然没有效果,过程如下

    创建一个窗体Form1,用菜单编辑器创建一个弹出菜单

    弹出菜单子菜单项在这里名称为mPopup1,事件代码为:

    Option Explicit
    
    Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
        PopupMenu mnuPopup1
    End Sub
    
    Private Sub mPopup1_Click()
        Dim f As New Form2
        f.Show vbModal
    End Sub
    

    创建对应的Form2,同样有弹出菜单mnuPopup2和子菜单项mPopup2,事件代码为:

    Option Explicit
    
    Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
        PopupMenu mnuPopup2
    End Sub

    这时候会发现,无论在哪个事件调用PopupMenu都无法弹出mnuPopup2菜单,我怀疑过RichEdit,怀疑过ComDlg,N多怀疑

    查了下MSDN说明有一句:

    在显示弹出式菜单时,调用 PopupMenu 方法后面的代码直到用户或者从菜单中选择了命令(这时,该命令的 Click 事件的代码比 PopupMenu 语句后面的代码先执行)或者取消该菜单时才能执行。此外,每次只能显示一个弹出式菜单,因此,如果已经显示了一个弹出式菜单或打开了一个下拉式菜单时,该方法的其它调用将被忽略。

    实践证明,PopupMenu后面的代码是继续执行的,但是多次弹出菜单无效,即弹出一个菜单后的对话框不能再继续弹出对话框

    解决的办法也出来了: 不要以模态显示对话框即可.

    调整后Form1的代码为:

    Option Explicit
    
    Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
        PopupMenu mnuPopup1
    End Sub
    
    Private Sub mPopup1_Click()
        Dim f As New Form2
        'f.Show vbModal
        f.Show
    End Sub
    

    这样mPopup1_Click()响应过程能够返回, 再调用PopupMenu也就能弹出菜单了,当然了还有其他的解决办法,比如:

    Option Explicit
    
    Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
        PopupMenu mnuPopup1
    End Sub
    
    Private Sub mPopup1_Click()
        'Dim f As New Form2
        ''f.Show vbModal
        'f.Show
        Timer1.Enabled = True
    End Sub
    
    Private Sub Timer1_Timer()
        Dim f As New Form2
        f.Show vbModal
    End Sub
    

    不过这样做要注意不要Show多个模态窗体,道理也是类似的.

    应该就这么多了

    展开全文
  • 在Windows应用程序中,利用弹出菜单(Pop-up Menu)是增加软件易用性的一个重要方式。本文将向大家介绍在VB6.0中实现弹出菜单的几种方法。 利用VB6.0内置的PopupMenu方法 PopupMenu方法(Method)是VB6.0内置...

    在Windows应用程序中,利用弹出式菜单(Pop-up Menu)是增加软件易用性的一个重要方式。本文将向大家介绍在VB6.0中实现弹出式菜单的几种方法。

    利用VB6.0内置的PopupMenu方法

    PopupMenu方法(Method)是VB6.0内置的实现弹出式菜单的方法,用于在MDIForm或Form等对象中的鼠标点位置或指定位置显示弹出式菜单。其语法为:
    Object.PopupMenu menuname, flags, x, y, boldcommand
    说明如下:


    Object

    可选项,可以是PropertyPage, Usercontrol, UserDocument, Form, MDIForm等对象之一,如果该部分省略,则具有焦点(Focus)的Form对象将作为此Object。

    Menuname

    必须,将被显示的弹出式菜单的名称,此菜单必须至少包含一个子菜单

    Flags

    可选项,一个值或常数,设置弹出式菜单显示的位置及行为方式,定义如下:

    常数(位置)

    说明

    VbPopupMenuLeftAlign

    0

    (缺省值)弹出式菜单左对齐于X

    VbPopupMenuCenterAlign

    4

    菜单居中于X

    VbPopupMenuRightAlign

    8

    弹出式菜单右对齐于X

    常数(行为)

    说明

    VbPopupMenuLeftButton

    0

    (缺省值)只能通过点击鼠标左键来选择弹出式菜单的菜单项

    VbPopupMenuRightButton

    2

    可以通过点击鼠标的左键或右键来选择弹出式菜单的菜单项

    X

    可选项,设定显示弹出式菜单的X坐标,如省略,鼠标点坐标将被作为X使用

    Y

    可选项,设定显示弹出式菜单的Y坐标,如省略,鼠标点坐标将被作为Y使用

    Boldcommand

    可选项,定义弹出式菜单中某一个菜单项的名称,该菜单项文字将被加粗显示,如省略该项,则无菜单项文字被加粗。

    通过设置对象(Object)的Scalemode属性来规定X,Y坐标的度量单位,X,Y坐标设定弹出式菜单在对象(Object)中显示的相对位置,如果省略X,Y,则弹出式菜单将显示在当前鼠标点位置。
    当用PopupMenu方法激活弹出菜单后,要等到用户选择了弹出菜单中的某个菜单项之后(这种情况下,还要先运行被选择菜单项的相应代码)或在表单其它位置单击鼠标左键消除弹出菜单后,后面的代码才能继续执行。并且,一次只能激活一个弹出式菜单,当已经有一个弹处菜单被激活或已经有一个下拉菜单被打开时,对PopupMenu方法的调用将被忽略。
    下面的例子演示当用户在表单上点击鼠标右键时,在鼠标点处显示弹出式菜单。欲试验此例子,建立一个表单,在表单中建立一个菜单控件,将其命名为mnuFile(mnuFile菜单至少包含一个子菜单)。在表单的声明(Declaration)区域加入如下代码:
    Private Sub Form_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = vbRightButton Then
    PopupMenu mnuFile
    End If
    End Sub
    PopupMenu方法是VB6.0内置的方法,使用起来方便简单,但该方法有一个不足,即当点击鼠标弹出菜单后,如果不选择菜单项而在其他位置点击鼠标,则菜单并不会在新的鼠标点处显示。这虽然不至于影响应用程序的功能,但却降低了易用性。

    利用Windows API函数

    除了利用VB6.0内置的PopupMenu方法来实现弹出式菜单外,还可以利用Windows 的应用程序接口(API)函数中的菜单函数来实现弹出式菜单。
    利用API的菜单函数实现弹出式菜单与VB6.0内置的PopupMenu方法相比,要复杂一些,但却弥补了PopupMenu方法的不足点,即当弹出菜单后不选择菜单项而在其它位置点击鼠标时,弹出式菜单会立即出现在那个位置。并且利用API函数,编程者可以更加灵活、自由度更大地实现弹出式菜单。
    本文用到的API函数为:GetMenu, GetSubMenu, GetMenuItemInfo, InsertMenuItem, CreatePopupMenu, DestroyMenu, TrackPopupMenu。下面先简单介绍一下这几个函数。


    GetMenu

    GetMenu函数返回指定窗口的菜单的句柄

    语法:GetMenu ( HWnd )

    参数的意义

    HWnd

    窗口句柄,该窗口所包含的菜单的句柄将被函数返回

    GetSubMenu

    GetSubMenu函数返回下拉菜单或被指定菜单项激活的子菜单的句柄

    语法:GetSubMenu ( hMenu, nPos )

    参数的意义

    Hmenu

    菜单句柄

    NPos

    定义激活下拉菜单或子菜单的菜单项在所给菜单中的相对位置(起始为0)

    GetMenuItemInfo

    GetMenuItemInfo函数返回菜单项的信息

    语法:GetMenuItemInfo ( hMenu, uItem, fByPosition, lpmii )

    参数的意义

    Hmenu

    包含相应菜单项的菜单的句柄

    Uitem

    欲获得其信息的菜单项的标识号或位置,该参数的具体意义由fByPositon参数的值来决定

    FbyPosition

    用来定义uItem参数的意义,如果此参数的值为False,则uItem参数为菜单项的标识号,否则,为菜单项的位置

    Lpmii

    指向MENUITEMINFO结构变量的指针,该变量指定了需要返回菜单项的哪些信息,并接收这些信息。MENUITEMINFO结构各元素说明如下:

    CbSize

    结构占用的字节数

    Fmask

    设置欲获得结构中哪些元素的值

    Ftype

    菜单项类型

    Fstate

    菜单项状态

    WID

    标识菜单项的16位值

    HsubMenu

    与菜单项关联的下拉菜单或子菜单的句柄

    HbmpChecked

    菜单项被选中时,显示在菜单项旁边的位图的句柄,该值为Null时使用缺省位图

    HbmpUnchecked

    菜单项未被选中时,显示在菜单项旁边的位图的句柄,该值为Null则不使用位图

    DwTypeData

    菜单项文字,长度在元素cch中给出

    Cch

    菜单项文字长度

    InsertMenuItem

    InsertMenuItem函数在一菜单的指定位置插入一个新菜单项

    语法:InsertMenuItem ( hMenu, uItem, fByPosition, lpmii )

    参数的意义

    Hmenu

    新菜单项将被插入的菜单的句柄

    Uitem

    新菜单项将被插入在其之前的菜单项的标识号或位置,该参数的具体意义由fByPositon参数的值来决定

    FbyPosition

    用来定义uItem参数的意义,如果此参数的值为False,则uItem参数为菜单项的标识号,否则,为菜单项的位置

    Lpmii

    指向MENUITEMINFO结构变量的指针,该变量包含了新菜单项的信息

    CreatePopupMenu

    CreatePopupMenu函数生成一个下拉菜单、子菜单或弹出式操单,菜单在初始时是空的,可以使用InsertMenuItem函数来插入菜单项

    语法:CreatePopupMenu ( )

    DestroyMenu

    DestroyMenu函数清除指定的菜单并释放该菜单所占用的内存空间

    语法:DestroyMenu ( hMenu )

    参数的意义

    HMenu

    将被清除的菜单的句秉

    TrackPopupMenu

    TrackPopupMenu函数在指定位置显示一个弹出式菜单,并跟踪菜单中菜单项的选择,弹出菜单可以出现在屏幕的任何位置

    语法:TrackPopupMenu (hMenu, uFlags, x, y, nReserved, hWnd, *PrcRect)

    参数的意义

    HMenu

    被显示的弹出式菜单的句柄,此句柄可通过调用CreatePopupMenu函数生成一个新弹出式菜单获得,或调用GetSubMenu函数获得一个现有某子菜单的句柄

    UFlags

    一组标识符来指定函数的选项,意义如下

    常数

    说明

    TPM_CENTERALIGN

    4

    设置该值,弹出式菜单水平居中于X

    TPM_LEFTALIGN

    0

    设置该值,弹出式菜单左对齐于X

    TPM_RIGHTALIGN

    8

    设置该值,弹出式菜单右对齐于X

    TPM_LEFTBUTTON

    0

    设置该值,用户只能通过鼠标左键选择菜单项

    TPM_RIGHTBUTTON

    2

    设置该值,用户既可以通过鼠标左键也可以通过鼠标右键选择菜单项

    X

    定义弹出菜单的水平位置(屏幕坐标系)

    Y

    定义弹出菜单的垂直位置(屏幕坐标系)

    Nreserved

    保留,必须为0

    HWnd

    拥有弹出式菜单的窗口的句柄,该窗口接收所有从该菜单传来的消息,该窗口在函数返回之前不从菜单接收WM_COMMAND消息
    如在uflags参数中定义了TPM_NONOTIFY,函数不向HWnd定义的窗口发送消息,但仍需向HWnd传递一个窗口句柄,它可以是所在应用程序中的任何窗口句柄

    PrcRect

    忽略

    三.利用工程(Project)中其他表单的菜单作为当前表单的弹出菜单

    如果表单(Form)的菜单中不包含弹出菜单需要的菜单项,那么可以新建一个表单,在新表单中建立一个与所需弹出菜单完全一样的菜单及相应代码。然后在MouseDown事件中利用GetMenu和GetSubMenu函数来获得新表单中的菜单句柄,再利用TrackPopupMenu函数激活弹出式菜单。
    下面的例子演示当在表单中单击鼠标右键时,在鼠标点位置显示弹出式菜单,此弹出式菜单是通过调用另外一个表单中的菜单得到的。要试验这个例子,需要创建两个表单,一个命名为Form1,另一个命名为MnuForm。在MnuForm中加入一个菜单控件,将其命名为MnuFile(MnuFile中至少要包含一个子菜单)。添加一个模块(Module),在模块的声明(Declaration)区域添加如下代码:

    Public Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
    End Type
    Public Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
    Public Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
    Public Declare Function TrackPopupMenu Lib "user32" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal x As Long, ByVal y As Long, ByVal nReserved As Long, ByVal hwnd As Long, lprc As RECT) As Long

    在Form1的声明(Declaration)区域添加如下代码:


    Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Dim IX As Integer, IY As Integer
        Dim hMenu As Long, hSubMenu As Long, R As Integer
        Dim menRect As RECT
        If Button = vbRightButton Then
            ScaleMode = TWIPS
            IX = (X + Left) \ Screen.TwipsPerPixelX
            IY = (Y + Top) \ Screen.TwipsPerPixelY
            hMenu = GetMenu(MnuForm.hwnd)     '获得MnuForm中的菜单句柄保存于hMenu
            hSubMenu = GetSubMenu(hMenu, 0)   '获得hMenu中的第一个子菜单的句柄保存于hSubMenu
            R = TrackPopupMenu(hSubMenu, 2, IX, IY, 0, MnuForm.hwnd, menRect) '激活弹出菜单
        End If
    End Sub

    利用表单中的菜单项实现弹出式菜单

    如果表单的菜单中包含了弹出菜单所需的菜单项,那么可以通过CreatePopupMenu函数生成一个空的pop-up menu,然后利用GetMenuItemInfo函数从表单的菜单中获得相应菜单项的内容,再用InsertMenuItem函数将菜单项加入到pop-up menu中,最后使用TrackPopupMenu函数激活弹出式菜单。
    下面的例子演示当在表单中单击鼠标右键时,在鼠标点位置显示弹出式菜单,此弹出式菜单是通过调用表单中的若干菜单项得到的。要试验这个例子,需要创建一个表单。在表单中加入一个菜单控件,将其命名为MnuFile,在MnuFile中至少要包含一个子菜单,将其命名为MnuOpen,MnuOpen的Caption值为“&Open”。添加一个模块(Module),在模块的Declaration区域添加如下代码:

    Public Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
    End Type
    Public Type MENUITEMINFO
        cbSize As Long
        fMask As Long
        fType As Long
        fState As Long
        wID As Long
        hSubMenu As Long
        hbmpChecked As Long
        hbmpUnchecked As Long
        dwItemData As Long
        dwTypeData As String
        cch As Long
    End Type
    Public Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
    Public Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
    Public Declare Function TrackPopupMenu Lib "user32" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal x As Long, ByVal y As Long, ByVal nReserved As Long, ByVal hwnd As Long, lprc As RECT) As Long
    Public Declare Function CreatePopupMenu Lib "user32" () As Long
    Public Declare Function DestroyMenu Lib "user32" (ByVal hMenu As Long) As Long
    Public Declare Function GetMenuItemInfo Lib "user32" Alias "GetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, ByVal b As Long, lpMenuItemInfo As MENUITEMINFO) As Long
    Public Declare Function InsertMenuItem Lib "user32" Alias "InsertMenuItemA" (ByVal hMenu As Long, ByVal un As Long, ByVal bool As Boolean, ByRef lpcMenuItemInfo As MENUITEMINFO) As Long

    在表单的声明(Declaration)区域添加如下代码:


    Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Dim IX As Integer, IY As Integer
        Dim hMenu As Long, hSubMenu As Long, PMenu As Long
        Dim theR As Long
        Dim menRect As RECT
        Dim MnuItmInfo As MENUITEMINFO, TempMnuItmInfo As MENUITEMINFO
        Dim Dummy As Variant
        If Button And vbRightButton Then
            ScaleMode = vbTwips
            IX = (X + Left) \ Screen.TwipsPerPixelX
            IY = (Y + Top) \ Screen.TwipsPerPixelY
            PMenu = CreatePopupMenu()    '生成一个空弹出菜单
            hMenu = GetMenu(Form1.hwnd) '获得Form1的菜单句柄保存于hMenu
            hSubMenu = GetSubMenu(hMenu, 0) '获得hMenu的第一个子菜单的句柄保存于hSubMenu
            With TempMnuItmInfo
                .cbSize = Len(TempMnuItmInfo)
                .dwTypeData = Space$(10)
                .fMask = 126 '获得所有元素的值
                .cch = 10
            End With
            MnuItmInfo = TempMnuItmInfo
            Dummy = GetMenuItemInfo(hSubMenu, 0, True, MnuItmInfo) '获得hSubMenu第一个菜单
            Dummy = InsertMenuItem(PMenu, 0, True, MnuItmInfo) '项的信息,将其插入到PMenu
            .
            .
            .
            MnuItmInfo = TempMnuItmInfo
            Dummy = GetMenuItemInfo(hSubMenu, n, True, MnuItmInfo) '获得hSubMenu第n-1个菜
            Dummy = InsertMenuItem(PMenu, n, True, MnuItmInfo) '单项的信息,将其插入到PMenu
            theR = TrackPopupMenu(PMenu, 2, IX, IY, 0, Form1.hwnd, menRect) '激活弹出菜单
            Dummy = DestroyMenu(PMenu)
        End If
    End Sub

    相关参考

    vb屏蔽文本框点右键时的弹出菜单

    VB 小技巧自定义TextBox文本框右键菜单

    VB 自启动建立右键菜单

    VB在菜单上增加图标

    vbListBox 之中点击右键弹出菜单

    【引用】在VB6.0中实现弹出式菜单的几种方法

    vb中实现真正锁定的带自定义菜单的文本控件

    记录一下:在菜单上添加自绘图形的例子(VB6代码)


    VB相关

    vbline的用法[]

    画图工具的VB实现

    VB 一个获得自己外网 IP 地址的程序代码

    VB程序中实现IP地址子网掩码网关DNS的更改  []

    VB 中应用 FSO 对象模型介绍(摘自网络)

    [] VbFSO 对象的介绍

    VB 画坐标轴

    VB 二进制文件的操作

    [VB]BMPJPGVBKeyCode常数用法

    vb实时曲线的绘制和保存

    VB操作EXCEL

    vb初学回顾:最大公约数 最小公倍数 素数求取

    vb 关于窗口样式的API以及处理文本的API参考

    【引用】在VB6.0中实现弹出式菜单的几种方法

    【引用】URLDownloadToFile_VB下载文件!

    利用WinRar压缩和解压缩文件

    VB 剪切板

    VB实现指示窗口中拖动方框的程序

    VB绘制走动的表针

    如何用VB制作DLL文件

    【引用】VB修改IP地址

    VB多窗体退出代码

    []VB:如何检测到U盘的插拔(源代码)

    巧用SendMessage函数扩展Treeview功能

    vb中如何在任务管理器里面隐藏应用程序进程

    如何实现VBEXCEL的无缝连接

    一个API方式存取日志文件的模块[VB]

    VB用记录集填充表格函数

    VB打开文本文件各种方法

    vb ClipBoard 剪切板应用(复制剪切粘贴)

    【引用】窗口处理技巧大全 vb(窗体控件)

    【转】 Md rd命令之VB

    vb:读写文本文件

    vb中实现真正锁定的带自定义菜单的文本控件

    【引用】使用CommonDialogShowSave后如何判断是保存还是取消?

    vb 关于commondialog的多选VB获取Windows操作系统所有版本

    vb UTF文本文件访问

    VB编程中的Unicode vs Ansi

    VBPiView4注册机

    VB获取超过2G文件的大小

    CopyMemory还要快的函数SuperCopyMemory

    VB:编程效率快步提高之:十七种可用一行代码完成的技巧

    VB画出来的五星红旗

    Qt第一印象——QteQt  


    更多精彩>>>
    展开全文
  • 1. 菜单被击中的消息:  1) 一般关于菜单产生最平凡的几个消息莫过于WM_INITMENU、WM_INITMENUPOPUP、WM_MENUSELECT这三个消息;... 3) WM_INITMENUPOPUP消息会在顶层菜单被击中后、子菜单被下拉之前产生,你
  • 小甲鱼零基础入门学习python笔记

    万次阅读 多人点赞 2019-08-14 11:06:30
    以简单的方式快速完成某些复杂的事情通常是创造脚本语言的重要原则,基于这原则,使得脚本语言通常比 C 语言、C++语言 或 Java 之类的系统编程语言要简单容易。也让脚本语言另有一些属于脚本语言的特性: • 语法...
  •  有关菜单的操作主要用到CMenu类,当然也可用相应API函数,CMenu类只是MFC对API中操作菜单的函数的封装而已。 不过能用类就尽量用类,类的组织方式好呗,代码看着也舒服。 若是SDK编程,那就用API吧 。    ...
  • 菜单菜单命令响应函数

    千次阅读 2012-03-08 16:47:23
    菜单菜单命令响应函数 1、创建基于单文档工程Menu,添加菜单:IDM_TEST Test 2、通过类向导, 为IDM_TEST在CMainFrame、CMenuView、CMenuDoc、CMenuApp下添加菜单命令响应函数,即WM_COMMAND响应函数。 ...
  • Delphi弹出菜单设计.5

    千次阅读 2011-10-16 14:15:59
    5.1弹出菜单  弹出菜单又称为快捷菜单,是在某个组件上右击时弹出菜单。快捷菜单中提供了与该组件相关的命令,如下图所示。 与主菜单相比,弹出菜单具有更高的灵活性,它不但可以用于窗体本身,还可以...
  • CMenu(弹出菜单

    千次阅读 2015-08-14 22:10:38
    CMenu(弹出菜单
  • Dos命令讲解

    千次阅读 多人点赞 2018-08-21 21:47:07
     三、DOS的内部命令与外部命令 四、系统环境变量讲解 增加Path环境变量路径 常见的系统环境变量 五、常用的运行命令 六、DOS使用技巧 设置CMD的默认路径 设置CMD的字体、背景颜色 设置快捷键启动CMD 查找当前CMD...
  • C#基础教程-c#实例教程,适合初学者

    万次阅读 多人点赞 2016-08-22 11:13:24
    如果在电脑上安装了Visual Studio.Net,则可以在集成开发环境中直接选择快捷键或菜单命令编译并执行源文件。如果您不具备这个条件,那么至少需要安装Microsoft.Net Framework SDK,这样才能够运行C#语言程序。...
  • 测试开发笔记

    万次阅读 多人点赞 2019-11-14 17:11:58
    架构师,开发工程师写《概要设计说明书》High-level design(HLD) 内容:系统程序中的模块,模块和他们之间的关系和接口 测试的工作:对HLD进行测试和评审A集成测试计划《集成测试计划书》B集成测试设计《集成...
  • 无需担心一个接口关闭或拔,因为另一个接口可以工作。绑定界面的行为取决于绑定方法。  36. Linux中的网络绑定有哪些不同的模式? 答:  Mode-0(balance-rr): 这是默认模式,基于轮询策略。它提供...
  • 如何动态添加菜单/菜单子菜单、右键菜单 有关菜单的操作主要用到CMenu类,当然也可用相应API函数,CMenu类只是MFC对API中操作菜单的函数的封装而已。 不过能用类就尽量用类,类的组织方式好呗,代码看着也舒服...
  • 如何动态添加菜单/菜单子菜单、右键菜单  有关菜单的操作主要用到CMenu类,当然也可用相应API函数,CMenu类只是MFC对API中操作菜单的函数的封装而已。 不过能用类就尽量用类,类的组织方式好呗,代码看着也...
  • 右键弹出菜单和快捷键的设置

    万次阅读 2015-04-25 13:53:19
    我的项目是一个播放器的实现,那么在屏幕中央右键点击,应该会弹出右键菜单,比如播放,暂停等,如我这样: 对应的每一个菜单应该还有相应的快捷键。那么具体如何设置呢?此处我省略在资源中添加菜单的步骤了,我的...
  • 为树形控件添加弹出菜单,并跟踪所选择的动态弹出菜单 //获取当前右键的位置 CPoint pt; GetCursorPos(&pt); m_tree.ScreenToClient(&pt); //判断右键的位置处是否是树形控件的一个节点 //若有,则...
  • 基于对话框的应用程序默认是没有菜单的,如果我们想为它添加菜单, 可按以下方法
  • C# .NET弹出窗口大全

    千次阅读 2016-04-08 17:50:53
    //关闭,父窗口弹出对话框,窗口直接关闭 this.Response.Write("window.close();"); //关闭,父窗口和窗口都不弹出对话框,直接关闭 this.Response.Write(""); this.Response.Write("{top.opener =null;...
  • 可是一会儿上网时发现,程序没有卸载干净,IE右键菜单中多了一个叫做“使用华之城小说下载此链接”的。用了CCleaner等好几个清理注册表的软件清理都没解决问题。直接上网搜“鼠标右键菜单 清理”,打开注册表编辑...
  • WPF开发教程

    万次阅读 多人点赞 2019-07-02 23:13:20
    WPF 命令系统允许开发人员以命令终结点(一种用于实现 ICommand 的功能)的方式定义功能。命令绑定使元素可以定义输入笔势 (Ctrl+N) 和命令(“新建”)之间的映射。输入笔势和命令定义都是可扩展的,并且可以在使用...
  • 近期需要实现一个功能:MFC对话框中,一项菜单下有五个菜单项,改变菜单项选中状态,每次只能选择其中一个打勾。(单选) 然后在网上搜了下资料,稍微总结下,以防后面用到。   1.单选实现: CMenu* menu = ...
  • MFC界面编程基础(08):菜单(一)

    千次阅读 2018-12-25 20:11:21
    菜单栏、工具栏和状态栏是组成Windows程序图形界面的三个主要元素。大多数Windows程序都提供了菜单,作为用于与应用程序之间交互...,例如 【文件】 菜单下的 【打开】菜单命令,即可弹出打开文件对话框。 在VS中打...
  • CSS+Javascript弹出式导航菜单

    千次阅读 2008-06-20 12:31:00
    最近在做一个页面时,需要... 还是先把效果图展示一下吧:(此菜单在IE于FF均适用) 菜单的操作流程是:单击上面的栏目后,弹出菜单,当鼠标放到某一菜单项时颜色加深显示,当鼠标离开800毫秒后,弹出菜单隐藏。 具
  • 如下图所示,当鼠标右键单击excel工作表中的单元格时,将会弹出单元格右键快捷菜单。 虽然从excel 2007开始 微软引进了ribbon 功能区来代替excel 常规菜单栏,但是像上图所示的鼠标右键快捷菜单还有很多没有被...
  • HTML弹出对话框功能大全

    千次阅读 2018-07-29 11:41:00
    注://关闭,父窗口弹出对话框,窗口直接关闭 this.Response.Write("<script language=javascript>window.close();</script>"); //关闭,父窗口和窗口都不弹出对话框,直接关闭 this.Response.Write(...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,435
精华内容 12,574
关键字:

弹出子菜单的命令项