「重複メールのチェック」と [Alt]+[???]No.10609
Iranoan さん 04/04/29 23:59
 
 秀まるおさん今日は、Iranoan です。
 「重複メールのチェック」の処理ダイアログ・ボックスで、[N], [C] 等が
アクセラレーション・キーになっています。そこでフォーカス関わらず動作し
て欲しいと、[Alt]+[N], [Alt]+[C] 等とすることがあるのですが、上手く動
作しないことがあります。条件は、これらのキーが「キーの割り当て」で
ショート・カット・キーとして割り当てられている時です。
 ショート・カット・キーが有効なのは嬉しいですが、ダイアログ・ボックス
上では、アクセラレーション・キーが有効であるべきではないでしょうか? 若
しくは、「ショート・カット・キーが有効の方が、使いやすい」ということな
らば、「メール一覧」にフォーカスがあるときも、[N] 等がアクセラレーショ
ン・キーとして有効に働いて欲しいです。

 話は変わりますが、ショート・カットであるかに関わらず、メールに対する
全ての操作で、ダイアログ・ボックスが (一旦閉じて開かれるのか、) 再描画
されるのは何故でしょう?
 こちらの環境は、Windows98+IE6.0+鶴亀 Ver.3.55beta7 です。

[ ]
RE:10609 「重複メールのチェック」と [AlNo.10611
秀まるお さん 04/04/30 16:50
 
 ダイアログボックス中での下線付きのキーを、一般のキー割り当てより優先し
てないのは、一応仕様ってことでいいんじゃないかと思います。

 同様の仕組みで、例えば「新規メール」をAlt+Fキーに割り当てているとそれ
が優先されて、「ファイル」メニューを開くことが出来ないです。

 プログラミング的な話で言っても、こういう作りにせざるを得ない気がします。
直すとなると、つまり、Alt+Nとかのキーが何らかのコマンドに変換されるのか
どうか調べる方法が分からないです。例えばダイアログボックスの中でのAlt+N
とかの変換(キーコードからボタン押下への変換)は、IsDialogMessage()とい
う関数の中で行われてるようですけど、変換されるキーコードかどうかを調べる
(コマンド実行はさせない)方法が無いような気がします。

 キー割り当ての変換を、フックとは別の、メッセージがDispatchされた後にす
れば解決するという話もありますが、そうすると、WM_KEYDOWNが届く可能性のあ
るすべてのウィンドウをサブクラス化しないいけなくて、大変なことになります。

 ダイアログボックス上での「Alt+N」のキーで効くボタンは、そのボタンにフ
ォーカスが乗ってる場合は「N」だけでも効くということもありまして…。話が
ややこしいです。

 ということで、今の仕様でがまんして欲しいと言うしかありません。

> 「メール一覧」にフォーカスがあるときも、[N] 等がアクセラレーショ
> ン・キーとして有効に働いて欲しいです。

 Nを押したら'N'という文字で始まるメールを選択せよって話ですかね。これは
これで、現状のメール一覧のウィンドウがオーナードロースタイルになっている
から、それはそれで標準のリストボックスの処理とは別に、僕の方で独自にそう
いう処理を作って対応する必要がありまして…。そこまで必要とは今のところ思
いません。

>  話は変わりますが、ショート・カットであるかに関わらず、メールに対する
> 全ての操作で、ダイアログ・ボックスが (一旦閉じて開かれるのか、) 再描画
> されるのは何故でしょう?

 ダイアログボックス中に秀丸相当のウィンドウが一時的に生成されてまた破棄
されるというような動作がなされてて、それを見せたくないがために
WM_SETREDRAWの処理やInvalidateRectが動いてるんだと思いますが、細かい原因
はソースコードをトレースしてみないと分かりません。

 あるいは、再描画しないように直してくれという要望ですか?

[ ]
RE:10611 「重複メールのチェック」と [AlNo.10613
Iranoan さん 04/04/30 17:08
 
 秀まるおさん今日は、Iranoan です。
>  Nを押したら'N'という文字で始まるメールを選択せよって話ですかね。
 そうではありません。「メール一覧」にあるときも、例えば [N] を押した
時は、「そのままにしておく」の処理をして頂ければ、[Alt] を押す必要も無
くなるということです。
 どちらにしても、修正が大変なら、このままで構いません。私は [Alt]+[N]
を「次の未読メール」に割り当てているために、
(1) [Alt]+[N] を押す
(2) 処理されず、同じメールが何度も出てくる
という状況に陥りました。その結果
(1) ひょっとして無限ループ?
(2) その後 [Alt]+[N] が効いていないだけ、ということに気が付く
(3) 他の人も無限ループと思うかも
と考え、ご報告させた頂いた次第です。

>  あるいは、再描画しないように直してくれという要望ですか?
 その方が有り難いですが、こちらも修正が大変ならば、このままで構いません。

[ ]
RE:10613 「重複メールのチェック」と [AlNo.10615
秀まるお さん 04/04/30 17:58
 
> (1) [Alt]+[N] を押す
> (2) 処理されず、同じメールが何度も出てくる
> という状況に陥りました。その結果

 人によっては逆のことを言うかもしれないし…。Alt+Nで「次の未読メール」
になると思ったのにいかない、なぜだってな具合で…。

 Alt+Fキーに何か割り当てた人が、「ファイル」メニューを開くつもりでAlt+F
とやって予想外になったとか、そういう話は他にもいろいろ出てくると思います。
なので、しいて対応するとしたら、Alt+XXXXにはキー割り当てできないようにす
るとか、せめてそのようなキー割り当てを使ったら警告を出すとかってことにな
るかもしれません。気が向いたらそのように修正するかもしれません。

[ ]
RE:10615 「重複メールのチェック」と [AlNo.10616
Iranoan さん 04/04/30 18:19
 
 秀まるおさん今日は、Iranoan です。
> > (1) [Alt]+[N] を押す
> > (2) 処理されず、同じメールが何度も出てくる
> > という状況に陥りました。その結果
>
>  人によっては逆のことを言うかもしれないし…。Alt+Nで「次の未読メール」
> になると思ったのにいかない、なぜだってな具合で…。
 確かにそうですね。[Alt]+[N] で「次の未読メール」を実行しても、本体の
設定と違って未読のまま、上のメールが未読の時はフォーカスが移動しないの
で、てっきり動作していないと思っていました。
 なお、ここで [Alt]+[N] による「次の未読メール」の実行で、既読になる/
上のメールへ移動するように、要望を出しているわけではありません。ダイア
ログ・ボックス状では、ある程度の制限はあるでしょうから。←念の為

> Alt+XXXXにはキー割り当てできないようにす
> るとか、せめてそのようなキー割り当てを使ったら警告を出すとかってことにな
> るかもしれません。気が向いたらそのように修正するかもしれません。
 既に使っているキーが使えなくなると嫌なので(^^;、現状のままで構いません。

[ ]