DXライブラリで.....
DXライブラリで.....
c言語についてですが、ファイルを開く時にファイルを開くダイアログをだしたいんです。
でも、やり方が見つからないんです。もしかしたら出来ないかもしれませんがどうか回答お願いします!m(_ _)m
でも、やり方が見つからないんです。もしかしたら出来ないかもしれませんがどうか回答お願いします!m(_ _)m
Re: DXライブラリで.....
こちらの方にWin32APIを使用した「開く・名前を付けて保存」ダイアログのサンプルがありましたので、
こちらを参考にしてみてはいかがでしょうか。
丸々とるのはいいとは思えませんが…。
http://homepage1.nifty.com/MADIA/vc/api/
こちらを参考にしてみてはいかがでしょうか。
丸々とるのはいいとは思えませんが…。
http://homepage1.nifty.com/MADIA/vc/api/
Re: DXライブラリで.....
コンパイルしていない上、フルスクリーンだと使えないかもしれませんが、
この関数でどうでしょうか?
fileNameに選択したファイル名を格納するバッファへのポインタを格納します。
fileNameLengthにファイル名を格納するバッファのサイズを格納します。
fileFilterには、ファイル名のフィルターを以下の形式での文字列で指定します。
※実際には改行せず、1行で指定してください
こんな感じでどうでしょうか?
追記
関数を少し修正しました。
DXライブラリと組み合わせての動作も確認しました。
この関数でどうでしょうか?
int getFileName(char* fileName,int fileNameLength,
const char* fileFilter) {
OPENFILENAME ofn;
ZeroMemory(&ofn,sizeof(ofn));
ofn.lStructSize=sizeof(ofn);
ofn.hwndOwner=GetMainWindowHandle();
ofn.lpstrFilter=fileFilter;
ofn.nFilterIndex=0;
ofn.lpstrFile=fileName;
ofn.nMaxFile=fileNameLength;
ofn.Flags=OFN_CREATEPROMPT | OFN_HIDEREADONLY | OFN_NOCHANGEDIR;
if(fileName==NULL)return 0;
if(fileFilter==NULL)ofn.lpstrFilter="すべてのファイル(*.*)\0*.*\0\0";
fileName[0]=0;
return GetOpenFileName(&ofn);
}
fileNameLengthにファイル名を格納するバッファのサイズを格納します。
fileFilterには、ファイル名のフィルターを以下の形式での文字列で指定します。
(1個目のフィルターとして表示する文字列)\0(1個目のフィルターで表示する拡張子)\0
(2個目のフィルターとして表示する文字列)\0(2個目のフィルターで表示する拡張子)\0
・・・
(n個目のフィルターとして表示する文字列)\0(n個目のフィルターで表示する拡張子)\0\0
こんな感じでどうでしょうか?
追記
関数を少し修正しました。
DXライブラリと組み合わせての動作も確認しました。
#include <DxLib.h>
//上の関数を貼り付ける
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; //初期化処理
char filename[256];
if(getFileName(filename,sizeof(filename),NULL)) {
DrawString( 100 , 100 , filename , GetColor(255,255,255) ) ;
} else {
DrawString( 100 , 100 , "error" , GetColor(255,0,0) ) ;
}
WaitKey();
DxLib_End();
return 0;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: DXライブラリで.....
なぜかエラーが100件を超えました....
なぜでしょうか....
なんか、上の関数のとこでエラー吐きます....一応
描いたソース↓
なぜでしょうか....
なんか、上の関数のとこでエラー吐きます....一応
描いたソース↓
int getFileName(char* fileName,int fileNameLength,
const char* fileFilter) {
OPENFILENAME ofn;
ZeroMemory(&ofn,sizeof(ofn));
ofn.lStructSize=sizeof(ofn);
ofn.hwndOwner=GetMainWindowHandle();
ofn.lpstrFilter=fileFilter;
ofn.nFilterIndex=0;
ofn.lpstrFile=fileName;
ofn.nMaxFile=fileNameLength;
ofn.Flags=OFN_CREATEPROMPT | OFN_HIDEREADONLY | OFN_NOCHANGEDIR;
if(fileName==NULL)return 0;
if(fileFilter==NULL)ofn.lpstrFilter="すべてのファイル(*.*)\0*.*\0\0";
fileName[0]=0;
return GetOpenFileName(&ofn);
}
#include <DxLib.h>
//上の関数を貼り付ける
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; //初期化処理
char filename[256];
if(getFileName(filename,sizeof(filename),NULL)) {
DrawString( 100 , 100 , filename , GetColor(255,255,255) ) ;
} else {
DrawString( 100 , 100 , "error" , GetColor(255,0,0) ) ;
}
WaitKey();
DxLib_End();
return 0;
}
描き間違えましたw
さっきのものです さんが書きました:なぜかエラーが100件を超えました....
なぜでしょうか....
なんか、上の関数のとこでエラー吐きます....一応
描いたソース↓#include <DxLib.h> int getFileName(char* fileName,int fileNameLength, const char* fileFilter) { OPENFILENAME ofn; ZeroMemory(&ofn,sizeof(ofn)); ofn.lStructSize=sizeof(ofn); ofn.hwndOwner=GetMainWindowHandle(); ofn.lpstrFilter=fileFilter; ofn.nFilterIndex=0; ofn.lpstrFile=fileName; ofn.nMaxFile=fileNameLength; ofn.Flags=OFN_CREATEPROMPT | OFN_HIDEREADONLY | OFN_NOCHANGEDIR; if(fileName==NULL)return 0; if(fileFilter==NULL)ofn.lpstrFilter="すべてのファイル(*.*)\0*.*\0\0"; fileName[0]=0; return GetOpenFileName(&ofn); } //上の関数を貼り付ける int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){ if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; //初期化処理 char filename[256]; if(getFileName(filename,sizeof(filename),NULL)) { DrawString( 100 , 100 , filename , GetColor(255,255,255) ) ; } else { DrawString( 100 , 100 , "error" , GetColor(255,0,0) ) ; } WaitKey(); DxLib_End(); return 0; }
Re: DXライブラリで.....
書く順番が違います。
こうしてください。
こうしてください。
#include <DxLib.h>
int getFileName(char* fileName,int fileNameLength,
const char* fileFilter) {
OPENFILENAME ofn;
ZeroMemory(&ofn,sizeof(ofn));
ofn.lStructSize=sizeof(ofn);
ofn.hwndOwner=GetMainWindowHandle();
ofn.lpstrFilter=fileFilter;
ofn.nFilterIndex=0;
ofn.lpstrFile=fileName;
ofn.nMaxFile=fileNameLength;
ofn.Flags=OFN_CREATEPROMPT | OFN_HIDEREADONLY | OFN_NOCHANGEDIR;
if(fileName==NULL)return 0;
if(fileFilter==NULL)ofn.lpstrFilter="すべてのファイル(*.*)\0*.*\0\0";
fileName[0]=0;
return GetOpenFileName(&ofn);
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; //初期化処理
char filename[256];
if(getFileName(filename,sizeof(filename),NULL)) {
DrawString( 100 , 100 , filename , GetColor(255,255,255) ) ;
} else {
DrawString( 100 , 100 , "error" , GetColor(255,0,0) ) ;
}
WaitKey();
DxLib_End();
return 0;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: DXライブラリで.....
なりました!!
あと、名前を付けて保存するダイアログのソースもいまいちわからないので、そっちのソースもおしえていただけませんか?
あと、名前を付けて保存するダイアログのソースもいまいちわからないので、そっちのソースもおしえていただけませんか?
Re: DXライブラリで.....
名前は統一してください。フォーラムルールです。
引数の説明はさっきと同じです。
int getFileNameForSave(char* fileName,int fileNameLength,
const char* fileFilter) {
OPENFILENAME ofn;
ZeroMemory(&ofn,sizeof(ofn));
ofn.lStructSize=sizeof(ofn);
ofn.hwndOwner=GetMainWindowHandle();
ofn.lpstrFilter=fileFilter;
ofn.nFilterIndex=0;
ofn.lpstrFile=fileName;
ofn.nMaxFile=fileNameLength;
ofn.Flags=OFN_HIDEREADONLY | OFN_NOCHANGEDIR | OFN_OVERWRITEPROMPT;
if(fileName==NULL)return 0;
if(fileFilter==NULL)ofn.lpstrFilter="すべてのファイル(*.*)\0*.*\0\0";
fileName[0]=0;
return GetSaveFileName(&ofn);
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: DXライブラリで.....
本当に感謝ですw
解決しました!!
いろいろ解らなかったけど、ちゃんと理解でききました!ありがとうございました
解決しました!!
いろいろ解らなかったけど、ちゃんと理解でききました!ありがとうございました