CListCtrl


以降、ダイアログ上にCListCtrlが存在するものとして、記載する。

先頭行に移動

例)対象となるCListCtrlクラスのサブクラスの場合
PostMessage(WM_VSCROLL, MAKELONG(SB_TOP, NULL));
TOP

最終行に移動

例)対象となるCListCtrlクラスのサブクラスの場合
PostMessage(WM_VSCROLL, MAKELONG(SB_BOTTOM, NULL));
TOP

全カラム削除

while(m_listCtrl.DeleteColumn(0));
TOP

全アイテム削除

listCtrl().DeleteAllItems();
但し、仮想リストの場合は除く。
TOP

拡張スタイル設定

拡張スタイルは、SetExtendedStyle()を使用する。
例)
DWORD dwStyle = m_listCtrl.GetExtendedStyle();
dwStyle |= LVS_EX_FULLROWSELECT | LVS_EX_INFOTIP;
m_listCtrl.SetExtendedStyle(dwStyle);
主な拡張スタイル定義は、以下のとおり。
定義名 内容
LVS_EX_FULLROWSELECT 行全体選択表示(レポート設定のみ)
LVS_EX_INFOTIP ツールチップ表示
・・・ ・・・
TOP

仮想リストコントロール(ダイアログ上に存在する)

リスト要素データをコントロールが管理するのではなく、プログラム(オーナー)側で管理している。よって、表示に必要なデータだけを表示することで、大量のデータを素早く表示できる。

実装手順

  • CListCtrlのプロパティを開き、下記赤部分のように設定する。
例)Visual Studio 2005
  • ダイアログ初期化処理において、CListCtrlに関する項目(カラム等)を設定する。
  • ダイアログのDefWindowProc()をオーバーライドし、 CListCtrl用にWM_NOTIFYメッセージを処理する。
例)LRESULT CXXXXDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
switch (message)
{
    case WM_NOTIFY:
    return Notify(lParam);
}
return [[CDialog]]::DefWindowProc(message, wParam, lParam);
  • ダイアログのメソッドとして、上記メッセージを処理するOnGetdispinfo()を追加する。
例)LRESULT CXXXXDlg::Notify(LPARAM lParam)
LPNMHDR lpNMHDR = reinterpret_cast<LPNMHDR>(lParam);

switch (lpNMHDR->code)
{
case LVN_GETDISPINFO:
{
	LV_DISPINFO* lpDispInfo = reinterpret_cast<LV_DISPINFO*>(lParam);
	LVITEM* pItem = &(lpDispInfo)->item;
	UINT uRow = pItem->iItem;
	UINT uCol = pItem->iSubItem;
	
	// 文字列表示のみ
	if (pItem->mask & LVIF_TEXT) 
	{
		switch (uCol)
		{
		case 0:
				・
				・
			
		default:
			break;
		}
}
default:
	break;
}

return 0;
TOP

コメント

名前:
コメント:
TOP

最終更新:2010年09月22日 22:20
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。
添付ファイル