因为ALT键触发的是 _WM_SYSKEYDOWN 而不是 _WM_KEYDOWN
创建窗口快捷键一般不需要自己去处理消息,用 win.ui.accelerator 就可以了,其实我在aardio 范例里都是这么用:
import win.ui;
/*DSG{{*/
var winform = win.form(text="按 CTRL + N 或 ALT + C";right=759;bottom=469)
winform.add()
/*}}*/
import win.ui.accelerator;
win.ui.accelerator({
{
ctrl = true; vkey = 'N'#;
oncommand = function() winform.msgbox("CTRL+N");
};
{
alt = true; vkey = 'C'#;
oncommand = function() winform.msgbox("ALT+C");
};
}, winform );
winform.show();
win.loopMessage(); 另外 winform.isDialogMessage,winform.translateAccelerator这些事件里都可以添加快捷键,
增加一个wndproc去处理快捷键当然也可以,但是要知道所有窗口消息都会调用一次wndproc,为避免不必要的调用可以选择其他方法。 |