>>111
非常に複雑なので、手短に説明するのは難しいが、触りだけ理由を書いておく。
Linuxだと、ピクセルごとに自由にARGBの A = アルファ値 を使って
システム中に浮いているWindowに対しても透明色が扱えるのに対し、Windowsだと
システム中に浮いているWindowに対しての透明色は、SetLayeredWindowAttributes()
とLWA_COLORKEYを使わないといけない。Windowsでも一見、アルファ値を指定でき
そうだが、実際にはWindow全体のアルファ値なので、好きな部分だけを完全に透明
にして、他の部分は、元のままのようにすることは出来ず、全体的に薄くするような
ことしかできない。
それで話が複雑なのが、Windowsの場合は、LWA_COLORKEYに指定した色の部分は、
完全透明になるだけでなく、その部分でマウスをクリックすると、デスクトップや、
デスクトップ上のアイコンにまで伝達されてしまうようになる。つまり、単に
透明なだけではなく「穴あき」状態になる。
一方、Linuxでは、A=0にしたピクセルは完全に透明になるが、穴が開いている訳ではなく、
上記の様なマウスメッセージのデスクトップへの伝達は生じない。

なので、このままだと、Windowsを模倣することは出来ない。そこで、Wineでは、
LinuxではARGBを使わずに、X-Windowの外形を変えるシステムコールを使っている。
ところが、それはピクセル単位ではなく、行単位でランレングスの様な形式で
データが与えられる。そして、これが頻繁に図形を変えるととても遅い。
Linuxでのこの仕組みは起動時に一度だけWindowの外形を変える目的で使われる
ためである。一方、WindowsのLWA_COLORKEYを使ったやり方は、ピクセル単位で
画像を変更してもとても高速に処理できる。

これで、ある種のねじれ現象が起きてしまう。説明が長くなるが、お互いに悪い部分同士
の性質が出てしまって、Wineでのエミュレーションはとてつもなく重たくなってしまっている。