Tree View をクリックする

DialogBox に TreeView を貼り付けて表示します。
クリックされた TreeView の項目を MessageBox に表示します。
最近では UNI CODE が一般的になって来たので、UNI CODE でプログラムしてみました。

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

プロジェクトの設定

  1. MultiByte でも Unicode でもプログラミングは同じ要領です。
    Unicode の設定は Program Guid を参照して下さい。
    Tree View に家族構成を表示するプログラムは Dialog Box で作成しています。
    詳細は Tree View を表示する を参照して下さい。
  2. Tree View をクリックすると、親のウインドウに WM_NOTIFY: として伝えられます。
    WM_NOTIFY: が Tree View からのメッセージかを調べます。
    次に Tree View の選択状態が別の項目に移ったかを調べます。
    Tree View のハンドル(hItem)を pNM->itemNew.hItem; で取得します。
    TreeView_GetItem() で Tree View の項目を取得して MessageBox() で表示します。
    LRESULT CALLBACK DlgProc(HWND hDlg,UINT msg,WPARAM wParam,LPARAM lParam)
    {
        HTREEITEM       hItem;
        NM_TREEVIEW     *pNM;
        TV_DISPINFO     *tvinfo;
        TVITEM          ti;
        WCHAR           pszBuf[256];
    
        switch (msg)
        {   case WM_INITDIALOG:
                SetWindowText(hDlg,TITLE);
                InitCommonControls();
                SetInitialData(GetDlgItem(hDlg,IDC_TREE1),Data);
                break;
            case WM_NOTIFY:
                if (LOWORD(wParam)==IDC_TREE1)
                {   tvinfo= (TV_DISPINFO *)lParam;
                    pNM   = (NM_TREEVIEW *)lParam;
                    switch(tvinfo->hdr.code)
                    {   case TVN_SELCHANGED:    //選択状態が別の項目に移った
                            hItem=  pNM->itemNew.hItem;
                            ti.mask = TVIF_TEXT;
                            ti.hItem = hItem;
                            ti.pszText = pszBuf;
                            ti.cchTextMax = 256;
                            if (TreeView_GetItem(GetDlgItem(hDlg,IDC_TREE1), &ti))
                                MessageBox(NULL,pszBuf,L"FrameTree", MB_OK); 
                            break;
                    }
                }
                break;
            case WM_CLOSE:
                EndDialog(hDlg, TRUE); 
                return TRUE;
                break;
            default:
                return FALSE;
        }
        return TRUE;
    }
    

超初心者の方のために全ソースコードを掲載します。 (^_^;)
クリックされた項目を表示(UNI CODE)

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