[DxLib]メンバ関数内でのSetOutApplicationLogValidFlagの挙動について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: [DxLib]メンバ関数内でのSetOutApplicationLogValidFlagの挙動について

Re: [DxLib]メンバ関数内でのSetOutApplicationLogValidFlagの挙動について

#4

by purin52002 » 7年前

DxLib_InitだけでなくChangeWindowModeより前に呼ぶ必要があったんですね^^;
リファレンスは呼んだのですがChangeWindowModeが全然見えていませんでしたorz

お騒がせしました。
みけCATさん、Mathさんありがとうございます。
無事解決です^^

Re: [DxLib]メンバ関数内でのSetOutApplicationLogValidFlagの挙動について

#3

by Math » 7年前

レファレンス
画像

Re: [DxLib]メンバ関数内でのSetOutApplicationLogValidFlagの挙動について

#2

by みけCAT » 7年前

DXライブラリ Ver3.17a、GCC 4.8.1で実験をしたところ、
ChangeWindowModeの前にSetOutApplicationLogValidFlagを呼び出した場合

コード:

#include <DxLib.h>

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
	SetOutApplicationLogValidFlag(FALSE);
	ChangeWindowMode(TRUE);
	DxLib_Init();
	DxLib_End();
	return 0;
}
はLog.txtが生成されませんでしたが、
ChangeWindowModeの後にSetOutApplicationLogValidFlagを呼び出した場合

コード:

#include <DxLib.h>

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
	ChangeWindowMode(TRUE);
	SetOutApplicationLogValidFlag(FALSE);
	DxLib_Init();
	DxLib_End();
	return 0;
}
はLog.txtが生成されました。
メンバ関数の中でもこの仕様は変わらないと予想できます。

[DxLib]メンバ関数内でのSetOutApplicationLogValidFlagの挙動について

#1

by purin52002 » 7年前

こんにちは
今日はDxLib内の関数、SetOutApplicationLogValidFlagについて質問があります。

現在、DxLibを使いオセロを作っています。
ある程度ゲームとして完成したので、exeファイルを配布しようと思ったのですが
exeファイルを実行すると謎のLog.txtが、、、

調べてみるとLog.txtというのは
  • DxLibの出力ログ
  • SetOutApplicationLogValidFlagで出力する、しないを変更できる
ということがわかりました。

私はDxLibの初期化、終了をするクラスを作成していたので、
初期化処理のDxLib_Initの前にSetOutApplicationLogValidFlagを追加したのですがLog.txtは相変わらず出力されます。。。

main文でSetOutApplicationLogValidFlagを呼ぶとLogの出力はされなくなるのですが、出来ればクラスの中にまとめちゃいたいです。

ということで質問です。
  • クラス内でのSetOutApplicationLogValidFlagは有効なのか
  • 有効である場合、私のコードでは何がいけないのか
よろしくお願いします。

以下コード

コード:

//DxClass.cpp 
//.hは省略、、、
DxClass::DxClass(const std::string &title)
{
	this->Init(title);
}

DxClass::~DxClass()
{
	DxLib_End();
}

bool DxClass::Init(const std::string &title)
{
	enum
	{
		CW,
		WI,
		ALV,
		WT,
		DI,
		SD,
		NUM,
	};
	bitset<NUM> flag;

	flag[CW] = ChangeWindowMode(TRUE) == 0;
	flag[ALV] = SetOutApplicationLogValidFlag(FALSE) == 0;
	flag[WI] = SetWindowIconID(IDI_MAINICON) == 0;
	flag[WT] = SetWindowText(title.c_str()) == 0;
	flag[DI] = DxLib_Init() == 0;
	flag[SD] = SetDrawScreen(DX_SCREEN_BACK) == 0;
	auto a = (bool)flag[ALV];//a=trueになるので失敗はしてない?
	return flag.all();
}

//Main.cpp
#include"DXClass.h"

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) 
{
	//SetOutApplicationLogValidFlag(FALSE); ここで関数を呼び出すとLogは出ない
	DxClass obj;
オフトピック
横着してコンストラクタでInitを呼び出してるんですけど、こういうのは明示的に呼びだしたほうがいいんですかね?^^;

ページトップ