gpt4 book ai didi

windows - 如何知道菜单项何时被点击?

转载 作者:行者123 更新时间:2023-12-04 03:30:33 26 4
gpt4 key购买 nike

我正在使用 winsafe crate,想知道何时在窗口中单击了菜单项。

flags & MF_MOUSESELECT as u16 如果是,则应为 1,如果不是,则应为 0,但始终为 32768每次事件被触发时,即使它只是来自用户将鼠标悬停在菜单项上,或者甚至点击离开以使其关闭。

为什么?

self.wnd.on().wm(winsafe::co::WM::MENUSELECT, {
move |params| {
let wparam = params.wparam;
let lparam = params.lparam;
let flags = (wparam >> 16 & 0xffff) as u16;
let MF_MOUSESELECT = 0x00008000 as u32;

println!("{}", flags & MF_MOUSESELECT as u16);
// always 32768

0
}
});

菜单由资源脚本生成,资源脚本编译并嵌入到程序中:

1 MENU
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
{
POPUP "&File"
{
MENUITEM "&Open", 1
MENUITEM "&Save", 2
}
POPUP "&Help"
{
MENUITEM "&About", 3
}
}

最佳答案

您应该处理 WM_COMMAND。实际上有内置的菜单功能。只需提供您在资源文件中指定的 ID,即可检查相应菜单项何时被点击。

用这些替换你的事件监听器:

self.wnd.on().wm_command(co::CMD::Menu, 1, {
move || {
println!("Open clicked.")
}
});

self.wnd.on().wm_command(co::CMD::Menu, 2, {
move || {
println!("Save clicked.")
}
});

self.wnd.on().wm_command(co::CMD::Menu, 3, {
move || {
println!("About clicked.")
}
});

关于windows - 如何知道菜单项何时被点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66963945/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com