オーナー描画リストボックスに登録された文字列について – プログラミング – Home

オーナー描画リストボックスに登録された...
 
通知
すべてクリア

[解決済] オーナー描画リストボックスに登録された文字列について


ぽこにゃん
 ぽこにゃん
(@ぽこにゃん)
ゲスト
結合: 22年前
投稿: 2
Topic starter  

オーナー描画リストボックスを用意しまして、そのDrawItem関数内で
AddStringメンバ関数で登録された文字列を取り出そうしたところ、
DrawItem関数の引数のLPDRAWITEMSTRUCT構造体のitemDataメンバが
ヌルとなっていました。登録された文字列を取り出すには、
何が不足しているのかご助言頂けないでしょうか?
よろしくお願いします。

● CListBoxから派生させたオーナー描画リストボックスのDrawItem関数
void CMyListBox::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
LPCTSTR lpszText = (LPCTSTR) lpDrawItemStruct->itemData;
ASSERT(lpszText != NULL); ← ヌルなのでエラーとなっています
:
}

● オーナー描画リストボックスを初期化しているダイアログのOnInitDialog関数
BOOL CMyDialog::OnInitDialog()
{
CDialog::OnInitDialog();

// m_ListBoxはCMyListBoxのコントロール変数です
m_ListBox.ResetContent ();
m_ListBox.AddString (あああ);
m_ListBox.AddString (いいい);
m_ListBox.AddString (ううう);
m_ListBox.SetCurSel (0);
:
}

● オーナー描画リストボックスのプロパティ
オーナー描画:固定
文字列あり:チェック・オン

● 環境
VC++ 6.0 (MFC)
NT4.0


引用未解決
トピックタグ
たみあ
 たみあ
(@たみあ)
ゲスト
結合: 22年前
投稿: 57
 

普通に GetText で取得できたと思うのですが。。。

文字列ありにした場合は、itemData は、SetItemData で設定した値だったと思います


返信引用
sugar
 sugar
(@sugar)
ゲスト
結合: 24年前
投稿: 448
 

itemDataは、各アイテムに設定できるDWORDデータが設定されると思います。
文字列へのポインタではありませんよ。


返信引用
sugar
 sugar
(@sugar)
ゲスト
結合: 24年前
投稿: 448
 

リストボックスのスタイルに、LBS_HASSTRINGSを含める必要があったかも知れない…。


返信引用
ぽこにゃん
 ぽこにゃん
(@ぽこにゃん)
ゲスト
結合: 22年前
投稿: 2
Topic starter  

たみあさん、sugarさん、レスありがとうございます。

itemData は SetItemData で設定した値だったのですね。
ヘルプで、DRAWITEMSTRUCT 構造体の itemData の説明と
CListBox::DrawItem の例にあるサンプルプログラムを見て
AddString で登録された文字列のポインタが取り出せると
考えてしまいました。ご指摘ありがとうございます。

また、たみあさんが言われた GetText を使用して文字列を
取り出せる事を確認しました。

どうもありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました