10楼#
发布于:2004-11-04 11:19
<P 0cm 0cm 0pt"><FONT size=2>' 设置菜单项状态<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>Public Sub SetItemState(ByVal itemAlias As String, ByVal itemState As MenuItemState)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Dim i As Long<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> For i = 0 To UBound(MyItemInfo)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> If MyItemInfo(i).itemAlias = itemAlias Then<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> MyItemInfo(i).itemState = itemState<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Dim ItemInfo As MENUITEMINFO<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> With ItemInfo<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> .cbSize = Len(ItemInfo)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> .fMask = MIIM_STRING Or MIIM_FTYPE Or MIIM_STATE Or MIIM_SUBMENU Or MIIM_ID Or MIIM_DATA<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> End With<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> GetMenuItemInfo hMenu, i, False, ItemInfo<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> With ItemInfo<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> .fState = .fState Or itemState<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> End With<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> SetMenuItemInfo hMenu, i, False, ItemInfo<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Exit For<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> End If<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Next i<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Sub<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>' 获得菜单项状态<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>Public Function GetItemState(ByVal itemAlias As String) As MenuItemState<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Dim i As Long<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> For i = 0 To UBound(MyItemInfo)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> If MyItemInfo(i).itemAlias = itemAlias Then<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> GetItemState = MyItemInfo(i).itemState<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Exit For<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> End If<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Next i<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Function<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>' 属性: 菜单句柄<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Get hwnd() As Long<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> hwnd = hMenu<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Let hwnd(ByVal nValue As Long)<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>' 属性: 菜单附加条宽度<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Get LeftBarWidth() As Long<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> LeftBarWidth = BarWidth<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Let LeftBarWidth(ByVal nBarWidth As Long)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> If nBarWidth >= 0 Then<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> BarWidth = nBarWidth<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> End If<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>' 属性: 菜单附加条风格<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Get LeftBarStyle() As MenuLeftBarStyle<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> LeftBarStyle = BarStyle<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Let LeftBarStyle(ByVal nBarStyle As MenuLeftBarStyle)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> If nBarStyle >= 0 And nBarStyle <= 4 Then<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> BarStyle = nBarStyle<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> End If<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>' 属性: 菜单附加条图像(只有当 LeftBarStyle 设置为 LBS_IMAGE 时才有效)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Get LeftBarImage() As StdPicture<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Set LeftBarImage = BarImage<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Let LeftBarImage(ByVal nBarImage As StdPicture)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Set BarImage = nBarImage<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>' 属性: 菜单附加条过渡色起始颜色(只有当 LeftBarStyle 设置为 LBS_HORIZONTALCOLOR 或 LBS_VERTICALCOLOR 时才有效)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>' 当 LeftBarStyle 设置为 LBS_SOLIDCOLOR (实色填充)时以 LeftBarStartColor 颜色为准<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Get LeftBarStartColor() As Long<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> LeftBarStartColor = BarStartColor<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Let LeftBarStartColor(ByVal nBarStartColor As Long)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> BarStartColor = nBarStartColor<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>' 属性: 菜单附加条过渡色终止颜色(只有当 LeftBarStyle 设置为 LBS_HORIZONTALCOLOR 或 LBS_VERTICALCOLOR 时才有效)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>' 当 LeftBarStyle 设置为 LBS_SOLIDCOLOR (实色填充)时以 LeftBarStartColor 颜色为准<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Get LeftBarEndColor() As Long<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> LeftBarEndColor = BarEndColor<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Let LeftBarEndColor(ByVal nBarEndColor As Long)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> BarEndColor = nBarEndColor<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>' 属性: 菜单项高亮条的范围<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Get ItemSelectScope() As MenuItemSelectScope<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ItemSelectScope = SelectScope<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Let ItemSelectScope(ByVal nSelectScope As MenuItemSelectScope)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> SelectScope = nSelectScope<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>' 属性: 菜单项可用时文字颜色<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Get ItemTextEnabledColor() As Long<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ItemTextEnabledColor = TextEnabledColor<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Let ItemTextEnabledColor(ByVal nTextEnabledColor As Long)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> TextEnabledColor = nTextEnabledColor<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>' 属性: 菜单项不可用时文字颜色<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Get ItemTextDisabledColor() As Long<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ItemTextDisabledColor = TextDisabledColor<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Let ItemTextDisabledColor(ByVal nTextDisabledColor As Long)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> TextDisabledColor = nTextDisabledColor<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>' 属性: 菜单项选中时文字颜色<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Get ItemTextSelectColor() As Long<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ItemTextSelectColor = TextSelectColor<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Let ItemTextSelectColor(ByVal nTextSelectColor As Long)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> TextSelectColor = nTextSelectColor<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>' 属性: 菜单项图标风格<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Get ItemIconStyle() As MenuItemIconStyle<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ItemIconStyle = IconStyle<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Let ItemIconStyle(ByVal nIconStyle As MenuItemIconStyle)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> IconStyle = nIconStyle<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>' 属性: 菜单项边框风格<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Get ItemSelectEdgeStyle() As MenuItemSelectEdgeStyle<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ItemSelectEdgeStyle = EdgeStyle<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Let ItemSelectEdgeStyle(ByVal nEdgeStyle As MenuItemSelectEdgeStyle)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> EdgeStyle = nEdgeStyle<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>' 属性: 菜单项边框颜色<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Get ItemSelectEdgeColor() As Long<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ItemSelectEdgeColor = EdgeColor<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Let ItemSelectEdgeColor(ByVal nEdgeColor As Long)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> EdgeColor = nEdgeColor<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>' 属性: 菜单项背景填充风格<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Get ItemSelectFillStyle() As MenuItemSelectFillStyle<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ItemSelectFillStyle = FillStyle<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Let ItemSelectFillStyle(ByVal nFillStyle As MenuItemSelectFillStyle)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> FillStyle = nFillStyle<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>' 属性: 菜单项过渡色起始颜色(只有当 ItemSelectFillStyle 设置为 ISFS_HORIZONTALCOLOR 或 ISFS_VERTICALCOLOR 时才有效)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>' 当 ItemSelectFillStyle 设置为 ISFS_SOLIDCOLOR (实色填充)时以 ItemSelectFillStartColor 颜色为准<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Get ItemSelectFillStartColor() As Long<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ItemSelectFillStartColor = FillStartColor<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Let ItemSelectFillStartColor(ByVal nFillStartColor As Long)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> FillStartColor = nFillStartColor<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>' 属性: 菜单项过渡色终止颜色(只有当 ItemSelectFillStyle 设置为 ISFS_HORIZONTALCOLOR 或 ISFS_VERTICALCOLOR 时才有效)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>' 当 ItemSelectFillStyle 设置为 ISFS_SOLIDCOLOR (实色填充)时以 ItemSelectFillStartColor 颜色为准<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Get ItemSelectFillEndColor() As Long<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ItemSelectFillEndColor = FillEndColor<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Let ItemSelectFillEndColor(ByVal nFillEndColor As Long)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> FillEndColor = nFillEndColor<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>' 属性: 菜单背景颜色<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Get BackColor() As Long<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> BackColor = BkColor<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Let BackColor(ByVal nBkColor As Long)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> BkColor = nBkColor<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>' 属性: 菜单分隔条风格<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Get SeparatorStyle() As MenuSeparatorStyle<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> SeparatorStyle = SepStyle<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Let SeparatorStyle(ByVal nSepStyle As MenuSeparatorStyle)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> SepStyle = nSepStyle<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>' 属性: 菜单分隔条颜色<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Get SeparatorColor() As Long<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> SeparatorColor = SepColor<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>Public Property Let SeparatorColor(ByVal nSepColor As Long)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> SepColor = nSepColor<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Property<p></p></FONT></P>
|
|
|
11楼#
发布于:2004-11-04 11:19
<FONT size=2> 其实,漂亮的界面都是“画”出来的,菜单当然也不例外。既然是“画”出来的,就需要有窗体来接收“画”菜单这个消息,后面我们会看到,实际上不仅仅是“画”这个消息,一切关于这个菜单的消息都要有一个窗体来接收。如果你对消息不太了解,可以看看网上其它一些关于Windows消息机制的文章。不了解也没有关系,只要会使用就可以了,后面的文章给出了完整的源代码,而且文章的最后还给出了源代码的下载地址。
下面我们来创建接收消息的窗体:打开上次建好的工程,添加一个窗体,并将其名称设置为frmMenu(<FONT color=#ff0000>注意:这一步是必须的</FONT>)。还记得上篇文章的最后一幅图吗?菜单左边那个黑底色的附加条,为了方便,将frmMenu的Picture属性设置成那幅图。到此,这个窗体就算OK了!对了,就这样,因为这个窗体仅仅是为了处理消息和存储那个黑底色的风格条,我们将会对它进行子类处理,处理消息的代码全部都放在了将在下一篇中详细介绍的标准模块中。 接下来添加一个类模块,并将其名称设置为cMenu,代码如下:</FONT><P 0cm 0cm 0pt"> </P><P 0cm 0cm 0pt"><FONT size=2>'**************************************************************************************************************<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>'* 本类模块是一个菜单类, 提供了各种样式的菜单的制作方案<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>'*<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>'* 版权: LPP软件工作室<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>'* 作者: 卢培培(goodname008)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>'* (******* 复制请保留以上信息 *******)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>'**************************************************************************************************************<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>Option Explicit<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>Private 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 Any) As Long<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>Public Enum MenuUserStyle ' 菜单总体风格<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> STYLE_WINDOWS<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> STYLE_XP<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> STYLE_SHADE<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> STYLE_3D<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> STYLE_COLORFUL<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Enum<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>Public Enum MenuSeparatorStyle ' 菜单分隔条风格<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> MSS_SOLID<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> MSS_DASH<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> MSS_DOT<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> MSS_DASDOT<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> MSS_DASHDOTDOT<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> MSS_NONE<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> MSS_DEFAULT<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Enum<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>Public Enum MenuItemSelectFillStyle ' 菜单项背景填充风格<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ISFS_NONE<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ISFS_SOLIDCOLOR<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ISFS_HORIZONTALCOLOR<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ISFS_VERTICALCOLOR<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Enum<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>Public Enum MenuItemSelectEdgeStyle ' 菜单项边框风格<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ISES_SOLID<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ISES_DASH<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ISES_DOT<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ISES_DASDOT<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ISES_DASHDOTDOT<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ISES_NONE<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ISES_SUNKEN<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ISES_RAISED<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Enum<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>Public Enum MenuItemIconStyle ' 菜单项图标风格<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> IIS_NONE<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> IIS_SUNKEN<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> IIS_RAISED<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> IIS_SHADOW<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Enum<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>Public Enum MenuItemSelectScope ' 菜单项高亮条的范围<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ISS_TEXT = ;H1<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ISS_ICON_TEXT = ;H2<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ISS_LEFTBAR_ICON_TEXT = ;H4<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Enum<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>Public Enum MenuLeftBarStyle ' 菜单附加条风格<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> LBS_NONE<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> LBS_SOLIDCOLOR<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> LBS_HORIZONTALCOLOR<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> LBS_VERTICALCOLOR<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> LBS_IMAGE<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Enum<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>Public Enum MenuItemType ' 菜单项类型<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> MIT_STRING = ;H0<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> MIT_CHECKBOX = ;H200<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> MIT_SEPARATOR = ;H800<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Enum<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>Public Enum MenuItemState ' 菜单项状态<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> MIS_ENABLED = ;H0<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> MIS_DISABLED = ;H2<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> MIS_CHECKED = ;H8<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> MIS_UNCHECKED = ;H0<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Enum<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>Public Enum PopupAlign ' 菜单弹出对齐方式<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> POPUP_LEFTALIGN = ;H0; ' 水平左对齐<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> POPUP_CENTERALIGN = ;H4; ' 水平居中对齐<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> POPUP_RIGHTALIGN = ;H8; ' 水平右对齐<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> POPUP_TOPALIGN = ;H0; ' 垂直上对齐<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> POPUP_VCENTERALIGN = ;H10; ' 垂直居中对齐<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> POPUP_BOTTOMALIGN = ;H20; ' 垂直下对齐<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Enum<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>' 释放类<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>Private Sub Class_Terminate()<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> SetWindowLong frmMenu.hwnd, GWL_WNDPROC, preMenuWndProc<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Erase MyItemInfo<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> DestroyMenu hMenu<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Sub<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>' 创建弹出式菜单<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>Public Sub CreateMenu()<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> preMenuWndProc = SetWindowLong(frmMenu.hwnd, GWL_WNDPROC, AddressOf MenuWndProc)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> hMenu = CreatePopupMenu()<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Me.Style = STYLE_WINDOWS<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Sub<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>' 插入菜单项并保存自定义菜单项数组, 设置Owner_Draw自绘菜单<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>Public Sub AddItem(ByVal itemAlias As String, ByVal itemIcon As StdPicture, ByVal itemText As String, ByVal itemType As MenuItemType, Optional ByVal itemState As MenuItemState)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Static ID As Long, i As Long<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Dim ItemInfo As MENUITEMINFO<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ' 插入菜单项<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> With ItemInfo<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> .cbSize = LenB(ItemInfo)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> .fMask = MIIM_STRING Or MIIM_FTYPE Or MIIM_STATE Or MIIM_SUBMENU Or MIIM_ID Or MIIM_DATA<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> .fType = itemType<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> .fState = itemState<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> .wID = ID<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> .dwItemData = True<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> .cch = lstrlen(itemText)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> .dwTypeData = itemText<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> End With<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> InsertMenuItem hMenu, ID, False, ItemInfo<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> <p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ' 将菜单项数据存入动态数组<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ReDim Preserve MyItemInfo(ID) As MyMenuItemInfo<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> <p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> For i = 0 To UBound(MyItemInfo)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> If MyItemInfo(i).itemAlias = itemAlias Then<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Class_Terminate<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Err.Raise vbObjectError + 513, "cMenu", "菜单项别名相同."<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> End If<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Next i<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2> With MyItemInfo(ID)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Set .itemIcon = itemIcon<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> .itemText = itemText<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> .itemType = itemType<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> .itemState = itemState<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> .itemAlias = itemAlias<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> End With<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> <p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ' 获得菜单项数据<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> With ItemInfo<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> .cbSize = LenB(ItemInfo)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> .fMask = MIIM_DATA Or MIIM_ID Or MIIM_TYPE<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> End With<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> GetMenuItemInfo hMenu, ID, False, ItemInfo<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> <p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ' 设置菜单项数据<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> With ItemInfo<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> .fMask = .fMask Or MIIM_TYPE<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> .fType = MFT_OWNERDRAW<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> End With<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> SetMenuItemInfo hMenu, ID, False, ItemInfo<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> <p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ' 菜单项ID累加<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> ID = ID + 1<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> <p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Sub<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>' 删除菜单项<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>Public Sub DeleteItem(ByVal itemAlias As String)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Dim i As Long<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> For i = 0 To UBound(MyItemInfo)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> If MyItemInfo(i).itemAlias = itemAlias Then<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> DeleteMenu hMenu, i, 0<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Exit For<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> End If<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Next i<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Sub<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>' 弹出菜单<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>Public Sub PopupMenu(ByVal x As Long, ByVal y As Long, ByVal Align As PopupAlign)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> TrackPopupMenu hMenu, Align, x, y, 0, frmMenu.hwnd, ByVal 0<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Sub<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>' 设置菜单项图标<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>Public Sub SetItemIcon(ByVal itemAlias As String, ByVal itemIcon As StdPicture)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Dim i As Long<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> For i = 0 To UBound(MyItemInfo)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> If MyItemInfo(i).itemAlias = itemAlias Then<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Set MyItemInfo(i).itemIcon = itemIcon<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Exit For<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> End If<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Next i<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Sub<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>' 获得菜单项图标<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>Public Function GetItemIcon(ByVal itemAlias As String) As StdPicture<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Dim i As Long<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> For i = 0 To UBound(MyItemInfo)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> If MyItemInfo(i).itemAlias = itemAlias Then<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Set GetItemIcon = MyItemInfo(i).itemIcon<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Exit For<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> End If<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Next i<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Function<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>' 设置菜单项文字<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>Public Sub SetItemText(ByVal itemAlias As String, ByVal itemText As String)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Dim i As Long<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> For i = 0 To UBound(MyItemInfo)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> If MyItemInfo(i).itemAlias = itemAlias Then<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> MyItemInfo(i).itemText = itemText<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Exit For<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> End If<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Next i<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Sub<p></p></FONT></P><P 0cm 0cm 0pt"><p><FONT size=2> </FONT></p></P><P 0cm 0cm 0pt"><FONT size=2>' 获得菜单项文字<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>Public Function GetItemText(ByVal itemAlias As String) As String<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Dim i As Long<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> For i = 0 To UBound(MyItemInfo)<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> If MyItemInfo(i).itemAlias = itemAlias Then<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> GetItemText = MyItemInfo(i).itemText<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Exit For<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> End If<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2> Next i<p></p></FONT></P><P 0cm 0cm 0pt"><FONT size=2>End Function<p></p></FONT></P> |
|
|
上一页
下一页