トップページ > 過去ログ > 記事閲覧
ウインドウ非表示時の通信について
名前:ふら 日時: 2010/08/26 20:19

いつもDXライブラリを使用させて頂いています。 今回、いつの間にか追加されていたUDP通信を早速使用してみたのですが、エラーが発生しました。 以下にソースコードを提示します。 #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int NetUDPHandle ; // ネットワークハンドル ChangeWindowMode( true ); SetNotWinFlag( true ); if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } // UDP通信用のソケットハンドルを作成 NetUDPHandle = MakeUDPSocket( 9850 ) ; // 文字列の受信を待つ while( CheckNetWorkRecvUDP( NetUDPHandle ) == FALSE ) { // ウインドウズメッセージ処理 if( ProcessMessage() < 0 ) break ; } // UDPソケットハンドルの削除 DeleteUDPSocket( NetUDPHandle ) ; DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 } SetNotWinFlag関数でウインドウを非表示にした場合のみ、エラーが発生しました。 以下にエラーメッセージを提示します。 「UDPTest.exe の 0x010c8390 でハンドルされていない例外が発生しました:  0xC0000005:  場所 0x00000008 に書き込み中にアクセス違反が発生しました」 もしやと思い、TCP通信で試してみましたが、やはり同様にエラーが発生します。 DXライブラリの通信はウインドウを表示していることが前提になっているのでしょうか。 長文、乱文、失礼しました。

Page: 1 |

Re: ウインドウ非表示時の通信について ( No.1 )
名前:管理人 日時:2010/08/31 09:29

ご報告ありがとうございます 時間が足りず通信ができるかどうかは試せていませんが、 少なくともエラーが発生して終了しないように修正したバージョンを アップしましたので、よろしければお試しになってみて下さい m(_ _;m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい) エラーの原因は通信用ウインドウをメインウインドウの子ウインドウとして 作成しようとしていたために、メインウインドウを作成していない場合は 「親ウインドウが居ないよ!」というエラーが発生していました メインウインドウが無い場合は通信用ウインドウを子ウインドウとしないことで エラーが発生しないようにしました
Re: ウインドウ非表示時の通信について ( No.2 )
名前:ふら 日時:2010/08/31 14:58

修正ありがとうございます。 修正版でリビルドしたところ無事に動作しました。 今までUDP通信部は自作していたので 今回のUDP通信実装で手間が省けました。 ありがたく使用させて頂きます。

Page: 1 |