リストビューでファイルを選択して開くには?


 2006-05-02 13:48:10  No: 61657  IP: 192.*.*.*

またお世話になります。

VC++.NETの開発ツールでやっているんですけど・・・

ほかの人の様々な質問をみてプログラムを作ってみました。
その結果、エディットボックスではファイルを選択して開けたんですけど、
リストビューではファイルを選択して開くというのは可能なのでしょうか?
もし可能であればその方法を教えてもらえないでしょうか。

編集 削除
烏龍茶  2006-05-02 14:07:52  No: 61658  IP: 192.*.*.*

自身はないですけど、
ファイルオープンすればいいのではないですか?

編集 削除
じゃんぬねっと  URL  2006-05-02 14:57:11  No: 61659  IP: 192.*.*.*

何がわからないのかがわからないのですが......

コントロールはあくまでコントロールであり、
ファイルを開くことができることと関係がありません。

ListView からファイルパスを取得すれば、
あとは EditBox と同じ要領ですよね。
(コントロールによって、ファイルを開く実装が変わることはない)

編集 削除
 2006-05-02 16:59:34  No: 61660  IP: 192.*.*.*

遅くなりました。

エディットボックスでは

ファイルを参照
void CVCKadaiListviewDlg::OnSansyo() 
{
    UpdateData(TRUE);
    CFileDialogfdlgTRUE,"txt",NULL,OFN_ALLOWMULTIS
    ELECT|OFN_LONGNAMES, "txt file|*.txt||",this);
    if(fdlg.DoModal()==IDOK)
    {
        m_path_read = fdlg.GetPathName();
        UpdateData(FALSE);
    }       
}

参照したファイルを読む
void CVCKadaiListviewDlg::OnYomu() 
{
    UpdateData(TRUE);
        
    char c[256];
    CStdioFile fpi;
    if(fpi.Open(m_path_read, CFile::modeRead) != 0)
    {
        m_listview = "";
        while(fpi.ReadString(c,256) != NULL)
        {
            c[strlen(c)-1] = 0;
            m_listview+= c;
            m_listview+="\r\n";
        }
    }
}

という風にやりました。

リストビューでは出来なかったのでどこを直せばよいのかを
教えてもらえないでしょうか。

編集 削除
RAPT  2006-05-02 17:54:12  No: 61661  IP: 192.*.*.*

m_listview って何?

で、何をしたい/言いたいのかが分からない。

ファイルを開いて読むことと、Edit/List の違いが問題になることとの
関連がまったくわかりません。

編集 削除
瀬戸っぷ  2006-05-03 00:14:24  No: 61662  IP: 192.*.*.*

ついでに、m_path_readって何でしょう?
クラスのメンバでCStringならとりあえずは大丈夫かも知れませんが。(あくまで推測)

リストビューに値(というか文字列)を設定するのに、
>         m_listview = "";
>         while(fpi.ReadString(c,256) != NULL)
>         {
>             c[strlen(c)-1] = 0;
>             m_listview+= c;
>             m_listview+="\r\n";
>         }
という方法では、おそらく無理でしょう。

RAPTさんも指摘していますが、m_listviewが何者なのか不明ですし。

編集 削除
 2006-05-08 09:35:51  No: 61663  IP: 192.*.*.*

すみません。
間違えがありました。
m_listview→m_text
わかりにくくなっててすみませんでした。

>m_listview
  これは開いたファイルのテキストを表示させる
  エディットボックスのメンバ変数です。

>m_path_read
  これは参照したファイルの場所を表示する
  エディットボックスのメンバ変数です。

私がやりたいのはエディットボックスで表示させているテキストを
リストビューで表示させてみようとしているんですけど、うまくい
かないのでご指導お願いします。

編集 削除
瀬戸っぷ  2006-05-08 23:25:36  No: 61664  IP: 192.*.*.*

>>m_listview
>  これは開いたファイルのテキストを表示させる
>  エディットボックスのメンバ変数です。

リストビューなのかエディトボックスなのか判らなくなってきましたが…
(不適切な変数名を付けると説明なしにソースコードを見た人が混乱しますよ)

とりあえず、リストビューで追加する場合は
CListView::GetListCtrl()でCListCtrlを取得して、CListCtrl::InsertItem()で追加です。

が、どういう形式のテキストファイルを表示させたいのか不明ですが、
エディトボックスとは扱い方が違いますよ?

# エクスプローラの「詳細表示」とか「大きいアイコン」とか……
# ただのテキスト(の内容)を表示させるのに向いたコントロールだとは思いませんが…

編集 削除
 2006-05-09 10:25:44  No: 61665  IP: 192.*.*.*

エディットボックスとリストビューの違いがわからなかったです…

>が、どういう形式のテキストファイルを表示させたいのか不明ですが、
http://madia.world.coocan.jp/cgi-bin/Vcbbs/wwwlng.cgi?print+200604/06040067.txt
のSugiさんみたいな感じで作ってみようと思ってます。

編集 削除
瀬戸っぷ  2006-05-10 00:09:46  No: 61666  IP: 192.*.*.*

MFCは使っていないので細かいところは判りませんが…

CListCtrl::SetExtendedStyle()でレポート形式()に変更、
CListCtrl::InsertColumn()でカラムを設定、
CListCtrl::InsertItem()で追加(左端の分が追加される)して、
CListCtrl::SetItem()で、サブアイテムに設定していくカタチになるかと。
CSV形式なファイルの読み込みや切り出し方法はググれば見つかるでしょう。

Gridコントロールというのもあるようですが、使ったこと無いので渡しには判りません。

# それぞれのメンバ関数の使い方などはググるかMSDNで調べてください。

編集 削除
 2006-05-10 09:43:00  No: 61667  IP: 192.*.*.*

瀬戸っぷさん、詳しく教えてくれてありがとうございます。

教えてもらった関数を使って頑張ってみます。

編集 削除