Lunaではメインメニューのバーの色はclBtnFaceですが、TMainMenuをオーナードローにしたとき、clMenuで描画され、文字の後ろだけが白くて不自然です。
これを解決するには最上位のメニューアイテムを自前でドローするしかないのでしょうか?
また、その場合文字列の&Fみたいなのも自前でドローしなければならないのでしょうか?
//Delphi6
Lunaって何ですか?
Microsoft純正のビジュアルスタイルです。
XPスタイルと言ったほうが良かったですね。
アンダーバーつき文字列描画等は、DrawText APIがサポートしています。あとは手書きです。オーナードローしてください。
ちなみに、トップレベルのメニューが描画されてしまうのは、VCLのバグという説が有力です。ほしけんのWeb頁のWiki(http://wiki.hosiken.com/wiki/)にて、解決用パッチが配布されています。
> Luna
ちなみにちょっとつっこみですが、XPではスキンを使用して別のビジュアルスタイルを適応することも出来ます。その場合はLunaとは言わないと思いますよ。
なので、WindowsXPスタイルに完璧に対応するには(WindowsXPスタイルを時アプリメニューに適用したいなら)、Windowsスキンファイル(.mmstyle)から、データ(リソースに格納されている)を読み取って、それを使ってやる必要があります。
HOtaさんたかみちえさんありがとうございました。
トップメニューも独自に描画させなんとかなりました。
//ちなみにたかみちえさんのオーナードローメニューを使っていました。
OwnerDraw時のあのACanvasはどうやったら普段参照できるのでしょうか?
Canvas.Handle := GetWindowDC(WindowHandle);ですね
ツイート | ![]() |