![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_10.png?e8efa67)
CListBoxを派生させて
オーナードローをしたのですが、(違うような気がするのですが)
AddStringしても項目が追加できず
選択できるセルがありません。
ただ、描画がされているだけのようです。
また、AddStringの文字はどうやって表示するのでしょうか?
最終的には、以下のようなことがしたいと思っています。
左にアイコンがあり、ディレクトリごとに
段があるリストボックスです。
もうひとつ、
セルを透過させて背景にBitmapの表示。
こちらのほうで、オーナー描画が必要かなと思い
今に至ります。
ただ、オーナー描画のこととかよくわかっていません。
よろしくお願いします。
------------------------------------------------
void CzListDlg::OnBnClickedButton1()
{
static int Cnt=6587;
char Str[128];
itoa(Cnt,Str,10);
List.AddString(Str);
Cnt++;
}
BOOL CzListDlg::OnInitDialog()
{
***
List.Create(LBS_OWNERDRAWFIXED|LBS_HASSTRINGS|WS_VISIBLE,CRect(0,0,120,200),this,5000);
***
}
------------------------------------------------
void mList::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC *pDC=CDC::FromHandle(lpDrawItemStruct->hDC);
pDC->TextOut(0,0,"Hello World");//←本当は、AddStringした文字がほしい
pDC->TextOut(0,0,(char *)lpDrawItemStruct->itemData);
}
void mList::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
lpMeasureItemStruct->itemHeight=30;
lpMeasureItemStruct->itemWidth=120;
// TODO : ここにメッセージ ハンドラ コードを追加します。
}
No.1ベストアンサー
- 回答日時:
MSDNライブラリに載っている例はご覧になりましたか?
http://www.microsoft.com/japan/msdn/library/defa …
描画の仕方は何となくこれでイメージがつかめると思います。
どういうものを描画したいのか、
文章だけでは読み取るのが難しいですが、
多分オーナードローでいいと思います。
おそらく誤解されている点に限って申しますと、
選択に関しては、選択されている部位の色が変わったりとか、
フォーカスの枠線が表示されたりという部分も、
オーナードローの場合、自分でコーディングすることになります。
ですので、リストボックスのアイテム上でクリックなどをしても、
描画していない以上は、画面上ではわかりません。
描画するべきアイテムがあるときにDrawItemが呼ばれるわけですが、
DRAWITEMSTRUCT構造体のメンバであるitemActionやitemStateの値で条件分岐し、
描画するべきアイテムがどういう状態にあるかによって、
塗りつぶす色などを場合分けしなくてはなりません。
この辺は、MSDNの例を見るなり、
実際にこのコードをコンパイルして動きを見れば意味がわかると思います。
また、描画する範囲ですが、
DRAWITEMSTRUCT構造体のメンバであるRECT構造体rcItemに入っています。
この座標を文字や背景、選択の枠などを描画する位置を決めるのに使います。
AddStringで追加した文字列を参照するには、
lpDrawItemStruct->itemDataで合っています。
私も特に詳しいわけではないので、こんな説明しかできません。
回答ありがとうございました。
回答を参考にして
理解を深めることが出来ました。
感謝しています。
難しいですね。
慣れるしかないのでしょうけど。
OnDrawItem DrawItem と複数の関数があったりして、
最初は、???状態です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
ロボットの住む世界で流行ってる罰ゲームとは?
-
画面を強制的に再描画させる方法
C言語・C++・C#
-
MFC ダイアログ上のID取得について
C言語・C++・C#
-
リストボックスのオーナードローでInsertStringした文字列の取得
C言語・C++・C#
-
-
4
リソースエディタでスタティックテキストの文字サイズの変更
C言語・C++・C#
-
5
ボタンの表示の色、フォントを変更したい
C言語・C++・C#
-
6
リストビューの選択状態を取得するメッセージはありますか?
C言語・C++・C#
-
7
ダイアログ内コントロールの位置取得について
C言語・C++・C#
-
8
ボタンのオーナードローについて
C言語・C++・C#
-
9
MFCでOnPaintのタイミング
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB6,リストボックスの特定行の...
-
MFCでOnPaintのタイミング
-
この二つの違いは・・・?
-
C# ラバーバンドの描画を快適に...
-
[VB.net] DataGridViewの列ヘッ...
-
VC++でカーソルを固定する
-
ローディング画面をマルチスレ...
-
テクスチャに半透明ポリゴンを...
-
DrawTextでの描画
-
VB.netでのライン描画方法がわ...
-
C言語(dxlib)のDrawboxについ...
-
InvalidateRectの使い方について
-
Form1 Load で実行されない。
-
Minecraft 統合版(PC)の描画距...
-
ワイプ表示について。
-
MFC ビットマップ描画で残像が残る
-
vb.netでテキストボックス内の...
-
TextBoxに文字を書いても表示さ...
-
ワードの図形で重なり部分の色...
-
FlexGridの一部のみ表示を更新...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB6,リストボックスの特定行の...
-
word
-
NVIDIAのシェーダーキャッシュ
-
MFCでOnPaintのタイミング
-
Minecraft 統合版(PC)の描画距...
-
google Colabでmatplotlibの描...
-
TextBoxに文字を書いても表示さ...
-
[VB.net] DataGridViewの列ヘッ...
-
UpdateData( FALSE); による文...
-
OneNote 2010 文字と描画がずれる
-
Labelの文字をスクロールする際...
-
InvalidateRectの使い方について
-
VB.netでのライン描画方法がわ...
-
CStaticコントロールの静的イメ...
-
VC++プログラムをつかったBMP画...
-
WM_SIZEとWM_SIZINGの違い (Win...
-
エクセルでガンチャートを作成...
-
c言語を使いダイアログにbmpを...
-
WM_PAINT
-
MFCのタイマーのつかい方を教え...
おすすめ情報