Win32API質問箱 Build43
■ このスレッドは過去ログ倉庫に格納されています
0268257
2006/05/26(金) 13:14:10ですので
リストビューのセルの上でクリックしたときにエディットコントロールを表示し
そこに入力した値をそのセルの値にしようと考えました。
それで下記のものが作りかけのソースです。
static HWND hList, hEdit;
LVHITTESTINFO HitTest;
case NM_CLICK:
GetCursorPos(&HitTest.pt);
ScreenToClient(hList, &HitTest.pt);
ListView_SubItemHitTest(hList, &HitTest);//押したセルを取得
lvColumn.mask = LVCF_WIDTH;
SendMessage(hList,LVM_GETCOLUMN,HitTest.iSubItem,(LPARAM)&lvColumn);//列の幅を得るため(高さはどうやって取得するの?)
lvItem.iSubItem = HitTest.iSubItem;
lvItem.iItem = HitTest.iItem;
lvItem.mask = LVIF_TEXT;
SendMessage(hList, LVM_GETITEM, 0, (LPARAM)&lvItem);//選択したセルの文字列取得
SetWindowText(hEdit, lvItem.pszText);//取得した文字列をhEditに格納←一列目はちゃんと文字列が表示されるのに二列目はなぜか文字化けする
MoveWindow(hEdit, わかんない, わかんない, lvColumn.cx, わかんない);//選択したセルの上にhEditを被せる
SetFocus(hEdit);//hEditにフォーカス移動←これをしたらなぜか文字列がかわらない
break;
見てもらったら最初に目に付くと思われるMoveWindowの「わかんない」ですが
これは選択したセルの左上の座標がわからないのと、セルの高さが取得の仕方がわからないということです。
だれかこのソースにこうしたらいいと思うと指摘してもらえないでしょうか?
根本的に間違っているところがあるならそれも指摘お願いします。
■ このスレッドは過去ログ倉庫に格納されています