HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
1231
a編集可能なリストビュー4解決


a

リンク

2014/12/31(Wed) 14:13:04|NO.66743

win32で作るリストビューについて質問です。
リストビューの詳細項目で、アイテムをクリックすると
http://ameblo.jp/blueskyame/entry-10327905021.html
このように編集できるようにしたいのですが、うまくいきません。
どうしたらうまくいくでしょうか。
連続投稿で申し訳ないです。



この記事に返信する


cats

リンク

2014/12/31(Wed) 14:40:44|NO.66744

まず、リストビューのスタイルにアイテム編集可能の値を追加します。
WM_NOTIFYのメッセージをoncmdで監視して、lparamに入れられるポインタから12バイト分をコピーして変数を作ります。
その変数の最初の配列の内容がリストビューのハンドルであったら、リストビューに関するメッセージが来ます。
変数の3番目の配列が-106であれば、変更通知が来たという意味です。
このときlparamのポインタから今度は64バイト(文字列分)変数を作ります。
そこで、LVM_SETITEMAで項目の内容を変更するのですが、12バイト分のポインタは元に戻してください。
つまり、「dupptr a, lparam, 64」の場合「varptr(a) + 12」を指定してやります。



a

リンク

2014/12/31(Wed) 16:15:49|NO.66747

>>catsさん
ありがとうございます。
通知メッセージの監視まではできたのですが、文字の取得がうまくいきません。

#include "llmod3/llmod3.hsp" #include "llmod3/listview.hsp" #include "llmod3/img.hsp" //----マクロ #const WM_NOTIFY 0x004E ;メッセージ用 #const LVS_EDITLABELS 0x0200 ;編集を可能にする(値を調べるのにかなり苦労した。) oncmd gosub *NOTIFY,WM_NOTIFY ;割り込み //----リストビュー作成 listview 400,200,$110009 | LVS_EDITLABELS id=stat :hwd=objinfo_hwnd(id) listaddcl 0,"test1",100,2 listaddcl 1,"test2",100 listaddcl 2,"test3",100 listadd 0,"あいうえお",0 listadd 1,"かきくけこ",0 listadd 0,"さしすせそ",1 listadd 1,"たちつてと",1 listadd 0,"なにぬねの",2 listadd 1,"はひふへほ",2 stop //----WM_NOTIFYメッセージ *NOTIFY dupptr nmhdr,lparam,12 ; NMHDR 構造体の割り当て if nmhdr.0!=hwd :return if nmhdr.2=-106{ dupptr a,lparam,64,2 dialog a } return 0


>>このときlparamのポインタから今度は64バイト(文字列分)変数を作ります。
今思ったのですが、この文字列というのは、編集された文字列が入っているのでしょうか?



cats

リンク

2014/12/31(Wed) 18:18:40|NO.66749

すいません、時間がなかったもので説明を適当にしてしまいました。
LVS_EDITLABELSとかは言っておくべきでしたね。
とはいうものの、あの説明でも a さんのコードは正確に捉えてくれているようです。

>編集された文字列が入っているのでしょうか?
リストビューに項目を追加する際の配列ができています。
配列の中には変更後の文字列も含まれています。

リストビューの変更はLVM_SETITEMAでできます。
llmodは使ったことがないので以下はsendmsgで説明します。

ということで、

dupptr a,lparam,64,2
の部分を

dupptr a,lparam,64 sendmsg hwd,0x1006/*LVM_SETITEMA*/,0,varptr(a)+12
に変えると動作すると思います。



a

リンク

2014/12/31(Wed) 18:55:38|NO.66752

ありがとうございます! うまく設定できました!



ONION software Copyright 1997-2021(c) All rights reserved.