GetSystemMenu AppendMenu 和 deleteMenu .

来源:互联网 发布:邮件群发软件效果 编辑:程序博客网 时间:2024/06/06 02:38

GetSystemMenu

  函数功能:该函数允许应用程序为复制或修改而访问窗口菜单(系统菜单或控制菜单)。
  函数原型:HMENU GetSystemMenu(HWND hWnd,BOOL bRevert);
  参数:
  hWvd:拥有窗口菜单拷贝的窗口的句柄。
  BPevert:指定将执行的操作。如果此参数为FALSE,GetSystemMenu返回当前使用窗口菜单的拷贝的句柄。该拷贝初始时与窗口菜单相同,但可以被修改。
  如果此参数为TRUE,GetSystemMenu重置窗口菜单到缺省状态。如果存在先前的窗口菜单,将被销毁。
  返回值:如果参数bRevert为FALSE,返回值是窗口菜单的拷贝的句柄:如果参数bRevert为TRUE,返回值是NULL。
  备注:任何没有用函数GetSystemMenu来生成自己的窗口菜单拷贝的窗口将接受标准窗口菜单。
  窗口某单最初包含的菜单项有多种标识符值,如SC_CLOSE,SC_MOVE和SC_SIZE。
  窗口菜单上的菜单项发送WM_SYSCOMMAND消息。
  所有预定义的窗口菜单项的标识符数大于OxFOOO。如果一个应用程序增加命令到窗口菜单,应该使用小于OxFOOO的标识符数。
  系统根据状态自动变灰标准窗口菜单上的菜单项。应用程序通过响应在任何某单显示之前发送的WM_INITMENU消息来实现选取和变灰。
  Windows CE环境下,不支持系统菜单,但GetSyemMenu以宏的方式实现,以保持和已存在代码的兼容性。可以使用该宏的返回菜单句柄使关闭框无效,与在Windows桌面平台上一样。Windows CE下的返回值没有其他用处。参数bRevert无用。
  用下面的代码使关闭按钮无效:
  EnableMenultem(GetSystemMenu(hwnd,FALSE),SC_CLOSE,MF_BYCOMMAND I MF_GRAYED);

AppendMenu

  函数功能:该函数在指定的菜单条、下拉式菜单、子菜单或快捷菜单的末尾追加一个新菜单项。此函数可指定菜单项的内容、外观和性能。函数AppendMenu己被lnsertMenultem取代。但如果不需要lnsertMenultem的扩展特性,仍可使用AppendMenu。
  函数原型:BOOL AppendMenu(hMenu hMenu,UINT uFlags,UINT uIDNewltem,LPCTSTR lpNewltem);
  参数:
  hMenu:将被修改的菜单条、下拉式菜单、子菜单、或快捷菜单的句柄。
  UFlags:控制新菜单项的外观和性能的标志。此参数可以是备注里所列值的组合。
  UIDNewltem:指定新菜单项的标识符,或者当uFlags设置为MF_POPUP时,表示下拉式菜单或子菜单的句柄。
  LpNewltem:指定新菜单项的内容。此参数的含义取决于参数uFlags是否包含MF_BITMAP, MF_OWNERDRAW或MF_STRING标志,如下所示:
  MF_BITMAP:含有位图句柄。MF_STRING:以`/O’结束的字符串的指针。
  MF_OWNERDRAW:含有被应用程序应用的32位值,可以保留与菜单项有关的附加数据。当菜单被创建或其外观被修改时,此值在消息WM_MEASURE或WM_DRAWITEM的参数IParam指向的结构,成员itemData里。
  返回值:如果函数调用成功,返回非零值;如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。
  备注:一旦菜单被修改,无论它是否在显示窗口里,应用程序必须调用函数DrawMenuBar。
  为了使键盘加速键能控制位留或自己绘制的菜单项,菜单的拥有者必须处理WM_MENUCHAR消息。
  参见自绘制菜单和WM_MENUCHAR消息。
  下列标志可被设置在参数uFlags里:
  MF_BITMAP:将一个位图用作菜单项。参数lpNewltem里含有该位图的句柄。
  MF_CHECKED:在菜单项旁边放置一个选取标记。如果应用程序提供一个选取标记,位图(参见SetMenultemBitmaps),则将选取标记位图放置在菜单项旁边。
  MF_DISABLED:使菜单项无效,使该项不能被选择,但不使菜单项变灰。
  MF_ENABLED:使菜单项有效,使该项能被选择,并使其从变灰的状态恢复。
  MF_GRAYED:使菜单项无效并变灰,使其不能被选择。
  MF_MENUBARBREAK:对菜单条的功能同MF_MENUBREAK标志。对下拉式菜单、子菜单或快捷菜单,新列和旧列被垂直线分开。
  MF_MENUBREAK:将菜单项放置于新行(对菜单条),或新列(对下拉式菜单、子菜单或快捷菜单)且无分割列。
  MF_OWNERDRAW:指定该菜单项为自绘制菜单项。菜单第一次显示前,拥有菜单的窗口接收一个WM_MEASUREITEM消息来得到菜单项的宽和高。然后,只要菜单项被修改,都将发送WM_DRAWITEM消息给菜单拥有者的窗口程序。
  MF_POPUP:指定菜单打开一个下拉式菜单或子菜单。参数uIDNewltem下拉式菜单或子菜单的句柄。此标志用来给菜单条、打开一个下拉式菜单或于菜单的菜单项、子菜单或快捷菜单加一个名字。
  MF_SEPARATOR:画一条水平区分线。此标志只被下拉式菜单、于菜单或快捷菜单使用。此区分线不能被变灰、无效或加亮。参数IpNewltem和uIDNewltem无用。
  MF_STRING:指定菜单项是一个正文字符串;参数lpNewltem指向该字符串。
  MF_UNCHECKED:不放置选取标记在菜单项旁边(缺省)。如果应用程序提供一个选取标记位图(参见SetMenultemBitmaps),则将选取标记位图放置在菜单项旁边。
  下列标志组不能被一起使用:
  MF_DISABLED,MF_ENABLED和MF_GRAYED;MF_BITMAP,MF_STRING和MF_OWNERDRAW
  MF_MENUBARBREAK和MF_MENUBREAK;MF_CHECKED和MF_UNCHECKED
  Windows CE环境下,不支持参数fuFlags使用下列标志:
  MF_BITMAP;MF_DOSABLE;MF_GRAYED
  MF_GRAYED可用来代替MF_DISABLED和MFS_GRAYED。
  Windows CE 1.0不支持层叠式菜单。在使用Windows CE 1.0时,不能将一个MF_POPUP菜单插入到另一个下拉式菜单中。Window CE 1.0不支持下列标志:
  MF_POPUP;MF_MENUBREAK;MF_MENUBARBREAK
  Windows CE 2.0或更高版本中,支持上述标志,也支持层叠式菜单。
DeleteMenu(hMenu :HMENU; uPosition :Cardinal; uFlags :Cardinal)
功能说明:
  删除指定的菜单条目(在vb里使用:强烈建议用vb菜单的visible属性从菜单中删除条目。如使用这个函数,会造成指定菜单其他菜单条目的visible属性错误的影响菜单条目)
返回值:
  Long,非零表示成功,零表示失败。会设置GetLastError
参数表:
  参数 类型及说明
  hMenu Long,菜单句柄
  nPosition Long,欲删除菜单条目的标识符。如在wFlags中设置了MF_BYCOMMAND标志,这个参数就代表要改变的菜单条目的命令ID。如设置了MF_BYPOSITION标志,这个参数就代表条目在菜单中的位置(头一个条目肯定是零)
  wFlags Long,MF_BYPOSITION或MF_BYCOMMAND,具体由nPosition参数决定
  注解
  如条目连接了一个弹出式菜单,就会清除弹出式菜单。用RemoveMenu函数清除一个弹出式菜单条目,同时不影响整个弹出式菜单
0 0
原创粉丝点击