リストビューコントロール [WIN32 API]
Posted: 2012年5月26日(土) 11:06
お久しぶりです。
またもやWIN32 APIプログラミングで挫折中です。
現在リストビューを研究しています。
そこで、リストビューの項目の内容が編集できるものを作りました。
しかし、問題が発生。
一番左の列の項目は編集できるのですが、
右のSubItemの列の項目が編集できないという状況になりました。
WM_NOTIFYメッセージの捕まえ方が悪いのかどうかわかりません。
もしや構造体になんらかの情報が入っているのか?
まったくもって分かりません。
どなたか教えてください。
ソースが漏れてはまずいのでリストビューのところだけ抜粋して載せます。
メインソース
リソース
リソース製作にはResEditを使っています。
どなたか教えてください。
よろしくお願いします。
またもやWIN32 APIプログラミングで挫折中です。
現在リストビューを研究しています。
そこで、リストビューの項目の内容が編集できるものを作りました。
しかし、問題が発生。
一番左の列の項目は編集できるのですが、
右のSubItemの列の項目が編集できないという状況になりました。
WM_NOTIFYメッセージの捕まえ方が悪いのかどうかわかりません。
もしや構造体になんらかの情報が入っているのか?
まったくもって分かりません。
どなたか教えてください。
ソースが漏れてはまずいのでリストビューのところだけ抜粋して載せます。
メインソース
BOOL CALLBACK MyTimeProc(HWND hDlg,UINT msg,WPARAM wp, LPARAM lp)
{
LVCOLUMN lvcol;
LVITEM item;
UINT i;
static HWND hList;
LV_DISPINFO *lvinfo;
TCHAR buf[64];
static HWND hEdit;
switch (msg)
{
case WM_INITDIALOG:
InitCommonControls();
hList = GetDlgItem(hDlg, IDC_LISTVIEW);
lvcol.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
lvcol.fmt = LVCFMT_LEFT;
for(i = 0; i < 2; i++)
{
lvcol.cx = CX[i]; // 表示位置
lvcol.pszText = strItem0[i]; // 見出し
lvcol.iSubItem = i; // サブアイテムの番号
ListView_InsertColumn(hList, i, &lvcol);
}
item.mask = LVIF_TEXT;
for(i = 0; i < 2; i++)
{
item.pszText = strItem1[i]; // テキスト
item.iItem = i; // 番号
item.iSubItem = 0; // サブアイテムの番号
ListView_InsertItem(hList, &item);
item.pszText = strItem2[i]; // テキスト
item.iItem = i; // 番号
item.iSubItem = 1; // サブアイテムの番号
ListView_SetItem(hList, &item);
}
break;
case WM_NOTIFY:
if ((int)wp == IDC_LIST1)
{
lvinfo = (LV_DISPINFO *)lp;
switch (lvinfo->hdr.code)
{
case LVN_BEGINLABELEDIT:
hEdit = ListView_GetEditControl(hList);
break;
case LVN_ENDLABELEDIT:
GetWindowText(hEdit, buf, sizeof(buf));
ListView_SetItemText(hList, lvinfo->item.iItem, 0, buf);
break;
}
}
break;
case WM_CLOSE:
case IDOK:
EndDialog(hDlg, IDOK);
break;
case IDCANCEL:
EndDialog(hDlg, IDCANCEL);
break;
default:
break;
}
return FALSE;
}
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
TIME DIALOG 0, 0, 215, 142
STYLE DS_3DLOOK | DS_CENTER | DS_LOCALEDIT | DS_MODALFRAME | DS_SHELLFONT | WS_CAPTION | WS_VISIBLE | WS_POPUP | WS_SYSMENU
CAPTION "リストビューの研究"
FONT 9, "MS UI Gothic"
BEGIN
DEFPUSHBUTTON "OK", IDOK, 97, 118, 50, 14
PUSHBUTTON "キャンセル", IDCANCEL, 155, 118, 50, 14
CONTROL "", IDC_LISTVIEW, WC_LISTVIEW, WS_TABSTOP | WS_BORDER | LVS_ALIGNLEFT | LVS_EDITLABELS | LVS_REPORT, 14, 13, 173, 98, WS_EX_DLGMODALFRAME
END
どなたか教えてください。
よろしくお願いします。