コード:
// ヘッダファイルhoge.h
#include <string.h>
#include <stdlib.h>
#include <locale.h>
#include "DxLib.h"
typedef struct RndTxtConfTag {
wchar_t FontName[30];
wchar_t FontFilePath[30];
} RndTxtConf;
void SetRndTxtFont(RndTxtConf* rndtxtconf);
int LoadRndTxtConf(const wchar_t* filename, RndTxtConf* rndtxtconf);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
RndTxtConf rndtxtconf;
setlocale(LC_ALL, "Japanese");
SetGraphMode(1024, 576, 32);
ChangeWindowMode(TRUE);
if(DxLib_Init() == -1 || SetDrawScreen(DX_SCREEN_FRONT) != 0) return -1;
if(LoadRndTxtConf(L"conf/rendertext.conf", &rndtxtconf) != 0) return -1;
DrawFormatString(100, 100, GetColor(255, 255, 255), L"%s", rndtxtconf.FontName);
DrawFormatString(100, 120, GetColor(255, 255, 255), L"%s", rndtxtconf.FontFilePath);
SetRndTxtFont(&rndtxtconf);
DrawFormatString(100, 140, GetColor(255, 0, 0),L"%s", rndtxtconf.FontName);
DrawFormatString(100, 160, GetColor(255, 0, 0),L"%s", rndtxtconf.FontFilePath);
WaitKey();
DxLib_End();
return 0;
}
//外部ファイル関連関数のファイルhogehoge.cpp
//#include "hoge.h"
void SetRndTxtFont(RndTxtConf* rndtxtconf) {
/*
問題のFileRead_sizeの箇所
構造体から直接取得① 一時的に変数に入れてみる(やけくそ)② 直接入力③
①、②ともにファイルのパスは出力されますがサイズは正常に取得できず。
③は取得できます。
また、①、②、③を並べて表示させてみたところ、ファイルパスとして同じ文字列が出力されます。
*/
DrawFormatString(600, 430,GetColor(255,255,255),L"%s",rndtxtconf->FontFilePath);
wchar_t* fontfilepath = (wchar_t *)malloc(50);
wcscpy(fontfilepath, rndtxtconf->FontFilePath);
int filesize1 = FileRead_size(rndtxtconf->FontFilePath); //①
int filesize2 = FileRead_size(fontfilepath); //②
int filesize3 = FileRead_size(L"font/migmix-2p-regular.ttf"); //③
DrawFormatString(600, 430,GetColor(255,255,255),L"%s", rndtxtconf->FontFilePath);
DrawFormatString(600, 450,GetColor(255,255,255),L"%s", fontfilepath);
DrawFormatString(600, 470,GetColor(255,255,255),L"font/migmix-2p-regular.ttf");
DrawFormatString(400, 490,GetColor(255,255,255),L"%d", filesize1);
DrawFormatString(500, 490,GetColor(255,255,255),L"%d", filesize2);
DrawFormatString(600, 490,GetColor(255,255,255),L"%d", filesize3);
}
int LoadRndTxtConf(const wchar_t* filename, RndTxtConf* rndtxtconf) {
int fh;
int lflg = 0;
int line = 0, col = 0;
wchar_t cbuf;
wchar_t wstrbuf[3][30];
if((fh = FileRead_open(filename)) == 0) return -1;
while(FileRead_eof(fh) == 0) {
cbuf = FileRead_getc(fh);
if(cbuf == L'\n') {
wstrbuf[line][col] = L'\0';
line++;
col = 0;
lflg = 0;
}
if(cbuf == L'\r') {
//skip
} else
if(lflg == 1) {
wstrbuf[line][col] = cbuf;
col++;
}
if(cbuf == L'=') lflg = 1;
}
FileRead_close(fh);
wcscpy(rndtxtconf->FontName, wstrbuf[0]);
wcscpy(rndtxtconf->FontFilePath, wstrbuf[1]);
DrawFormatString(500, 340, GetColor(0, 255, 255), L"%s", rndtxtconf->FontName);
DrawFormatString(500, 360, GetColor(0, 255, 255), L"%s", rndtxtconf->FontFilePath);
return 0;
}