TabCtrlでMultilineを有効にするには?

[戻る]
こう 2006/07/24(月) 10:49:27
環境
OS:WIN2000
VC++.NET

TabCtrlでMultilineを有効にしようとTrueにするとエラーになってしまいます。
止まってしまうポイントを以下に示します。

void CTabCtrl::DrawItem(LPDRAWITEMSTRUCT)
{
    ASSERT(FALSE);  // must override for self draw tab controls
}

これはどうすれば解決できるのでしょうか。
ご教授お願いします。

επιστημη 2006/07/24(月) 10:52:13
そのコメント:"must override for self draw tab controls"
に従えばいいんじゃないですか?

こう 2006/07/24(月) 11:02:41
>επιστημη さん
返信ありがとうございます。
"must override for self draw tab controls"は
どういう意味なのでしょうか。

Blue 2006/07/24(月) 11:07:57
> どういう意味なのでしょうか。
そのままの意味なのでは?英和辞典で調べてみましたか?
(中学生レベルの英文だと思うけど。(私でもわかるのでw))

> TabCtrlでMultilineを有効
にするには、CTabCtrlを派生したクラスを作成し、DrawItemをオーバーライドしなけれ
ばならないということです。
(オーバーライドがわからない場合、MFCを使う以前にC++の入門書を読んでください)

ちなみに、DrawItemを実装するのは結構面倒で、描画の概念がわかっていないと大変だ
と思います。(ペンをセットしたり、ブラシをセットしたり等)

επιστημη 2006/07/24(月) 11:09:56
「和訳しろ」と仰る?

"タブコントロールを自前で描画するべくオーバライドすべし" だそうです。

r 2006/07/24(月) 11:25:42
これは VC++.net/ VC++.net 2003 のバグです。
Multiline を True にすると Owner Draw Fixed になってしまう。
タブに関しては「プロパティ」での設定はぐちゃぐちゃです。

.rc ファイルをテキストエディタで開いて TCS_OWNERDRAWFIXED に
なってしまっているところをTCS_MULTILINE に書き換えれば
マルチラインになると思います。

Blue 2006/07/24(月) 11:31:30
>これは VC++.net/ VC++.net 2003 のバグです。
なんか怪しいと思ったらそういうことなんですね。

VC++6.0では、
  プロパティ→スタイル→複数行
にしただけではこの状態にはならなかったです。


勝手に、TCS_OWNERDRAWFIXED もついてくるかと思った罠。

こう 2006/07/24(月) 11:42:30
[[解決]]
>Blueさん
返信ありがとうございます。
オーバーライドの意味がわからなかったので調べました。
ご忠告ありがとうございます。

>επιστημηさん
返信ありがとうございます。
訳はなんとかわかったのですが、
どうすればいいのかがわかりませんでした。
ありがとうございます。

>rさん
返信ありがとうございます。
バグだとは知りませんでした。
いつもいじってはいけないnファイルと思っていましたが、
こういうバグの場合は書き換えても大丈夫なんですね。
初めて.reのファイルの中をいじりました。
ありがとうございます。


敬具

古いスレッドには追加発言できません。