⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 040105.htm

📁 提供一个VB学习教程,入门级。来源于网上
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>vb study</title>
<style>
<!--
td {font-size: 9pt}
A:link {text-decoration: none; color: #0033cc;font-size: 9pt}
A:visited {text-decoration: none; color: #0066CC;font-size: 9pt}
A:active {text-decoration: none; color: #ff0000; font-size: 9pt}
A:hover {text-decoration: underline; color: #000000;font-size: 9pt}
-->
</style>
</head>
<body>
<div align="center">
  <center>
  <table border="0" cellpadding="0" cellspacing="0" width="98%">
    <tr>
      <td width="100%"><a href="#">你的位置</a>:<a href="http://www.xxby.com" target="_blank">华生小屋</a>--<a href="#">VB学习</a>--<a href="#">API函数</a></td>
    </tr>
    <tr>
      <td width="100%">
        <p align="center">菜单类函数</td>
    </tr>
    <tr>
      <td width="100%"><br>
        取得窗口中的菜单句柄函数:GetMenu<br>
        该函数返回指定窗口中菜单的&quot;总&quot;的句柄(在有菜单的前提下)。声明:<br>
        Declare Function GetMenu Lib &quot;user32&quot; (ByVal hwnd As Long) As Long<br>
        参数hwnd为1个窗口句柄。注意:该窗口应是1个窗体如Form的句柄。不能是1个子窗口(因为子窗口不会包含菜单)。<br>
        说明:我们通常见到的&quot;文件&quot;&quot;编辑&quot;&quot;帮助&quot;等最上层菜单都归于1个窗口总句柄之下,也就是说它们都是窗口菜单总句柄的&quot;子菜单&quot;。<br>
        调用如: x = GetMenu(Form1.hwnd),x就返回Form1中菜单总句柄。<br>
        --------------------------------------<br>
        取得菜单中一个指定菜单项的句柄:GetSubMenu<br>
        该函数根据菜单的句柄求得其中某个菜单项的句柄,要指明所求菜单项位于菜单中的顺序位置,从第1个菜单项位置为0开始。声明:<br>
        Declare Function GetSubMenu Lib &quot;user32&quot; (ByVal hMenu As Long, ByVal nPos As Long) As Long <br>
        参数:<br>
        hMenu:父菜单的句柄 <br>
        nPos:子菜单项在该父菜单中的位置。第一个子菜单项的编号为0。 <br>
        多次调用此函数,可得到任意级下的子菜单项句柄,如要得到窗口form1中&quot;文件&quot;菜单(排在同级菜单第1位)的&quot;新建&quot;(在同级菜单即&quot;文件&quot;菜单的多条子菜单中位置排在第1位)菜单的&quot;Web页&quot;(排在&quot;新建&quot;下1级子菜单的第3位)子菜单的句柄,如下:<br>
        a = GetMenu(Form1.hwnd) 得到总句柄<br>
        b = GetSubMenu(a, 0) 得到&quot;文件&quot;菜单句柄<br>
        c = GetSubMenu(b, 0) 得到&quot;新建&quot;菜单句柄<br>
        d = GetSubMenu(c, 2) 得到&quot;Web页&quot;菜单句柄<br>
        ----------------------------------------------<br>
        读取指定菜单项的标题字符串:GetMenuStringA函数<br>
        声明:<br>
        Declare Function GetMenuString Lib &quot;user32&quot; Alias &quot;GetMenuStringA&quot; (ByVal hMenu As Long, ByVal wIDItem As Long, ByVal lpString As String, ByVal nMaxCount As Long, ByVal wFlag As Long) As Long<br>
        调用如: <br>
        Private Const MF_BYPOSITION = &amp;H400&amp;<br>
        z = GetMenuStringA(GetMenu(Form1.hwnd), 0, LXN, 255, MF_BYPOSITION)<br>
        LXN = Left(LXN, z)<br>
        Print LXN<br>
        上例LXN返回&quot;文件&quot;菜单的&quot;文件&quot;两个字。<br>
        参数:<br>
        hMenu:菜单句柄。 <br>
        wIDItem:菜单项的标识符。如果在wFlags参数中设置了MF_BYCOMMAND,这个参数就用菜单项的命令ID。如果设置的是MF_BYPOSITION,这个参数就用菜单项在菜单中的位置(这时与GetSubMenu的参数相似) <br>
        lpString:指定一个预先定义好的字符串缓冲区,以便为菜单项装载标题字串 <br>
        nMaxCount:载入lpString缓冲区中的最大字符数量+1。(缓冲区长度)。 <br>
        wFlag:常数MF_BYCOMMAND或MF_BYPOSITION,取决于wIDItem参数的设置 。<br>
        注:函数返回值为在lpString中返回的字串的长度。因此上例中直接用 LXN = Left(LXN, z)来得到&quot;纯返回字符串&quot;。<br>
        --------------------------------------------------<br>
        修改窗口的系统菜单:GetSystemMenu函数<br>
        该函数返回指定窗口的系统菜单句柄,并决定是否可修改,声明:<br>
        Declare Function GetSystemMenu Lib &quot;user32&quot; (ByVal hwnd As Long, ByVal bRevert As Long) As Long<br>
        参数hwnd为窗口句柄,bRevert--是否使用缺省的原始系统菜单,设为False时可修改系统菜单,设为True则恢复为原始系统菜单。<br>
        函数返回值为系统菜单句柄。<br>
        调用如:(向系统菜单附加1条菜单项)<br>
        lxn = GetSystemMenu(hwnd, False)<br>
        AppendMenu lxn, MF_STRING, 11, &quot;李新宁&quot;<br>
        可以用InsertMenuItem函数插入或追加菜单项, 当然也可分别用InsertMenu插入菜单项,或用AppendMenu追加菜单项。<br>
        --------------------------------------<br>
        插入菜单项:InsertMenuA函数<br>
        此函数在菜单的指定位置处插入一个菜单项,并根据需要将其他菜单项向下移动。<br>
        声明:<br>
        Declare Function InsertMenuA Lib &quot;user32&quot; (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long<br>
        参数:<br>
        hMenu :菜单的句柄 <br>
        nPosition:指定新菜单项插入点的一个现有菜单项标识符。如果在wFlags中指定了MF_BYCOMMAND标志,这个参数就代表欲改变的菜单项的命令ID。如设置的是MF_BYPOSITION标志,这个参数就代表菜单项在菜单中的位置,第一个菜单项的位置为零。 <br>
        wFlags :可以是以下多个常数标志的组合:<br>
        菜单常数标志表<br>
        MF_BITMAP 菜单条目是一幅位图。一旦设入菜单,这幅位图就绝对不能删除。所以不应该使用由vb的image属性返回的值<br>
        MF_BYCOMMAND 菜单条目由菜单的命令ID指定<br>
        MF_BYPOSITION 菜单条目由条目在菜单中的位置决定。零代表菜单中的第一个条目<br>
        MF_CHECKED 检查指定的菜单条目。不能与vb的checked属性兼容<br>
        MF_DISABLED 禁止指定的菜单条目。不与vb的enabled属性兼容<br>
        MF_ENABLED 允许指定的菜单条目。不与vb的enabled属性兼容<br>
        MF_GRAYED 禁止指定的菜单条目,并用浅灰色描述它。不与vb的enabled属性兼容<br>
        MF_MENUBARBREAK 在弹出式菜单中,将指定的条目放置于一个新列,并用一条垂直线分隔不同的列<br>
        MF_MENUBREAK 在弹出式菜单中,将指定的条目放置于一个新列。在顶级菜单中,将条目放置到一个新行<br>
        MF_OWNERDRAW 创建一个物主绘图菜单(由您设计的程序负责描绘每个菜单条目)<br>
        MF_POPUP 将一个弹出式菜单置于指定的条目。可用于创建子菜单及弹出式菜单<br>
        MF_SEPARATOR 在指定的条目处显示一条分隔线<br>
        MF_STRING 在指定的条目处放置一个字串。不与vb的caption属性兼容<br>
        MF_UNCHECKED 检查指定的条目。不能与vb的checked属性兼容<br>
        注:标志的下述组合形式是不允许的:MF_BYCOMMAND和MF_BYPOSITION;MF_CHECKED和MF_UNCHECKED;MF_MENUBARBREAK和MF_MENUB<br>
        REAK;MF_DISABLED,MF_ENABLED和MF_GRAYED;MF_BITMAP,MF_STRING,MF_OWNERDRAW和MF_SEPARATOR <br>
        wIDNewItem :指定菜单项的新命令ID。如果在wFlags中指定了MF_POPUP标志,就应该指定弹出式菜单的一个句柄 。(其实相当于菜单编辑器中的&quot;名称&quot;框,只不过要用Long型值,如123,以用于响应事件)。<br>
        lpNewItem 如果在wFlags参数中设置了MF_STRING标志,就代表要设置到菜单中的字串(String)。(相当于菜单编辑器中的&quot;标题&quot;框,如写&quot;文件&quot;),如设置的是MF_BITMAP标志,就代表一个Long型变量,其中包含了一个位图句柄。调用如:<br>
        lxn = GetSystemMenu(hwnd, False)<br>
        InsertMenuA lxn, 0, MF_BYPOSITION + MF_STRING, 11, &quot;添加到第一项&quot;<br>
        上例lxn为菜单句柄,0为添加位置(添加到原第1项前)用MF_BYPOSITION&quot;位置&quot;非&quot;ID&quot;作标准,第3个参数指定①按POSITION来度量菜单顺序位置;和②菜单项标题内容为文字,&quot;11&quot;为自定的菜单ID标识符(用于代码中对新建的本菜单项进行控制),后面引号内文字为新插入的这个菜单项标题。<br>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -