Top 上へ 目次
Ver.10.1について
まだVer.10をリリースしたばっかりなのに血迷ったんか・・・と思った方。正解です。
ぶっちゃけた話、目先のこれからやることリストです。
As/R起動している方は、リストの右下見てください、1個だけデザインが違うボタンがありますよね。
並び順を表示してるボタンです。
Windows10だとあまり目立ちませんが、以前から浮いてるな・・・とは思ってたんですよ。
というわけで、このボタンを自前描画にします。
ついでに、リスト上にあるボタンと、タブバー上にあるボタン、これらはいわゆるビットマップボタンと呼ばれるものなんです。
これ全部、自前描画に変えちゃいます。
自前描画に変えることにより、何が変わるかというところですが、大きく3点あります。
まず、今の時代のボタンはマウスカーソルをボタンの上に持っていくとピロっと色が変わってホバーという状態になるんですが、現在のAs/Rでは無反応です。
寂しいので、ホバー状態を描画できるようにします。
(普通のビットマップボタンはWindows 3.x頃に設計されたものですから、ホバー表示できません)
次に、タスクマネージャでGDIオブジェクトの行を追加してみると、As/Rはかなり多いんですよ。
これ何かというと、ボタンごとに画像イメージを保持しちゃってるからなんですね。
ボタン1個あたりに、「通常」「押下状態」「無効状態」の2〜3個ずつ画像を持っていると言うことです。
ビットマップボタンという仕組みを使っている以上は避けられないんですが、これ1タブあたりに31枚の画像を持ってるわけですよ。
タブが2個になれば62個、タブが3個なら93個のように増えてくわけです。
で、リストやアドレスバーやら、他の描画アイテムも加えると、1タブあたり42個のGDIオブジェクトが増えていくわけです。
ちなみに、Windowsアプリケーションが許されるGDIオブジェクトの上限は9,999個なわけで、これがAs/Rの開けるタブの数の制限になってるというわけです。
ざっくりと上限は160〜170タブくらいです。
フォームビューを使ったMDIアプリケーションの上限が300くらいなので、もう少し頑張れるはずですし、同じ31枚セットの画像データを何回も複製して保持し続けるのもメモリがもったいない気もします。(ディスクキャッシュとかに比べるとKB単位なので誤差の範囲と言って良いほどの量ですが)
そもそもGDIリソースの数が減らせるものなら、可能な限り減らした方がいいんですよ。
次に、高解像度の環境対策の一環でもありますが、DPI値が高い環境でフォントサイズを大きくすればボタンも大きくなるのですが、画像はそのままなのでアイコン画像が小さすぎて残念なことになっています。
独自描画なら、拡大表示もできますよねーということです。
もちろん、引き伸ばした画像は粗くなっちゃいますが、嫌なら画像サイズは自動計算するから自分で画像作ってね(ニッコリ)とすることも可能でしょう。
それにしても4Kとは言いませんが、2Kくらいのディスプレイが入手できれば本格対応もやぶさかではないのですが・・・無いものは仕方ありません。