ページ 1 / 1
複数ファイルを開く
Posted: 2007年7月30日(月) 01:47
by Z13
Z13です。先回はありがとうございました。
ファイルを開くのは以下の通りですが、
[ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]Dim ofn As OPENFILENAME
Dim FileName[MAX_PATH-1] As Byte
'OPENFILENAME構造体の初期化
FillMemory(VarPtr(ofn),Len(ofn),0)
ofn.lStructSize=Len(ofn)
ofn.hwndOwner=hMainWnd
ofn.lpstrFilter=Ex"すべてのファイル(*.*)\0*\0\0"
ofn.nFilterIndex=1
ofn.lpstrFile=FileName
ofn.nMaxFile=MAX_PATH
ofn.lpstrTitle="ファイルを開く"
ofn.Flags=OFN_FILEMUSTEXIST or OFN_HIDEREADONLY or OFN_PATHMUSTEXIST
ofn.lpstrDefExt="*"
'「ファイルを開く」ダイアログ ボックスを表示
If GetOpenFileName(ofn)=0 Then Exit Sub
開いたファイルと同じ階に "開いたファイル名&data.txt" があって、
それも開きたいときはどうすればいいのですか?
いちいち2回ダイアログ ボックスを表示させるしかないのでしょうか?
教えてください。
Re: 複数ファイルを開く
Posted: 2007年7月30日(月) 07:45
by 7
> 開いたファイルと同じ階に "開いたファイル名&data.txt" があって、
> それも開きたいときはどうすればいいのですか?
>
> いちいち2回ダイアログ ボックスを表示させるしかないのでしょうか?
一回目、ダイアログボックスを表示してユーザーがファイルを選択した場合、Byte型変数
FileNameにファイルへの絶対パスが格納されるので、そのパスに "
data.txt" を追加するだけで開くことができます。
文字列の追加はlstrcat()関数で行うことができます。
[ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]コード: 全て選択
Dim ofn As OPENFILENAME
Dim FileName[MAX_PATH-1] As Byte
'OPENFILENAME構造体の初期化
FillMemory(VarPtr(ofn),Len(ofn),0)
ofn.lStructSize=Len(ofn)
ofn.hwndOwner=hMainWnd
ofn.lpstrFilter=Ex"すべてのファイル(*.*)\0*\0\0"
ofn.nFilterIndex=1
ofn.lpstrFile=FileName
ofn.nMaxFile=MAX_PATH
ofn.lpstrTitle="ファイルを開く"
ofn.Flags=OFN_FILEMUSTEXIST or OFN_HIDEREADONLY or OFN_PATHMUSTEXIST
ofn.lpstrDefExt="*"
'「ファイルを開く」ダイアログ ボックスを表示
If GetOpenFileName(ofn)=0 Then Exit Sub
' まずFileNameを開く
' 開いた後に "data.txt" を追加
lstrcat(FileName,"data.txt")
' FileNameを開く
Posted: 2007年7月30日(月) 10:24
by Z13
ありがとうございます、
また、開いたファイルが属しているフォルダのパスを取得しようとしています。
OPENFILENAMEで ofn.FileOffset(ファイルパスまでのバイト数)を使って、
ファイルパスからMid$でフォルダパスを取得しようと思いますが、
「メンバは定義されてません」 と出てしまいます。
そもそもこのやり方でよいのですか、教えてください。
Posted: 2007年7月30日(月) 16:42
by ゲスト
>>「メンバは定義されてません」 と出てしまいます。
定義しましょう。
>ofn.lpstrTitle="ファイルを開く"
>ofn.Flags=OFN_FILEMUSTEXIST or OFN_HIDEREADONLY or OFN_PATHMUSTEXIST
>'---追加---
>ofn.nFileOffset=0
>'---追加終了---
>ofn.lpstrDefExt="*"
Posted: 2007年7月30日(月) 21:08
by Z13
アドバイスありがとうございます。うまくいきました!
[ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]Dim ofn As OPENFILENAME
Dim FileName[MAX_PATH-1] As Byte
'OPENFILENAME構造体の初期化
FillMemory(VarPtr(ofn),Len(ofn),0)
ofn.lStructSize=Len(ofn)
ofn.hwndOwner=hMainWnd
ofn.lpstrFilter=Ex"すべてのファイル(*.*)\0*\0\0"
ofn.nFilterIndex=1
ofn.lpstrFile=FileName
ofn.nMaxFile=MAX_PATH
ofn.lpstrTitle="ファイルを開く"
ofn.Flags=OFN_FILEMUSTEXIST or OFN_HIDEREADONLY or OFN_PATHMUSTEXIST
ofn.nFileOffset=0
ofn.lpstrDefExt="*"
'「ファイルを開く」ダイアログ ボックスを表示
If GetOpenFileName(ofn)=0 Then Exit Sub
' まずFileNameを開く
Dim ka As String
ka=Str$(ofn.nFileOffset)
Exec Mid$(FileName,1,Val(ka))