List View に名前一覧を表示する

DialogBox に ListControl(ListView) を貼り付けて名前一覧を表示します。
ListBox と ListView は外見は同じように見えますが、拡張性やプログラミング方法が全く異なります。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プロジェクトの設定

  1. 新規プロジェクトで(ListView)を作成します。
  2. ページ先頭の画像を参考にして DialogBox を作成して下さい。
    DialogBox 全体に ListView を貼り付けて下さい。
    キャプションとIDを次のように設定して下さい。
    BOX キャプション ID
    DialogBox Dialog List View IDD_DIALOG1
    ListView IDC_LIST1
  3. スタイルの表示(View)から「リスト」を選択して下さい。
    説明の画像
  4. commctrl.h をインクルードして下さい。
    #pragma comment(lib,"comctl32.lib") で、リンカに対して comctl32.lib を組み込むように指示します。
    これは [プロジェクト] [プロパティ] [リンカ] [入力] からライブラリを追加することと同じです。
    詳細は Windows Guid から「パスの設定」を参照して下さい。
    t_name[] は ListView に登録する名前のデータです。
        #include    <commctrl.h>
        #pragma     comment(lib,"comctl32.lib")
    
        char    t_name[][13]=
        {   "赤井  伸浩","荒木  真一","加藤  純","黒岩  真由子","北川  雅美子"   };
        
  5. WinMain() では DialogBox を表示するだけです。
    WM_INITDIALOG: の記述です。
    InitCommonControls() で初期化して、SetInitialData() で ListView にデータを登録します。
        case WM_INITDIALOG:
            InitCommonControls();
            SetInitialData(GetDlgItem(hDlg,IDC_LIST1),5);
            break;
        
  6. データを登録する関数です。
    ListView_InsertItem() はマクロ記述で、SendMessage() を直接使うこともできます。
        //★ データを登録する
        void    SetInitialData(HWND hList, int cnt)
        {   LV_ITEM     item;
            int         i;
    
            // ITEM の設定
            item.mask = LVIF_TEXT;
            for(i=0; i<cnt; i++)
            {   item.pszText = t_name[i];           //登録する名前
                item.iItem = i;                     //登録番号
                item.iSubItem = 0;
                ListView_InsertItem(hList,&item);
                //SendMessage(hList,LVM_INSERTITEM,0,(LPARAM)&item);
            }
        }
        
  7. ListView_InsertItem() は commctrl.h の中で、次のように定義されています。
        #define ListView_InsertItem(hwnd, pitem)   \
            (int)SNDMSG((hwnd), LVM_INSERTITEM, 0, (LPARAM)(const LV_ITEM FAR*)(pitem))
        
  8. C# の ListView は ListView に登録する を参照して下さい。

【説明】

☆CommonControls は COMCTL32.LIB によって提供される共通の Control です。
このファイルは InternetExplorer などによりアップデートされるのでシステムごとにバージョンが異なります。
バージョンが上がるに従って機能が強化されるので、全てのシステムで動くとは限りません。
基本的な処理を Windows がやってくれるので、標準的な操作を簡単にプログラムできます。
Windows や InternetExplorer がバージョンアップされても昔のスタイルで取り残される心配がありません。

CommonControls のプログラミングの方法です。
  1. commctrl.h をインクルードします。
  2. comctrl32.lib をリンクします。
  3. initCommonControls() または initCommonControlsEx() を呼び出します。

超初心者のプログラム入門(Win32API C++)