22 个版本

0.2.3 2024 年 8 月 22 日
0.2.2 2024 年 8 月 20 日
0.1.18 2024 年 8 月 2 日
0.1.17 2024 年 7 月 28 日
0.1.6 2024 年 6 月 24 日

#110GUI

Download history 316/week @ 2024-05-31 68/week @ 2024-06-07 389/week @ 2024-06-14 176/week @ 2024-06-21 156/week @ 2024-06-28 206/week @ 2024-07-05 222/week @ 2024-07-12 476/week @ 2024-07-19 371/week @ 2024-07-26 123/week @ 2024-08-02 4/week @ 2024-08-09 468/week @ 2024-08-16

1,013 每月下载量

MIT 许可证

110KB
2.5K SLoC

wcpopup

Rust 用于 Windows 的上下文/弹出菜单。
支持暗/亮主题以及颜色/大小配置。

  • 颜色
    • 文本颜色
    • 背景颜色
    • 边框颜色
  • 大小
    • 菜单填充
    • 菜单项填充
  • 字体
    • 字体家族
    • 大小和粗细

samplesample

用法

使用 ManuBuilder 创建带有 MenuItems 的菜单,然后调用 Menu.popup_at() 显示菜单。
当点击 MenuItem 时,返回 SelectedMenuItem 数据。

fn example(window_handle: isize) {
    let mut builder = MenuBuilder::new(window_handle);
    // Using HWND
    // let mut builder = MenuBuilder::new_for_hwnd(hwnd);

    builder.check("menu_item1", "Fit To Window", true, None);
    builder.separator();
    builder.text_with_accelerator("menu_item2", "Playlist", None, "Ctrl+P");
    builder.text_with_accelerator("menu_item3", "Toggle Fullscreen", None, "F11");
    builder.text("menu_item4", "Picture In Picture", None);
    builder.separator();
    builder.text_with_accelerator("menu_item5", "Capture", None, "Ctrl+S");
    builder.separator();

    let mut submenu = builder.submenu("submenu1", "Theme", None);
    submenu.radio("submenu_item1", "Light", "Theme", true, None);
    submenu.radio("submenu_item2", "Dark", "Theme", false, None);
    submenu.build().unwrap();

    let menu = builder.build().unwrap();

    let selected_item = menu.popup_at(100, 100);
    // On a separate thread
    // async_std::task::spawn(async move {
    //   let selected_item = menu.popup_at_async(100, 100).await
    // });
}

WebView2 可能会接收所有键盘输入而不是其父窗口(#1703).
使用 WebView2,您可能需要启用功能标志。

--enable-features=msWebView2BrowserHitTransparent

快捷键

默认情况下,快捷键仅用于显示可用的快捷键。
使用 "accelerator" 功能将快捷键作为命令处理。
使用此功能,当按下快捷键时,Menu.popup_at() 返回相应的 MenuItem 作为结果。

features = ["accelerator"]

依赖项

~128MB
~2M SLoC