またお世話になります。
VC++.NETの開発ツールでやっているんですけど・・・
ほかの人の様々な質問をみてプログラムを作ってみました。
その結果、エディットボックスではファイルを選択して開けたんですけど、
リストビューではファイルを選択して開くというのは可能なのでしょうか?
もし可能であればその方法を教えてもらえないでしょうか。
自身はないですけど、
ファイルオープンすればいいのではないですか?
何がわからないのかがわからないのですが......
コントロールはあくまでコントロールであり、
ファイルを開くことができることと関係がありません。
ListView からファイルパスを取得すれば、
あとは EditBox と同じ要領ですよね。
(コントロールによって、ファイルを開く実装が変わることはない)
遅くなりました。
エディットボックスでは
ファイルを参照
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";
}
}
}
という風にやりました。
リストビューでは出来なかったのでどこを直せばよいのかを
教えてもらえないでしょうか。
m_listview って何?
で、何をしたい/言いたいのかが分からない。
ファイルを開いて読むことと、Edit/List の違いが問題になることとの
関連がまったくわかりません。
ついでに、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が何者なのか不明ですし。
すみません。
間違えがありました。
m_listview→m_text
わかりにくくなっててすみませんでした。
>m_listview
これは開いたファイルのテキストを表示させる
エディットボックスのメンバ変数です。
>m_path_read
これは参照したファイルの場所を表示する
エディットボックスのメンバ変数です。
私がやりたいのはエディットボックスで表示させているテキストを
リストビューで表示させてみようとしているんですけど、うまくい
かないのでご指導お願いします。
>>m_listview
> これは開いたファイルのテキストを表示させる
> エディットボックスのメンバ変数です。
リストビューなのかエディトボックスなのか判らなくなってきましたが…
(不適切な変数名を付けると説明なしにソースコードを見た人が混乱しますよ)
とりあえず、リストビューで追加する場合は
CListView::GetListCtrl()でCListCtrlを取得して、CListCtrl::InsertItem()で追加です。
が、どういう形式のテキストファイルを表示させたいのか不明ですが、
エディトボックスとは扱い方が違いますよ?
# エクスプローラの「詳細表示」とか「大きいアイコン」とか……
# ただのテキスト(の内容)を表示させるのに向いたコントロールだとは思いませんが…
エディットボックスとリストビューの違いがわからなかったです…
>が、どういう形式のテキストファイルを表示させたいのか不明ですが、
http://madia.world.coocan.jp/cgi-bin/Vcbbs/wwwlng.cgi?print+200604/06040067.txt
のSugiさんみたいな感じで作ってみようと思ってます。
MFCは使っていないので細かいところは判りませんが…
CListCtrl::SetExtendedStyle()でレポート形式()に変更、
CListCtrl::InsertColumn()でカラムを設定、
CListCtrl::InsertItem()で追加(左端の分が追加される)して、
CListCtrl::SetItem()で、サブアイテムに設定していくカタチになるかと。
CSV形式なファイルの読み込みや切り出し方法はググれば見つかるでしょう。
Gridコントロールというのもあるようですが、使ったこと無いので渡しには判りません。
# それぞれのメンバ関数の使い方などはググるかMSDNで調べてください。
瀬戸っぷさん、詳しく教えてくれてありがとうございます。
教えてもらった関数を使って頑張ってみます。
ツイート | ![]() |