0

我的应用程序在另一个窗口应用程序中作为插件运行。因此,我的窗口经常没有焦点。现在,如果有人将鼠标移到按钮/菜单上并单击一次,它所做的就是将焦点设置到我的窗口。然后(s)他需要再次单击以获取实际的按钮功能。

这是一个小烦恼,但我想摆脱它。首先,我尝试在鼠标进入我的对话空间时声明焦点,但事实证明这更烦人。所以我想做的是重复鼠标点击,所以看起来好像一次点击既改变了焦点又按下了按钮。

显然,我应该只在单击导致 SetFocus 时这样做,否则它将运行按钮功能两次。

有什么建议么?

深深地和永远地负债,大卫

4

2 回答 2

1

我建议您保持原样;这是操作系统的标准行为,更改它可能会破坏标准的可用性准则。

于 2009-07-23T20:35:47.367 回答
1

鼠标点击模拟在这里看起来有点乱,但你总是可以通过 P/Invoke通过SendInput API在任何 (X,Y) 处模拟任何鼠标点击:

[DllImport("user32.dll", SetLastError=true)]
static extern uint SendInput(uint nInputs, INPUT [] pInputs, int cbSize);

您也可以直接摆弄传播/生成 WM_MOUSEXXXXX 消息,但我已经玩过很多次了,当我说它完全是杂牌时相信我。

于 2009-07-23T20:38:37.737 回答