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


  2006-05-02 22:48:10  No: 61657

またお世話になります。

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

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


烏龍茶  2006-05-02 23:07:52  No: 61658

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


じゃんぬねっと  URL  2006-05-02 23:57:11  No: 61659

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

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

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


  2006-05-03 01:59:34  No: 61660

遅くなりました。

エディットボックスでは

ファイルを参照
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-03 02:54:12  No: 61661

m_listview って何?

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

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


瀬戸っぷ  2006-05-03 09:14:24  No: 61662

ついでに、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 18:35:51  No: 61663

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

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

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

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


瀬戸っぷ  2006-05-09 08:25:36  No: 61664

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

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

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

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

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


  2006-05-09 19:25:44  No: 61665

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

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


瀬戸っぷ  2006-05-10 09:09:46  No: 61666

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

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

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

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


  2006-05-10 18:43:00  No: 61667

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加