No.2ベストアンサー
- 回答日時:
こんばんは。
イメージリストの作成方法は何通りかある為、ピンポイントで説明するのは難しいのですが、イメージリストの使い方を間違えていて、●★◆□の様に並んでいないか、ツリーコントロールの操作を間違えているか、ではないでしょうか。
以下は16x16のアイコン4個分を並べてデザインしたビットマップ(64x16のビットマップ)を読み込んで、ツリーアイテムに設定します。
デザインさえ合っていれば成功する筈です。以下参考程度に。
BOOL CTestDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// "バージョン情報..." メニューをシステム メニューに追加します。
// IDM_ABOUTBOX は、システム コマンドの範囲内になければなりません。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// このダイアログのアイコンを設定します。アプリケーションのメイン ウィンドウがダイアログでない場合、
// Framework は、この設定を自動的に行います。
SetIcon(m_hIcon, TRUE);// 大きいアイコンの設定
SetIcon(m_hIcon, FALSE);// 小さいアイコンの設定
// TODO: 初期化をここに追加します。
//16x16のアイコン4個分(64x16デザイン)のイメージを読み込む
HIMAGELIST hImgList = ::ImageList_LoadImage(NULL, TEXT("imglist.bmp"), 16, 0, CLR_NONE, IMAGE_BITMAP, LR_LOADFROMFILE);
//CImageListの作成
CImageList* pImgList = new CImageList();
pImgList->Attach(hImgList);
//CTreeCtrlにアイテムを追加
CTreeCtrl* pTree = static_cast<CTreeCtrl*>(this->GetDlgItem(IDC_TREE1));
pTree->SetImageList(pImgList, TVSIL_NORMAL);
/*アイテム追加と同時にイメージリスト番号を指定する場合
HTREEITEM hItem = pTree->InsertItem(TEXT("AAA"), 0, 0);//イメージリスト1番目を指定
hItem = pTree->InsertItem(TEXT("bbb"), 1, 1, hItem);//イメージリスト2番目を指定
hItem = pTree->InsertItem(TEXT("ccc"), 2, 2);//イメージリスト3番目を指定
hItem = pTree->InsertItem(TEXT("ddd"), 3, 3, hItem);//イメージリスト4番目を指定
*/
/*後でイメージリスト番号を指定する場合
HTREEITEM hItem1 = pTree->InsertItem(TEXT("AAA"));
HTREEITEM hItem2 = pTree->InsertItem(TEXT("bbb"), hItem1);
HTREEITEM hItem3 = pTree->InsertItem(TEXT("ccc"));
HTREEITEM hItem4 = pTree->InsertItem(TEXT("ddd"), hItem3);
pTree->SetItemImage(hItem1, 0, 0);
pTree->SetItemImage(hItem2, 1, 1);
pTree->SetItemImage(hItem3, 2, 2);
pTree->SetItemImage(hItem4, 3, 3);
*/
return TRUE; // フォーカスをコントロールに設定した場合を除き、TRUE を返します。
}
void CTestDlg::OnDestroy()
{
CDialog::OnDestroy();
// TODO: ここにメッセージ ハンドラ コードを追加します。
CTreeCtrl* pTree = static_cast<CTreeCtrl*>(this->GetDlgItem(IDC_TREE1));
if(pTree == NULL)
return;
CImageList* pImgList = pTree->SetImageList(NULL, TVSIL_NORMAL);
if(pImgList == NULL)
return;
//CImageListをnewで作成した場合はdeleteが必須
delete pImgList;
}
No.1
- 回答日時:
SetImageListで表示する分の画像(選択、非選択)を用意したCImageListを設定し、iImageとiSelectedImage(ノード追加時はInsetItemのTVITEM構造体のメンバ、ノード更新時はSetItemのTVITEM構造体のメンバかSetItemImage)に用意したイメージリストのインデックスを指定することで変えられると思います。
この回答へのお礼
お礼日時:2010/01/07 20:43
お返事ありがとうございます。
同じようにやっているつもりなのですが、アイコンを変えると、ツリーのすべてのアイコンが変わってしまって、ノード単位ができないのです。。。
ノード単位に変えるにはどうしたらよいのでしょうか???
大変お手数ですが、よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ¥マークを含むパスの処理について(マクロ、または関数) 2 2022/12/25 02:11
- SQL Server ACCESSで3ファイルを結合して、表を作成するやり方を教えて下さい。 17 2022/08/15 20:34
- SQL Server ACCESSで複数テーブルを結合して、リストを作る方法を教えてください。 2 2022/08/12 19:32
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- その他(データベース) カラム上の重複を削除するクエリを教えてください 3 2022/04/12 14:11
- Perl perl このテキストファイルを簡単に配列に入れるには? 2 2022/04/27 20:24
- JavaScript 指定したパスが現URLに含まれていたら特定要素を削除するJavascriptのコードを教えてください 2 2023/04/27 17:58
- Visual Basic(VBA) 【VBA】特定の文字で改行(次の行)に行きたい。 3 2022/04/11 17:20
- JavaScript jsonテキストデータの並び替えができるサービスを教えてください 2 2022/08/05 20:16
- その他(Microsoft Office) パワークエリの複数ファイルのデータ統合について 3 2022/07/14 17:06
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コントロールの書式設定で、“コ...
-
DateTimePickerでに年月までし...
-
エクセルのコントロールツール...
-
フォームでPDFを表示させた...
-
EXCELVBA リストボックスで選択...
-
ワードのドロップダウンリスト
-
WM_SIZEを発生させる方法
-
連続で印刷すると画像が更新さ...
-
TabControlとToolBarの背景色変更
-
文字色を変えたい(ACCESS VBA)
-
WS_TABSTOPが機能するコントロ...
-
ActiveXコントロールを.NETにイ...
-
スピンボタンを右クリックして...
-
VCのコントロール最大配置数は?
-
VBAでリストボックス内で↑↓の操...
-
エクセル - リストボックスのマ...
-
VC++6.0 エディットボックス、...
-
MFCのプロジェクト作成時にコモ...
-
コモンダイアログコントロール...
-
Win32のリストコントロールで縦...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コントロールの書式設定で、“コ...
-
エクセルのコントロールツール...
-
フォームでPDFを表示させた...
-
スピンボタンを右クリックして...
-
DateTimePickerでに年月までし...
-
C++6.0でのresource.hについて
-
連続で印刷すると画像が更新さ...
-
ActiveXコントロールを.NETにイ...
-
警告表示を非表示にしたい
-
エクセル - リストボックスのマ...
-
コモンダイアログコントロール...
-
EXCELVBA リストボックスで選択...
-
TabControlとToolBarの背景色変更
-
ワードのドロップダウンリスト
-
文字色を変えたい(ACCESS VBA)
-
CEdit の内容が変わった時にメ...
-
リストボックスの同期
-
VB6.0のデザイン時 コントロー...
-
WM_SIZEを発生させる方法
-
VBAでリストボックス内で↑↓の操...
おすすめ情報