環境
OS:WIN2000
VC++.NET
TabCtrlでMultilineを有効にしようとTrueにするとエラーになってしまいます。
止まってしまうポイントを以下に示します。
void CTabCtrl::DrawItem(LPDRAWITEMSTRUCT)
{
ASSERT(FALSE); // must override for self draw tab controls
}
これはどうすれば解決できるのでしょうか。
ご教授お願いします。
そのコメント:must override for self draw tab controls
に従えばいいんじゃないですか?
>επιστημη さん
返信ありがとうございます。
must override for self draw tab controlsは
どういう意味なのでしょうか。
> どういう意味なのでしょうか。
そのままの意味なのでは?英和辞典で調べてみましたか?
(中学生レベルの英文だと思うけど。(私でもわかるのでw))
> TabCtrlでMultilineを有効
にするには、CTabCtrlを派生したクラスを作成し、DrawItemをオーバーライドしなけれ
ばならないということです。
(オーバーライドがわからない場合、MFCを使う以前にC++の入門書を読んでください)
ちなみに、DrawItemを実装するのは結構面倒で、描画の概念がわかっていないと大変だ
と思います。(ペンをセットしたり、ブラシをセットしたり等)
「和訳しろ」と仰る?
タブコントロールを自前で描画するべくオーバライドすべし だそうです。
これは VC++.net/ VC++.net 2003 のバグです。
Multiline を True にすると Owner Draw Fixed になってしまう。
タブに関しては「プロパティ」での設定はぐちゃぐちゃです。
.rc ファイルをテキストエディタで開いて TCS_OWNERDRAWFIXED に
なってしまっているところをTCS_MULTILINE に書き換えれば
マルチラインになると思います。
>これは VC++.net/ VC++.net 2003 のバグです。
なんか怪しいと思ったらそういうことなんですね。
VC++6.0では、
プロパティ→スタイル→複数行
にしただけではこの状態にはならなかったです。
勝手に、TCS_OWNERDRAWFIXED もついてくるかと思った罠。
>Blueさん
返信ありがとうございます。
オーバーライドの意味がわからなかったので調べました。
ご忠告ありがとうございます。
>επιστημηさん
返信ありがとうございます。
訳はなんとかわかったのですが、
どうすればいいのかがわかりませんでした。
ありがとうございます。
>rさん
返信ありがとうございます。
バグだとは知りませんでした。
いつもいじってはいけないnファイルと思っていましたが、
こういうバグの場合は書き換えても大丈夫なんですね。
初めて.reのファイルの中をいじりました。
ありがとうございます。
敬具