ファイルのフルパスを取得するには
ダイアログだと
CFileDialog myDLG( FALSE,NULL,*.*,
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
すべてのファイル(*.*)|*.*||);
if( myDLG.DoModal()==IDOK ){
// ファイル名の取得
fileName = myDLG.GetPathName();
こんなんですけどSDIで基本はForm、ファイルの開き方は左上のファイルからやりたいとき
はどう変えればいいですかね。
どこのどのタイミングでフルパス情報が必要なのですか?
クラスウィザードの ID_FILE_XXXX のCOMMAND メッセージハンドラ内に
>CFileDialog myDLG( FALSE,NULL,*.*,
> OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
> すべてのファイル(*.*)|*.*||);
>if( myDLG.DoModal()==IDOK ){
> // ファイル名の取得
> fileName = myDLG.GetPathName();
このコードを追加するとできると思いますよ。
それか、ドキュメントクラスの Serialize 関数の CArchive オブジェクトを使って、
CFile* fp = ar.GetFile();
CString strPath = fp->GetFilePath();
でも取れます。
「左上のファイル」というのはたぶんメニューのファイルに属している「開く」を
指していると思いますが、それを選択された時に必要なのですか?
それとも、それを選択してファイルダイアログが表示される前に必要なのですか?
ファイルダイアログが表示されてファイルを選択した後に必要なのですか?
それとも、ドキュメントクラスのSerialize(CArchive& ar)で必要なのですか?
ドキュメントクラスの Serialize 関数で行いたいですね。
ファイルダイアログはつけません。
なので左上のファイルボタンからファイルを得たいです。
すいません、さらにファイルを開くプログラムはどうすればいいのですか?
普通にfopenでよろしいのですか?
へたれさんどうもです
ファイルを開く場合は
ar >> (object);
または
ar.Read();
ar.ReadString();
でいいです。
ドキュメントクラスのシリアライズに入っている時点で
ファイルは開いてますが・・・。
もし、対象ファイルがテキストファイルならば
if (ar.IsStoring())
{
// TODO: この位置に保存用のコードを追加してください。
}
else
{
// TODO: この位置に読み込み用のコードを追加してください。
CString str;
ar >> str;
}
こうしてみてください。
1行目が読み込めるはずです。
へたれさん、感謝です・・やってみます
大変すいませんが後で確認したいのでまとめて書いてくれるとありがたいです
はおさん、たすかります^^
テキストじゃないときはどうなるのですか?
テキストでないときはそのファイルフォーマットにそったデータ型で読み込んでやればいいはず
です。
このあたりはきちんと勉強したほうがいいと思いますので自分でシリアライズとかCArchiveを
調査してみてください。
ファイル入出力の基本的なことがわかっていたら理解できると思います。
CFileって具体的な意味って何なんですか?
調べてもわかりにくかったんで