List Control で名簿を表示する

CreateWindowEx() で List Control を生成して名簿を表示します。
DialogBox を使わないで、通常のウインドウに List Control を直接貼り付けます。

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

プロジェクトの設定

  1. テンプレートまたは、空のプロジェクトから作成して下さい。
  2. commctrl.h をインクルードして、comctrl32.lib をリンクして下さい。
    ID_LISTVIEW は List Control のIDです。
    g_hList は List Control のハンドルです。
    ListStr[] が登録する名簿です。
        #include    <commctrl.h>
        #pragma     comment(lib,"comctl32.lib")
        #define     ID_LISTVIEW     (WM_APP + 0)
    
        HINSTANCE   g_hInst;
        HWND        g_hWnd;
        HWND        g_hList;
    
        char        ListStr[][24]=
        {   "01 赤井  伸浩",  "02 荒木  真一",  "03 藤井  俊之",  "04 北村  奈緒美",
            "05 澤田  夕子",  "06 川崎  葉子",  "07 山下  和彦",  "08 黒岩  真由子"
        };
        
  3. WinMain() はウインドウのサイズを設定して表示するだけです。
  4. WM_CREATE: では List View のウインドウを生成してメインウインドウに貼り付けます。
    SetInitialData() で List View に名簿を登録します。
    幅や高さがゼロになっていますが、WM_SIZE: でウインドウのサイズに合わせて設定されます。
            case WM_CREATE:
                InitCommonControls();
                g_hList = CreateWindowEx(0,
                    WC_LISTVIEW, "",
                    WS_CHILD | WS_VISIBLE | LVS_LIST,
                    0, 0, 0, 0,
                    hWnd, (HMENU)ID_LISTVIEW, g_hInst, NULL);
                SetInitialData();
                break;
        
  5. WM_SIZE: で List View のサイズをウインドウに合わせて設定します。
            case WM_SIZE:
                MoveWindow(g_hList,0,0,LOWORD(lp),HIWORD(lp),TRUE);
                break;
        
  6. List View に名簿を登録する関数です。
    ListView_InsertItem() が名簿を登録する関数です。
        void  SetInitialData()
        {   LV_ITEM     item;
            int         i;
    
            // ITEM の設定
            item.mask = LVIF_TEXT;
            for(i=0; i<8; i++)
            {   item.pszText= ListStr[i];
                item.iItem = i;
                item.iSubItem = 0;
                ListView_InsertItem(g_hList, &item);
                //SendMessage(g_hList,LVM_INSERTITEM,0,(LPARAM)&item);
            }
        }
        

【演習】

  1. プログラムを完成させて下さい。
  2. ListView_InsertItem() で登録する方法と SendMessage() で登録する方法があります。
        ListView_InsertItem(g_hList, &item);
        //SendMessage(g_hList,LVM_INSERTITEM,0,(LPARAM)&item);
        

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