DXライブラリで.....
Posted: 2012年5月05日(土) 07:43
c言語についてですが、ファイルを開く時にファイルを開くダイアログをだしたいんです。
でも、やり方が見つからないんです。もしかしたら出来ないかもしれませんがどうか回答お願いします!m(_ _)m
でも、やり方が見つからないんです。もしかしたら出来ないかもしれませんがどうか回答お願いします!m(_ _)m
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);
}
(1個目のフィルターとして表示する文字列)\0(1個目のフィルターで表示する拡張子)\0
(2個目のフィルターとして表示する文字列)\0(2個目のフィルターで表示する拡張子)\0
・・・
(n個目のフィルターとして表示する文字列)\0(n個目のフィルターで表示する拡張子)\0\0
#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;
}
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;
}
さっきのものです さんが書きました:なぜかエラーが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; }
#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;
}
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);
}