ファイル選択画面を使う場合

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
いとちゃん

ファイル選択画面を使う場合

#1 投稿記事 by いとちゃん »

いとちゃんといいます。いつも皆様のレスポンスには助けられております。

AB424にて、1つのDATファイルの内容を書き換えるプログラムができました。そこでは、Cドライブの直下にある特定のファイルについてのみ機能が確認されたのですが

Windowsで、よくあるファイル参照画面のようなものを今後組み込みたいと
思います。
APIの組み込みということになるのでしょうが、初歩的で恐れ入りますが
設定方法などご教示願えれば幸いです。
ゲスト

#2 投稿記事 by ゲスト »

OPENFILENAMEで検索してみてください。
いとちゃん

ファイル選択画面

#3 投稿記事 by いとちゃん »

Type OPENFILENAME

みてみました。

具体的に使用方法をご教授いただける方、サンプルコードのようなものを
お願いいたします。


ファイル選択画面が出てくる
1個のファイルを選択する

選択されたファイルネームを変数に格納する
その変数を使ってOPENする・・・・

にしたいのです。
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#4 投稿記事 by konisi »

今学校から適当に打ってるのですが、こんな感じでどうでしょう?

コード: 全て選択

Function OpenFileName() As *Byte
    Dim ofn As OPENFILENAME
    OpenFileName=calloc(MAX_PATH)
    
    'OPENFILENAME構造体の初期化
    FillMemory(VarPtr(ofn),Len(ofn),0)
    ofn.lStructSize=Len(ofn)
    ofn.lpstrFilter=Ex"(all file)\0*.*\0\0"
    ofn.nFilterIndex=1
    ofn.lpstrFile=OpenFileName
    ofn.nMaxFile=MAX_PATH
    ofn.lpstrTitle="ファイルを開く"
    ofn.Flags=OFN_FILEMUSTEXIST or OFN_PATHMUSTEXIST or OFN_EXPLORER
    ofn.lpstrDefExt="*"

    '「ファイルを開く」ダイアログボックスを表示
    If GetOpenFileName(ofn)=0 Then
        free(OpenFileName)
        OpenFileName=0
        Exit Sub
    End If
End Function


Dim FileName As *Byte

FileName=OpenFileName()
If FileName=0 then ExitProcess(0)
Open MakeStr(FileName) As #1
'  ...
Close #1
free(FileName)
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ゲスト

#5 投稿記事 by ゲスト »

公式ヘルプのプログラミング講座にもサンプルがあります。
一度、目を通しておくとよいです。

"「開く」メニューイベント"のところです。
いとちゃん

ブラボーデス!

#6 投稿記事 by いとちゃん »

Konishiさんへ

すばらしい!こういうことです。
おかげさまでできそうです。

誠にありがとうございます。


いとちゃん
いとちゃん

ウインドウが開けたのはいいのですが・・・・・

#7 投稿記事 by いとちゃん »

ウインドウが開けたのはいいのですが・・・・・

メインのプログラムの後ろにウインドウが開いてしまいます。

実行の順番がいけないのかと思いましたが変えても、裏画面にひっこんで
表示されてしまいます。

ふつつかものですが、どなたかお分かりの方よろしくお願いいたします。
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

Re: ウインドウが開けたのはいいのですが・・・・・

#8 投稿記事 by 7 »

> メインのプログラムの後ろにウインドウが開いてしまいます。
>
> 実行の順番がいけないのかと思いましたが変えても、裏画面にひっこんで
> 表示されてしまいます。
メインウィンドウが「最前面」で、OPENFILENAME構造体の hwndOwnerNULL になっていないでしょうか?
OPENFILENAME構造体の hwndOwner にはメインウィンドウのウィンドウハンドルを指定します。
いとちゃん

恐れ入ります。

#9 投稿記事 by いとちゃん »

7様

ご指摘いただきありがとうございます。

しかし
>メインウィンドウが「最前面」で、OPENFILENAME構造体の hwndOwner が NULL になっていないでしょうか?
>OPENFILENAME構造体の hwndOwner にはメインウィンドウのウィンドウハンドルを指定します。


なのですが、メインウインドウのウインドウハンドルは、特に指定していない
状態です。

こんな場合、具体的にどうすればいいのでしょうか?
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#10 投稿記事 by konisi »

上のOpenFileName関数で言うところの、
FillMemory関数以降If文以前の位置(ofnがたくさん書いてあるあたり)に
ofn.hwndOwner=hMainWnd
などと書いてみてはどうでしょう?
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
いとちゃん

なるほどですね。

#11 投稿記事 by いとちゃん »

Konishiさんへ

そういうことですか。
できるみなさんから見れば当たり前のことなのですが
以外にわからないものです。

不明だけど、コードを入れてみて、少しかえてみて、ああなるほどという連続ですが今後ともよろしくお願い申し上げます。
私も早くいろいろ覚えて、細かく初心者が理解できる文章が書けるようになりたいなあと思います。
Konishiさんのような方の具体的記載のおかげで、この質問板が生きいると思います。

by いとちゃん
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

本題とは関係ないんですが。

#12 投稿記事 by konisi »

都合三回、konishiと間違えて呼ばれている件について。
どうでもいい事なんですが、何故か拘ってしまいます。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
いとちゃん

どうもすみませんでした。

#13 投稿記事 by いとちゃん »

konisiさんへ

いままで間違いに気づきませんでした。どうもすみませんでした。
他意はございませんのでお許しください。

他に比べて具体的かつ正しいメッセージを書いて
くださるkonisiさんには大変感謝しております。

ありがとうございます。

草々

いとちゃん
返信する