月別アーカイブ: 2007年12月

アルファブレンドの制御

クラシックてか Windows 2000 スタイルでの動作チェック。

シークバーがチラツキすぎる…だめだこりゃ。

まあWバッファリングが上手くいかんのでチラツクのは解っているんだが。
アルファを掛けているとバッファの転送で背景が消えないんで一度フラッシュしてるし。
クラシック表示だと露骨に見えるようになるのか、コレは困った。

なんとかならんかとあーでもねぇこーでもねぇとやって今日が終わるよぉ!
InvalidateRect の第三引数を TRUE にすれば普通なら消えるはずなのに…
以前の描写部分を転送前に消す、もしくは転送したら消えるようにするには…
いくら探しても古くさい情報しか見つからない!方法は絶対にあるはずだ!

GDIPlus に関する情報の少なさは悲しいね。
C++ で行う情報は皆無に近いので C# で探して自力変換するしかないし。
…それって逆だろ!と憤りを感じてもしょーがない。
まあ他言語からの変換なんて元デルヒャァユーザーはいつものことだったし。

半日探してやっとこんなのを見つけた。

方法 : 複合モードを使用してアルファ ブレンドを制御する

んーブレンド制御を行ったら透過部分も塗りつぶしにならんかな?
とも思ったけどやってみにゃ解らない、藁にもすがる気持ちでやってみる。
まあつまり

g.Clear(Color::Black); //チラつくけど背景消去方法が他にない

とやっていたトコを

g.SetCompositingMode(Gdiplus::CompositingModeSourceCopy);

に書き換えるだけなんだが。

さてどうなるか…あっさり解決…
せっかく GDI+ が用意してくれている方法を知らないって悲しいなぁ。
まあ現場のおっさんなんだからこんなもんさ。

そんなこんなで今日も進まない。

F10

毎日プログラミングは辛い…
てかゼロから作るのって何年ぶりなんだろう…

てなわけで今日はブログを。

ステータスも透けているのが解りやすいようにと。
小ボタンの右寄せは今回はやらないでステータス表示にするつもり。

で、いつまでたってもボタンが追加されないけど理由がある。
F10 をどうしようか迷っていて決まらない。

私のプレイヤーを使っている人なら解っていると思うんだけーが
今までずっと小ボタンはファアンクションキーの並びと同じである。
つまり F10 はユリアルがらの伝統でシングルリピートです。

しかし F10 は知る人ぞ知るシステムキーである。
大抵のアプリは押せばメニュー選択になるはず。
Shift+F10 なら右メニューが出ます。
実はユーザーさんに指摘されるまで知らなかったのであるが…

実は Opera も Shift+F10 なんかに対応していないんだけどさ!
Firefox は見事に対応してくれているねぇ、なんというか。
RealPlayer11 でさえ対応してくれているというのに。

そんなこんなで今回からはそれに従おうと思っている。
すると伝統の「小ボタンはファアンクションキーの並びと同じ」は無理。

うおぉぉぉ困ったぞ!
いったいどうレイアウトすればいいのだ?
無視して伝統を守るか?
何か違う考え方はないか?
んー、伝統どうりのほうが元ユーザーは迷わないはず?
いや違う、コレは Cinema であって YES 90125 では無い!
だあからえっと…

のまま今日までズルズルです。

今コレを書いている秀丸も F10 はタグジャンプなんだけど…
てゆーか IME ON だったら ATOK が変換で横取りするしぃ…
有名なアプリがこんな状況だから余計に迷うんだよなぁ…