ページ 11

DXライブラリのChangeWindowMode関数につきまして

Posted: 2010年6月21日(月) 18:36
by ムンバ
こんにちは。
いつもお世話になります。

今読んでる本のソースに

(略)
int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpC, int nC)
{
    if(strcmp(lpC, "-f") != 0) ChangeWindowMode(TRUE);
    if( DxLib_Init() == -1 ) return -1;
(略)

エラーも無く、デバッグできるのですが
今まで、こちらのサイトや本家で見たソースは
ChangeWindowMode(TRUE); のみで通常にプログラムが起動していたのですが
 if(strcmp(lpC, "-f") != 0)
を付ける意味と言うか、本当は付けた方が良いのかどうか?など
解らないので質問させて頂きました。

もし、lpC と -f の値が同じでない時、この関数を実行する。
逆に、同じ時って、どう言う時が考えられるのでしょう?
一応、ブレークポイント付けて lpC を調べてみたのですが
型は char型で、値は 0x00233310 でした。

ご解説頂ける方がいらっしゃいましたら
ご指導の程、宜しくお願い致します。
また、参考サイトをご存知の方がいらっしゃいましたら
ご紹介の程、宜しくお願い致します。

Re:DXライブラリのChangeWindowMode関数につきまして

Posted: 2010年6月21日(月) 18:42
by シエル
コマンドライン引数に-fを指定して起動すれば、ウィンドウモードで起動する
ってことだと思われます。

int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpC, int nC)
↑こいつのLPSTR lpCのことだと思います。

追記:
すいません。逆ですね。-f以外だとウィンドウモードで起動ですね。 画像

Re:DXライブラリのChangeWindowMode関数につきまして

Posted: 2010年6月21日(月) 20:05
by ムンバ
シエルさん、早速のご解説どうもありがとうございます。

すみません。私の聞き方にまとまりがなく
この質問で何を聞きたいかが解りにくいですね。^^;

if(strcmp(lpC, "-f") != 0)

・ChangeWindowMode(TRUE); の前に
 必要なのか?
 あっても無くてもどっちでもいいのか?
 あった方が安全なのか?
 その他

・strcmp(lpC, "-f") != 0
 上述のソースの通りだと
 lpC と -f が 0 でない場合(strcmpの戻り値が 0 で無い場合)
 ChangeWindowMode関数が実行されますが
 この、strcmp(lpC, "-f")
 の戻り値が 0 (lpC と -F の辞書式の値が 同じだと戻り値が 0 になると思うのですが )
 になる場合、どういう状況が考えられるのか?

もっと、解りづらくなってしまったでしょうか?^^;
意味の解らない文章などありましたら、修正しますので
ご指摘・ご指導の程、宜しくお願い致します。

Re:DXライブラリのChangeWindowMode関数につきまして

Posted: 2010年6月21日(月) 20:26
by y
どう見ても、コマンドライン引数に-fが指定されたときにフルスクリーンで起動する
という処理に見えます(full screenのfだと思います)。

まず、strcmp(lpC, "-f")が何をしているのかを調べてみると良いですよ。
そうすれば必要かどうかわかると思います。

関数については、その名前で調べればいくらでも出てきますよ(^^

Re:DXライブラリのChangeWindowMode関数につきまして

Posted: 2010年6月21日(月) 20:30
by シエル
strcmpの関数が何をしているものなのか分かりますでしょうか?
strcmpの戻り値が0になる場合(つまり-f)を指定して起動した場合は、
フルスクリーンモードで起動するということです。

Re:DXライブラリのChangeWindowMode関数につきまして

Posted: 2010年6月21日(月) 20:32
by シエル
追記:
すいません。被りました。。。


>ChangeWindowMode(TRUE); の前に
>必要なのか?
>あっても無くてもどっちでもいいのか?
>あった方が安全なのか?
>その他
フルスクリーン起動にするかしないのかを、指定するためのものなので
別に無くてもかまわないと思います。
安全であるとかないとかはまったく関係ないと思われます。

Re:DXライブラリのChangeWindowMode関数につきまして

Posted: 2010年6月21日(月) 22:28
by ムンバ
yさん、シェルさん、ご解説・ご指導ありがとうございます。

>>yさん

<<どう見ても、コマンドライン引数に-fが指定されたときにフルスクリーンで起動する
<<という処理に見えます(full screenのfだと思います)。

 ありがとうございます!
 yさんとシェルさんの、ご解説を何度も読み返して、理解できました。(涙 ---←修正行---

if(strcmp(lpC, "-f") != 0) ChangeWindowMode(TRUE);

ChangeWindowMode(TRUE);
 ↑今まで、DXライブラリを使ったソースでは、このソースは独立?して1行あって
 if(strcmp(lpC, "-f") != 0)
 が、ChangeWindowMode関数を制御してるソースを、今読んでる本で初めて見たのです。
 最初の疑問は、この制御文の動きでは無く
 このソースが、今後勉強していく上で
 ChangeWindowMode関数を制御する事が必要かどうか?
 疑問に思った次第です。

 この本にも解説は無いし、ネットで検索しても(先週の木曜日から)
 見つからなかったので、こちらで質問させて頂きました。
 本来なら、本家で聞くべき事なのかもしれませんね。
 本家の更新履歴とか、リファレンス
 DXライブラリのヘッダファイルなども調べてみましたが
 私には解りませんでした。

 簡単に言うと
 if(strcmp(lpC, "-f") != 0)があっても無くてもプログラムは動くので
 「今更、何でこんなソースが出てくるんだ?これって必要あるのかな~?」
 と思って調べてみたら、自力では見当たらない。
 そこで、こちらで質問させて頂きました。
 うまくお伝えできなくて、すみませんでした。(謝

if につきましては
http://www6.airnet.ne.jp/rinoa/programi ... c.html#015

strcmp につきましては
http://www6.airnet.ne.jp/rinoa/programi ... tml#strcmp

ChangeWindowMode につきましては
http://www6.airnet.ne.jp/rinoa/programi ... WindowMode

それぞれ、自分なりにまとめてありますので(ほとんどパクリですが^^;)
もし覗かれて、何かご指摘が御座いましたら
お手数ですが再度、ご指導の程、宜しくお願い申し上げます。


>>シェルさん

 何度もお手数をお掛けして大変申し訳御座いませんでした。
 yさんのご解説も含めまして、理解できました。
 (また余計な事言っちゃうと、馬鹿だな!こいつ!って思われそうですが)

<<すいません。逆ですね。-f以外だとウィンドウモードで起動ですね

 いえいえ、こちらこそ。(謝
 このご解説で、最終的に理解できました。
 それと
<<strcmpの戻り値が0になる場合(つまり-f)を指定して起動した場合は、
<<フルスクリーンモードで起動するということです。
 の、ご解説。
 どうもありがとうございます!

<<strcmpの関数が何をしているものなのか分かりますでしょうか?

strcmp につきましては
http://www6.airnet.ne.jp/rinoa/programi ... tml#strcmp

 の様に理解してますが、ご指摘箇所など御座いましたら
 お手数ですが再度、ご指摘頂けます様、宜しくお願い致します。

<<安全であるとかないとかはまったく関係ないと思われます。

 最終的には、お聞きしたかった事はここなのですが
 どうにもうまくお伝えできなくて、すみませんでした。(自爆
 今後も、気をつけます。(_ _)
<hr>
シェルさん、yさん
 
私が理解できるまで、ご解説頂きましてどうもありがとう御座いました。
また何か御座いましたら宜しくお願い致します。 画像