皆に教えたい便利関数郡



DxLibFanに戻る




注意:
一部は日本語訳されているので名前と戻り値の型のみ掲載しときます。
MSDNに詳しい使い方が載っているのでそちらを見てください。

BOOL MessageBeep

MessageBeepは簡単にビープ音を鳴らすことが出来ます。
私もビープ音って何よ!?って思っていたのですが^^;
ぶっちゃけ、MessageBoxでダイアログを表示するときと同じ音が流れるみたいです。
音によってデバックするのって何年前の事なんだろう。某C言語古典に書いてあったんだけど…私じゃ考えられない。(VC++ってほんと使いやすいよ。BCBも捨てがたいけど…)



int MessageBox

メッセージボックスを表示出来ます。
第四引数にMessageBox専用フラグを指定してMessageBox専用戻り値でいろいろ処理をするようです。



PlaySound

音を鳴らす事が出来ます。
#pragma comment(lib,"winmm")をソース中に記述しないと使えない事があります。

PlaySoundが例外を発する!
某、ジョークソフト制作支援DLLを製作するのにPlaySoundを使うとなぜか例外処理 Access Violation 0x0000005が。
うーん、何故だろう思い、PlaySoundの非同期再生についてよくよく調べた。
そうしたら以下のような資料が

SND_MEMORY
PlaySound() の引数 sound が文字列の形式をとった WAV ファイルのメモリ上のイメージであることを示します。
Note: このモジュールはメモリ上のイメージを非同期に再生する機能をサポートしていません。
従って、このフラグと SND_ASYNC を組み合わせると 例外 RuntimeError が発行されます。

ちなみに私はSND_RESOURCEを入れていたのだが多分、これと同じ働きをするのだと思う。
DWORD saisei=SND_ASYNC | SND_NOSTOP| SND_RESOURCE ;// 再生フラグ
DWORD saisei2=SND_SYNC | SND_NOSTOP| SND_RESOURCE ;// 再生フラグ2
私は以上のようなフラグを用意していた。
saiseiの方だとエラーが起きて、saisei2の方だとエラーが起きないのは不自然だなぁ、と思っていた。
しかし、これで解決!
PlaySoundの奇癖!
* 非同期再生で
* 第一引数にサウンドのメモリアドレスを指定していて
* そのサウンドを再生中にまた呼び出されると
見事!例外処理!!Access Violation 0x00000005です。えーっと0の数多すぎかな?
失礼アクセスってどういう意味?(御前の訳仕方が間違っている)



CreateDirectory ディレクトリを作成します。
結構使えると思うのですが、なにせ変な構造体を引数にぶち込みますからね・・・ 結構使用をためらっていた人いませんか?
ということで、サンプルです。葉迩倭氏のLunaSystem.cppをちょっと引っこ抜いて改造してみました。
(このソースは転載、改造OKということで掲載しました。)




RemoveDirectory
ディレクトリを削除します。





こんな情報を取得したいのよ!


WinMainの第一引数が欲しい!

(HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE); でWinMainの第一引数をもらうことが出来ます。
ちなみにGetWindowLongの第一引数はウインドウのハンドルです。





コマンドラインの文字列がほし〜

LPTSTR GetCommandLine(VOID) でWinMainの第三引数をもらうことが出来ます。
しかし、WinMainの第三引数では自分のパスを得ることができませんが、 こちらのGetCommandLineだと自分の実行パスを得ることができます。
例:
GetCommandLine()で得るもの
C:\mysoft.exe  その他ユーザーが指定したいろいろなコマンド...

WinMainの第三引数から得るもの
その他ユーザーが指定したいろいろなコマンド...
こんな感じです。




DxLibFanに戻る DxLibのダウンロードは以下から
Dxライブラリ置き場
DxLib Copyright(C) 山田 巧

The program using DxLib.
The text of this page.
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送