You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向窗体系统菜单添加带图标的自定义菜单项?现有代码图标不生效如何解决

问题原因
  • 核心错误:你代码中TMenuItemInfo的fMask参数仅配置了MIIM_TYPE和MIIM_ID,没有添加MIIM_BITMAP标识,系统会直接忽略hbmpItem字段的内容,所以图标无法渲染。
  • 其他注意项:需要确保Image1中加载的位图尺寸为标准系统菜单图标大小(通常16*16像素),且Image1控件不会在窗体运行过程中被提前释放,避免位图句柄失效。
修复后可运行代码
procedure TForm1.FormCreate(Sender: TObject);
var item : TMenuItemInfo;
begin
  with item do
  begin
    cbSize := SizeOf(MenuItemInfo);
    // 新增MIIM_BITMAP标识,告知系统需要读取位图字段
    fMask := MIIM_TYPE or MIIM_ID or MIIM_BITMAP;
    fType := MFT_STRING;
    wID := 180;
    dwTypeData := PChar('Test');
    cch := 4;
    hbmpItem := Image1.Picture.Bitmap.Handle;  //Image1是TImage控件,提前加载好16*16位图
  end;
  InsertMenuItem(GetSystemMenu(Handle, FALSE),0,true,item);
end;

内容的提问来源于stack exchange,提问作者Larbi Marref

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 16:54:04