AB5では、コンパイルを高速化するため、basic.sbp以下を事前にコンパイルする仕組みが導入されます。それがデバッグ・リリースの区別などで、現在8種類です。ところで、先週書いたように、私のPC、OSからはCPUが8個あると認識されています。ちょうど数がぴったりというわけで、コンパイラのプロセスを8個起動するだけのプログラムを書きました。コンパイラの出力メッセージをコピーできるようにエディットボックスを8個並べています。
サンプルアプリParallelBuild実行中の図

そう、調子に乗って、Aeroで全体を半透明になんてことやってみました。いや、ちょうど素晴らしいお手本を見つけたのでつい: Windows Theme API 2-コントロールのテキストを不透明にする- — while( c++ );

自分の書いたコードはこちらです: ParallelBuild.ab。AB5です。コンパイルできるもんならしてみやがれという状態で本当にすみません。

そこでは、Vistaからの新API、BufferedPaint関数群を使っていますが、これは本当にDIB + メモリDCをラップしただけのようです。前に、32-bit DIBからBitBlt (SRCCOPY)を使いGDIでガラスウィンドウ上にアルファ値付きで描画するということを紹介しましたが(紹介しただけで試してなかった!)、やっていることは同じだと思います。いや、ボタン・エディットというコントロールを扱っているという点は異なりますが。

ともあれ、その方法を応用して、エディットボックスに適用したわけです。IE・エクスプローラのアドレスバーのように、エディットボックスの部分も透けています。ARGBなカラー値は前乗算済み (pre-multiplied) にしておくのがコツみたいです。

あと、ソースコード中にコメントしてあるように、タイトルバーの文字列・アイコンがないのもわざとです。どこかで方法を見つけたので試してみました。

スポンサード リンク

この記事のカテゴリ

  • ⇒ スケスケではないスケスケ
  • ⇒ スケスケではないスケスケ
  • ⇒ スケスケではないスケスケ