Re: ファイルダイアログ ( No.1 ) |
- 名前:かたぱると 日時:2006/11/30 16:59
>ファイルを保存する時に選択ウィンドウが表示されますが
「名前をつけてファイルを保存」のダイアログBOXを出したい、という事でしょうか?
>DXライブラリでそれを実装することは可能でしょうか?
DXライブラリの機能としてダイアログBOXを…という話であれば管理者様次第ではありますが、
そうでなく自分で実装したいのであれば
GetSaveFileNameを使用すればできるかと思います。
ttp://yokohama.cool.ne.jp/chokuto/urawaza/api/GetSaveFileName.html
構造体説明
ttp://hp.vector.co.jp/authors/VA023539/tips/dialog/004.htm
サンプル 「名前を付けて保存」ダイアログを表示する
ttp://homepage1.nifty.com/MADIA/vc/api/
このへんでしょうか。
|
Re: ファイルダイアログ ( No.2 ) |
- 名前:管理人 日時:2006/12/01 14:44
ygさんどうも、DXライブラリの管理人です。
かたぱるとさんのご質問と被ってしまいますが、
> ファイルを保存する時に選択ウィンドウが表示されますが、DXライブラリでそれを実装することは可能でしょうか?
について、もう少し詳しく教えて頂けないでしょうか?
もし一般的なソフトで表示されるファイル選択ウインドウ
でしたら、かたぱるとさんのご返答にある GetSaveFileName や
GetOpenFileName 等の Win32 API を直接使用することで
実装可能です。
|
Re: ファイルダイアログ ( No.3 ) |
- 名前:yg 日時:2006/12/07 10:59
具体的には、一般的なソフトで表示されるファイル選択ウインドウのことです。
HPをいろいろ検索したのですが、調べ方が悪かったみたいで分からなかったので質問させていただきました。
ひょっとしてまた隠し関数で無いかなぁと思って質問してみました。
かたぱるとさんの言われている事を実装しようとして
いろいろ頑張ってみましたが、引数関係で引っかかっているのでいまいち自分が分かっていないようです。
他力本願で申し訳ないですが、
できたらDXライブラリで、ファイルダイアログ関係のラッパー関数を追加していただきたいです。
|
Re: ファイルダイアログ ( No.4 ) |
- 名前:mas 日時:2006/12/07 17:24
GetOpenFileNameでいいと思いますよ。
検索したらサンプルもたくさん見つかると思うのですが…
例えばここ
ttp://wisdom.sakura.ne.jp/system/winapi/common/common6.html
> 引数関係で引っかかっているのでいまいち自分が分かっていないようです。
おそらくコンパイル時か実行時にエラーが出るんですよね?
それなら該当箇所のソースをここに載せてはどうでしょうか?
管理人さんは親切なので対応してくださるかもしれませんが、
私個人の意見としてはDXライブラリの管轄外な気がします。
きりがなくなってしまいますし…
たった一つの関数を呼ぶだけなのでご自身で頑張ってみませんか?
出来上がりさえすれば、必要に応じてラップして使いやすくすることもできますよ。
|
Re: ファイルダイアログ ( No.5 ) |
- 名前:犬福 日時:2006/12/08 03:02
横から失礼します^^;
確かにこれはDXライブラリに含む内容ではないですよね・・。
でも慣れてないと直接APIを触るのは大変なのはよく分かります(私もイマイチ慣れてないので・・;)
とりあえずDXライブラリ版のサンプルを書いてみたのでこれを読んで勉強してみてはいかがでしょう?(と言ってもサンプルを組み合わせただけですが・・^^;;)
引数の意味などは上記のサイトなどを参照して下さい。
WinXPSP2+VC++6.0+DX9.0c(Oct2004)で動作確認済みです。
// 名前を付けて保存メニュー表示プログラム
#include "DxLib.h"
int ShowWindow(HWND hwnd,LPCSTR Filter,char *FileName,DWORD Flags)
{
OPENFILENAME OFN;
// 構造体を設定
ZeroMemory(&OFN,sizeof(OPENFILENAME));
OFN.lStructSize = sizeof(OPENFILENAME);
OFN.hwndOwner = hwnd;
OFN.lpstrFilter =Filter;
OFN.lpstrFile =FileName;
OFN.nMaxFile = MAX_PATH*2;
OFN.Flags = Flags;
OFN.lpstrTitle = "名前を付けて保存";
return (GetSaveFileName(&OFN));
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
// 保存するファイル名を保存する領域の確保と初期化
char FileName[MAX_PATH * 2];
ZeroMemory(FileName, MAX_PATH * 2);
ChangeWindowMode(TRUE); // 念のためウィンドウモードで実行
if( DxLib_Init() == -1 ) return -1 ;
// ダイアログを表示 選択されたファイル名はFileNameに保存される
ShowWindow(GetMainWindowHandle(), "*.dat", FileName, 0);
// 結果の表示
printfDx("%sに保存します\n終了します。何かキーを押してください。\n", FileName);
WaitKey();
DxLib_End();
return 0;
}
|
Re: ファイルダイアログ ( No.6 ) |
- 名前:管理人 日時:2006/12/08 13:27
ygさんどうも、DXライブラリの管理人です。
ラッパー関数をご用意することは可能(DXライブラリとして
請け負うべき機能なのか等を考えると、どちらかといえば外れて
いますので非公開関数になると思いますが)ですが、宜しければ
この機会に GetSaveFileName の使い方を覚えてみられては
如何でしょうか?
|
Re: ファイルダイアログ ( No.7 ) |
- 名前:yg 日時:2006/12/11 10:46
皆様、ご親切にどうもありがとうございます。
ハンドル取得の隠し関数があったのですね。
リファレンスには無かったので行き詰まっていたところです。
ヘッダーファイルをよく見るようにします。
犬福さん、サンプルありがとうございます。
即効性があり大変助かります。
このサンプルのおかげですぐに理解できました。
GetMainWindowHandle関数に気が付かなかったら
ずっとできないところでした。
多分、自分と同じようにファイルダイアログを
実装しようとして断念した人はよく聞くので、
これらのログは多くの人にも役に立っていると思います。
ところで、DXライブラリの使い勝手のことを考えたら、機能的に便利そうなものはAPI関連を含め、
追加していただけると
自分を含め、多くのユーザーが喜ぶと思います。
というわけで、上記ラッパーライブラリを含め、
他のユーザーからも募集して成長させたらいかがでしょうか?
まず手始めにソケット通信がらみで便利な関数を自分が関数をそちらへ送らせていただきたいですがそう言ったことは可能でしょうか?
(DXライブラリの追加関数として)
|
Re: ファイルダイアログ ( No.8 ) |
- 名前:yg 日時:2006/12/11 11:42
ヘッダーファイルを確認しましたところ、
リファレンスには無いですが、もう既に送ろうかと考えていた機能の関数はありました。
その件に関する内容は無かったことにして下さい。
|
Re: ファイルダイアログ ( No.9 ) |
- 名前:管理人 日時:2006/12/11 13:07
ygさんどうも、DXライブラリの管理人です。
無事ダイアログを出せたようで何よりです。
> ところで、DXライブラリの使い勝手のことを考えたら、機能的に
> 便利そうなものはAPI関連を含め、追加していただけると
> 自分を含め、多くのユーザーが喜ぶと思います。
> というわけで、上記ラッパーライブラリを含め、
> 他のユーザーからも募集して成長させたらいかがでしょうか?
私がプライベートな時間の全てをDXライブラリの開発に充てて
いればもっと色々機能を改善したり強化したり拡張したりすることが
出来るのですが、現在私もDXライブラリを使ってゲームを作って
いるので、バグや不具合の対応と、ちょっとした要望に対しての
機能追加くらいしか時間を割くことが出来ません。
なので、大々的に追加したい機能を募集するということも出来ません。
ご要望にお応え出来ず申し訳ありません。m(_ _;m
|