Luna時のメインメニュー

解決


m-menu  2005-05-21 02:56:59  No: 14899  IP: [192.*.*.*]

Lunaではメインメニューのバーの色はclBtnFaceですが、TMainMenuをオーナードローにしたとき、clMenuで描画され、文字の後ろだけが白くて不自然です。
これを解決するには最上位のメニューアイテムを自前でドローするしかないのでしょうか?
また、その場合文字列の&Fみたいなのも自前でドローしなければならないのでしょうか?
//Delphi6

編集    削除
HOta  2005-05-22 01:25:49  No: 14900  IP: [192.*.*.*]

Lunaって何ですか?

編集    削除
m-menu  2005-05-22 03:44:53  No: 14901  IP: [192.*.*.*]

Microsoft純正のビジュアルスタイルです。
XPスタイルと言ったほうが良かったですね。

編集    削除
たかみちえ  URL  2005-05-22 04:22:46  No: 14902  IP: [192.*.*.*]

アンダーバーつき文字列描画等は、DrawText APIがサポートしています。あとは手書きです。オーナードローしてください。
ちなみに、トップレベルのメニューが描画されてしまうのは、VCLのバグという説が有力です。ほしけんのWeb頁のWiki(http://wiki.hosiken.com/wiki/)にて、解決用パッチが配布されています。

> Luna
  ちなみにちょっとつっこみですが、XPではスキンを使用して別のビジュアルスタイルを適応することも出来ます。その場合はLunaとは言わないと思いますよ。
なので、WindowsXPスタイルに完璧に対応するには(WindowsXPスタイルを時アプリメニューに適用したいなら)、Windowsスキンファイル(.mmstyle)から、データ(リソースに格納されている)を読み取って、それを使ってやる必要があります。

編集    削除
m-menu  2005-05-22 04:55:49  No: 14903  IP: [192.*.*.*]

HOtaさんたかみちえさんありがとうございました。
トップメニューも独自に描画させなんとかなりました。
//ちなみにたかみちえさんのオーナードローメニューを使っていました。

編集    削除
m-menu  2005-05-22 05:25:11  No: 14904  IP: [192.*.*.*]

OwnerDraw時のあのACanvasはどうやったら普段参照できるのでしょうか?

編集    削除
m-menu  2005-05-22 06:02:09  No: 14905  IP: [192.*.*.*]

Canvas.Handle := GetWindowDC(WindowHandle);ですね

編集    削除