リストコントロールにアイコンを表示 – プログラミング – Home

リストコントロールにアイコンを表示
 
通知
すべてクリア

[解決済] リストコントロールにアイコンを表示


michiaki
 michiaki
(@michiaki)
ゲスト
結合: 22年前
投稿: 3
Topic starter  

はじめまして。
ダイアログベースでプログラミングをしています。
リストコントロールを貼り付けて、アイコンを
リストコントロールの2行目に表示したいのですが、
とりあえず、1行目に表示されてしまいます。
どうすれば1行目にアイコンが表示されませんか?

こんなコーディングをしています。
<省略>
m_list.SetImageList(&m_imglst,LVSIL_SMALL);
<省略>
m_list.SetItem(i, 0, LVIF_TEXT ,", 0, 0, 0, 0);
m_list.SetItem(i, 1, LVIF_IMAGE,NULL, 0, 0, 0, 0);

よろしくお願い致します。


引用未解決
トピックタグ
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

行の方を変更したいのであれば、m_list.SetItemの第一パラメーターを
変えないと駄目だと思います。今のコードでは列の方を変えていると思います。
HELPをもう一度確認してみてください。

ソースが省略されすぎていてちょっとわかりにくいですね。
変数iがどういう流れで使われるかぐらいはわかる程度のソースをお願いします。
あと、拡張スタイルは何を設定しているとか、自分がやりたい表示の具体的な例が
有った方が話がスムーズに進むのよろしくお願いします。


返信引用
michiaki
 michiaki
(@michiaki)
ゲスト
結合: 22年前
投稿: 3
Topic starter  

不十分な説明で大変申し訳ありませんでした。
もう少し細かく書いてみたので、よろしくお願い
します。

void CXXXX::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
ModifyStyleEx(WS_EX_CLIENTEDGE,0,SWP_DRAWFRAME);
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
HICON hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
SetIcon(hIcon, TRUE);
SetIcon(hIcon, FALSE);
int m_nIcon1;
CBitmap bmp1;
m_list.SetExtendedStyle(m_list.GetExtendedStyle()|
LVS_EX_SUBITEMIMAGES|LVS_EX_FULLROWSELECT);
m_imglst.Create(16,16,ILC_COLOR,0,0);
bmp1.LoadBitmap(MAKEINTRESOURCE(IDB_BITMAP1));
m_nIcon1 = m_imglst.Add(&bmp1,RGB(255,255,0));
m_list.SetImageList(&m_imglst,LVSIL_SMALL);
}

//実際にデータを表示する処理(メソッド)です。
void CXXX::XXMethod1{
int i,j;
for (j=1;j<=10;j++){
i = m_list.InsertItem( 0,あああ, 0);
m_list.SetItem( i, 1, LVIF_IMAGE,NULL, 0, 0, 0, 0);
}
}

m_imglstとm_listはCXXXクラスのメンバとして宣言しています。
CImageList m_imglst;
CListCtrl m_list;

1行目、2行目と言いましたが、1列目、2列目の間違いでした。
すみませんでした。
1列目に必ずアイコンが表示されてしまうのですが、1列目を文字
だけにして、2列目にアイコンを表示したいのですが、可能ですか?

よろしくお願い致します。


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

可能です。
リストコントロールの拡張スタイルとして、LVS_EX_SUBITEMIMAGESがあります。
これを設定してください。


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

アイテムを挿入するときの

m_list.InsertItem( 0,あああ, 0);

で第三パラメーターを-1にしてみてください。
アイコンが表示されなくなるはずです。
サブアイテムもアイテムも同じイメージリストを使っているので
インサートするときにイメージのインデックスを0にしていると
イメージリストの先頭にあるアイコンが表示されてしまいます。
但し、アイテム(一番左の列)の先頭には必ずアイコンの幅の分だけ
空白が出来ます。これは今の方法では回避する方法は無いので
あきらめるしかありません。
この空白をなくしたいのであれば、オーナー描画を行って
全ての描画を自力で行う必要があります。


返信引用
michiaki
 michiaki
(@michiaki)
ゲスト
結合: 22年前
投稿: 3
Topic starter  

必ずアイコンの幅の分だけ空白が出来るということなので、
1行目は必ずアイコンを表示することにします。

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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