DirectX extensions for Visual Studio

DirectX9.0b SDKをインストールすると、Visual Studio 2003 で、DirectX用のサンプルプログラムを生成するアプリケーションウィザードが使えるようになります。
しかし、このDirectX 9 Visual C++ Wizardなんですが、DirectPlayの部分にバグがいます。


ウィザードでDirectPlayを使うようにチェックを入れると、ネットワーク接続に関する設定を行うためのGUIがいろいろ生成されます。
このコードはいいんですが、生成されるリソースに誤りがあります。
というか、リソース、たらへん。
DirectPlayでTCP/IPで接続のコードをいろいろ試してたんです。
C#の方でちゃんと動いてるのに、C++で動けへんからなんでやろうなぁ。って考えてたら、設定する項目がじぇんじぇん足らんことに気がついたんです。
んでソースコードを追うと、、、いろいろDialogから値をとってこようとしてるのですが、そのリソースがあらへん。じぇーんぶ、エラーになってる。
まず、

IID_MULTIPLAYER_CREATE

というダイアログです。
生成されたコードには、

LTEXT “Game Name:”,IDC_STATIC
EDITTEXT IDC_EDIT_SESSION_NAME
DEFPUSHBUTTON “OK”,IDOK
PUSHBUTTON “Cancel”,IDCANCEL

しかありません。(必要な情報以外は消してあります。)
実際には、

EDITTEXT IDC_LOCAL_PORT,ES_NUMBER
LTEXT “Port#:”,IDC_LOCAL_PORT_TEXT
CONTROL “Allow Migrate Host”,IDC_MIGRATE_HOST,”Button”,BS_AUTOCHECKBOX
CONTROL “Use DPNSVR”,IDC_USE_DPNSVR,”Button”,BS_AUTOCHECKBOX

が足りません。部屋を作るときにTCP/IPなのに、ポート番号聞いてこうへんなぁ。って思ったら、リソースにあらへんもん。でもコードは値を取ろうとしてる。。。
次に

IDD_MULTIPLAYER_ADDRESS DIALOG

このダイアログリソースがすっぽりありません。
コードから想像するに、

IDD_MULTIPLAYER_ADDRESS DIALOG 0, 0, 186, 90
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION |
WS_SYSMENU
CAPTION “MultiPlayer Address”
FONT 8, “MS Shell Dlg”
BEGIN
LTEXT “Host Name”,IDC_STATIC,7,7,27,8
EDITTEXT IDC_REMOTE_HOSTNAME,7,17,104,13,ES_AUTOHSCROLL
LTEXT “Port#”,IDC_STATIC,7,35,36,8
EDITTEXT IDC_REMOTE_PORT,7,44,104,13,ES_AUTOHSCROLL
DEFPUSHBUTTON “OK”,IDOK,25,69,50,14
PUSHBUTTON “Cancel”,IDCANCEL,96,69,50,14
END

てなもんがすっぽり抜けております。
部屋に接続するために、部屋を探しに行くのですが、そのダイアログを表示しようとしてエラーになっています。
リソースエディタでちょいちょいと追加すると、

resource.h

に定義されているリソースIDが
ご丁寧に、

netconnectres.h

に定義されているリソースIDと、矛盾が生じますので、ちゃんと一致させましょう。
というか、netconnectres.hにはまだいろいろ定義があるんですけど、まだ足らないリソースがあるっちゅうことですか?
少なくとも上記の項目を追加しないと、TCP/IPでの接続ができません。
上記で完璧かどうか知りません。
C#と見比べてもなんかたらんなぁってかんじでちょいちょいっと追加しただけですから。。。これは僕の自分自身に対するメモですから、参考にする場合は、自己責任でお願いします。
参考までに。。。
他の人ってこの症状出ないのかなぁ。インストールに失敗したのかなぁ?
誰も使ってないのかなぁ。
あくまでもサンプルだから自分で書き直せってことなのかなぁ。。。当然、書き直すことになるけど。。。。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください