Topic : タスクトレイから右クリックして表示するメニューが隠れてしまう?(Z Orderの解説)
メモリークリーナーのタスクトレイのアイコンの右クリックメニューがIMEツールバーの背面に表示される場合があるんだけど。
条件はMSIMEを、直接入力時も表示する設定にしていてIMEが起動していないときよ。
これは、100%そうなるわけではないの。MSIMEだけで、ATOKでは再現しなかったわ。
これは、Z Order(Z軸順番)の問題だと思います。
Z軸って何?
Z軸とは、3次元のXYZの3つの軸のZ軸(高さ)のことです。
Windowsでは、ウィンドウの前面、後面の位置をZ Orderという概念で管理しています。
さらに、この前面・後面の管理は通常ウィンドウと最前面ウィンドウの2つに分かれています。
この、通常ウィンドウと最前面ウィンドウにそれぞれに、Z Orderによる表示の前後があります。
通常ウィンドウ・・・・Z Orderの順番で管理
最前面ウィンドウ・・・Z Orderの順番で管理
というわけで、2つ以上の最前面ウィンドウがある場合は、Z Orderの順番によってどちらが上に来てもおかしくないのです。
困ったわね。
それでは、最前面の中でも一番上にするにはどうするか。
これを解決するには、0.1秒間隔とかで何度も無理矢理最前面にしてあげる(Z Orderを上げてやる)必要があります。
ただ、状況によってどちらが最前面がふさわしいかが変わるので、一概に自分自身を最前面にすれば良いというわけではありません。
ATOKとIMEでは、このZ Orderの確保の仕方が若干異なるのだと思います。
ただ、内部的なプログラムまでは分かりませんので、想像の範囲内です。