0

私のアプリは、別のウィンドウ化されたアプリ内でプラグインとして実行されます。したがって、私のウィンドウにはフォーカスがないことがよくあります。これで、誰かがボタン/メニューの上にマウスを移動して 1 回クリックすると、ウィンドウにフォーカスが設定されるだけです。次に、実際のボタン機能を取得するには、もう一度クリックする必要があります。

これは些細な不満ですが、私はそれを取り除きたいと思っています。最初に、マウスがダイアログ スペースに入るたびにフォーカスを要求しようとしましたが、これはさらに厄介であることがわかりました。だから私がやりたいのは、マウスのクリックを繰り返すことです。そのため、シングルクリックでフォーカスが変更され、ボタンが押されたように見えます。

明らかに、クリックが SetFocus になった場合にのみこれを行う必要があります。そうしないと、ボタン機能が 2 回実行されます。

助言がありますか?

深く、永遠にお世話になっています、デビッド

4

2 に答える 2

1

ここでは、マウスクリックのシミュレーションは少し面倒に見えますが、P /Invokeを介したSendInputAPIを介して、任意の(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 に答える
1

動作をそのままにしておくことをお勧めします。これはオペレーティングシステムの標準的な動作であり、変更すると標準のユーザビリティガイドラインに違反する可能性があります。

于 2009-07-23T20:35:47.367 に答える