¡¾·±ÌåÖÐÎÄ¡¿
¡¾ÉèΪÊ×Ò³¡¿
¡¾¼ÓÈëÊղء¿
µ±Ç°Î»Ö㺳ÌÐò¿ª·¢Ê×Ò³ >> Delphi >> ÓÃDelphi¿ª·¢DirectX¿Ø¼þ

ÓÃDelphi¿ª·¢DirectX¿Ø¼þ

2005-01-09 20:42:19  ×÷Õߣºxiaodong  À´Ô´£º»¥ÁªÍø  ä¯ÀÀ´ÎÊý£º19  ÎÄ×Ö´óС£º¡¾´ó¡¿¡¾ÖС¿¡¾Ð¡¡¿
¼ò½é£ºÓÃDelphi¿ª·¢DirectX¿Ø¼þ ÕûÀí±à¼­£ºChina ASP ¡¡¡¡MicrosoftÍÆ³öµÄDirectXʹÎÒÃÇÔÚWindows9xÏ¿ª·¢ÓÎÏ·Èí¼þ±ãÀûÁËÐí¶à¡£Ò»°ãÔÚ½éÉÜDirectX µÄ×ÊÁÏÀï¶¼½²µÄÊÇÈçºÎÓÃVC++À´¿ª·¢£¬Æäʵinprise¹«Ë¾µÄÓïÑÔÒ²¿ÉÒÔÓÃÀ´...
¹Ø¼ü×Ö£º¿Ø¼þ DirectX Delphi ¿ª·¢

ÓÃDelphi¿ª·¢DirectX¿Ø¼þ

ÕûÀí±à¼­£ºChina ASP

¡¡¡¡MicrosoftÍÆ³öµÄDirectXʹÎÒÃÇÔÚWindows9xÏ¿ª·¢ÓÎÏ·Èí¼þ±ãÀûÁËÐí¶à¡£Ò»°ãÔÚ½éÉÜDirectX µÄ×ÊÁÏÀï¶¼½²µÄÊÇÈçºÎÓÃVC++À´¿ª·¢£¬Æäʵinprise¹«Ë¾µÄÓïÑÔÒ²¿ÉÒÔÓÃÀ´¿ª·¢»ùÓÚDirectXµÄÓÎÏ·Èí¼þ¡£ÎÒÃÇÕâÀïÓõÄÊÇDirectX¿Ø¼þ£¬ËüÓÐDelphi3ºÍDelphi4²»Í¬µÄ°æ±¾¡£ÔÚ

http://www.ingjapan.ne.jp/hori/ ´¦Äã¿ÉÒÔdownload£¬ÊÇÓÉÒ»¸öÈÕ±¾ÈËдµÄ£¬¶øÇÒ£¬ÕâÌ׿ؼþÊÇÍêÈ«Ãâ·ÑµÄ£¬Äã¿ÉÒÔ×ÔÓÉʹÓá£ÔÚÕâÌ׿ؼþÀïÓÐDirectXµÄ¸÷ÖÖ·¶Àý³ÌÐò£¬ÎÒÃǽñÌìÀ´ÌÖÂÛÒ»ÏÂÆäÖлùÓÚDirectXµÄÍøÂçͨÐųÌÐòÈçºÎ¿ª·¢¡£

¡¡¡¡Ïë±Ø´ó¼Ò¶¼¿´µ½¹ýÄÇЩÏõÑ̷׷ɵļ´Ê±Õ½ÂÔÓÎÏ·£¬ÕâЩÓÎÏ·ÖÐÒ»¸öºÜÓÕÈ˵ÄÂòµã¾ÍÊÇ¿ÉÒÔ¼¸¸öÈËͬʱ¼ÓÈëÕ½¶·£¬¸÷×Ô°çÑÝÒ»·½¸ßÊÖ£¬É±Ëü¸öÄãËÀÎһÄÇôÕâЩ¼´Ê±Õ½ÂÔÓÎÏ·ÖеÄÍøÂç¶ÔÕ½²¿·ÖÊÇÔõôдµÄÄØ?ÆäʵÔÚMicrosoftµÄDirectXÖÐרÃÅÓÐÒ»ÀàAPI¾ÍÊǸºÔðÍøÂçͨÐŵ쬲»¹ÜÊÇ»ùÓÚIPX£¬»¹ÊÇTCP/IP£¬»òÕßÊÇModem£¬Ëü¶¼¿ÉÒÔÔ²Âú½â¾ö¡£¶ø×÷Ϊ³ÌÐòÉè¼ÆµÄÎÒÃÇÒ»°ãÀ´Ëµ²»ÓòÙÐÄÕâЩÁ¬½Ó·½Ê½²»Í¬¶ø´øÀ´µÄ´úÂëµÄ²»Í¬£¬ÎÒÃÇ¿ÉÒÔÒ»ÊÓͬÈÊ£¬Ö»ÒªÐ´Ò»Ì×ͳһµÄ´úÂë¾Í¿ÉÒÔÁË£¬¸÷ÖÖÁ¬½Ó·½Ê½µÄϸ½ÚÎÊÌâÎÒÃǾͽ»¸øDirectXÈ¥´¦ÀíÁË¡£

¡¡¡¡ÏÂÃæÎÒÃǾßÌå·ÖÎöÒ»ÏÂÒ»¸öchatÁÄÌì³ÌÐòµÄ¹¹Ôì¡£ÔËÐÐsamples\network\chat.dpr£¬ÎÒÃǾͿ´µ½ÁËÒ»¸ö×î¼òµ¥µÄÁÄÌì³ÌÐòÁË¡£Ê×ÏȳÌÐò»áÈÃÄãÑ¡ÔñÁ¬½ÓµÄ·½Ê½£ºIPXÁ¬½Ó¡¢Internet TCP/IPÁ¬½Ó¡¢µ÷ÖÆ½âµ÷Æ÷Á¬½ÓºÍ´®ÐÐÁ¬½Ó£»Ñ¡ÔñºÃÁ¬½Ó·½Ê½ºó£¨ÏÂÃæ¼ÙÉèÄãÊÇÑ¡ÔñÓÃTCP/IP·½Ê½Á¬½Ó£©£¬Äã¿ÉÒÔÑ¡ÔñÊÇ´´½¨Ò»¸öÐÂÓÎÏ·»¹ÊǽøÈëÒ»¸öÒѾ­´æÔÚµÄÓÎÏ·£¨µ±È»ÏÖÔÚÕâÀïµÄÓÎÏ·¾ÍÊÇÖ¸Ò»¸öÁÄÌì³ÌÐò£¡£©£»Èç¹ûÄãÊÇÑ¡Ôñ½¨Á¢Ò»¸öÐÂÓÎÏ·£¬ÄÇô½ÓÏÂÀ´ÒªÄãÊäÈëÓÎÏ·µÄÃû×ÖºÍÄãµÄÃû×Ö£¬È»ºóÁÄÌì¾Í¿ªÊ¼ÁË£»Èç¹ûÄãÊÇÑ¡Ôñ¼ÓÈëÒ»¸öÒѾ­´æÔÚµÄÓÎÏ·µÄ»°£¬ÄÇôÄã¿ÉÒÔͨ¹ýÊäÈëÖ¸¶¨µÄIPµØÖ·À´Á¬½Ó»òÕßË÷ÐÔÈóÌÐòÈ¥ËÑË÷ÓÐÄÄЩÒѾ­´æÔÚµÄÓÎÏ·Ãû×Ö¡£Èç¹ûÄãÔÚÁ¬½Ó·½Ê½ÖÐÑ¡ÔñµÄÊǵ÷ÖÆ½âµ÷Æ÷Á¬½ÓµÄ»°£¬¾ÍÉÔ΢¸´ÔÓһЩ£¬ÐèҪѡÔñµ÷ÖÆ½âµ÷Æ÷£¬²¢×¼±¸²¦ºÅºÍÓ¦´ðµÈ¡£ÓÐûÓз¢ÏÖÕâЩÁ¬½ÓµÄ·½Ê½ºÍ¹ý³ÌºÍÎÒÃÇͨ³£ÔÚÓÎÏ·Öп´µ½µÄºÜÏàËÆ?ÓÉÓÚÕâЩ¹ØÓÚÁ¬½ÓµÄ¶Ô»°¿ò¶¼ÊÇÓÉDirectXÌṩµÄ£¬Òò¶ø»áÓÐÒ»µãÓïÑÔÉϵÄÎÊÌâ¡£Èç¹ûÄã°²×°µÄÊÇDirectXµÄÖÐÎİ汾µÄ»°£¬ÄÇôÄã¿´¼ûµÄ½«È«²¿ÊÇÖÐÎÄ¡££¨Ë³±ã˵һ¾ä£¬ÕâÌ×Delphi ¿Ø¼þËùÖ§³ÖµÄDirectX±ØÐëÔÚ5.0°æ±¾ÒÔÉÏ¡££©

¡¡¡¡Õâ¸ö³ÌÐò±¾Éí²¢²»¸´ÔÓ£¬ÏÂÃæÊÇÆäÖ÷ÒªµÄ¼¸¸ö¹ý³Ì£¬ÎÒÃÇÒѾ­¼ÓÉÏÁ˽ÏΪÏêϸµÄ×¢ÊÍ£º

¡¡¡¡//Ôö¼ÓÓÎÏ·Õß

¡¡¡¡procedure TMainForm.DXPlay1AddPlayer(Sender: TObject; Player: TDXPlayPlayer);

¡¡¡¡begin

¡¡¡¡ Memo1.Lines.Add(Format(' %s entered a room.', [Player.Name]));

¡¡¡¡end;

¡¡¡¡//ÓÎÏ·ÕßÀ뿪

¡¡¡¡procedure TMainForm.DXPlay1DeletePlayer(Sender: TObject;Player: TDXPlayPlayer);

¡¡¡¡begin

¡¡¡¡ Memo1.Lines.Add(Format(' %s left a room.', [Player.Name]));

¡¡¡¡end;

¡¡¡¡

¡¡¡¡//DirectPlay´ò¿ª

¡¡¡¡procedure TMainForm.DXPlay1Open(Sender: TObject);

¡¡¡¡var

¡¡¡¡ i: Integer;

¡¡¡¡begin

¡¡¡¡ for i:=0 to DXPlay1.Players.Count£­1 do

if DXPlay1.Players[i].RemotePlayer then

Memo1.Lines.Add(Format(' %s is entering a room.', [DXPlay1.Players[i].Name]));

end;

¡¡procedure TMainForm.FormDestroy(Sender: TObject);

¡¡¡¡begin

¡¡¡¡ DXPlay1.Close;

¡¡¡¡end;

¡¡¡¡//´°¿Ú´´½¨Ö´ÐÐʼþ

¡¡¡¡procedure TMainForm.FormCreate(Sender: TObject);

¡¡¡¡begin

¡¡¡¡ try

¡¡¡¡ //DirectPlay ´ò¿ª

DXPlay1.Open;

¡¡¡¡ except

¡¡¡¡ //·À´í´¦Àí

on E: Exception do

begin

Application.ShowMainForm := False;

Application.HandleException(E);

Application.Terminate;

end;

¡¡¡¡ end;

¡¡¡¡ //ÏÔʾÓйØÐÅÏ¢ÔÚ´°¿ÚµÄcaption

¡¡¡¡ MainForm.Caption := Format('%s : %s', [DXPlay1.ProviderName, DXPlay1.SessionName]);

¡¡¡¡end;

¡¡¡¡//µ±ÓÐÏûÏ¢·¢ËÍʱ

¡¡¡¡procedure TMainForm.DXPlay1Message(Sender: TObject; Player: TDXPlayPlayer; Data: Pointer;DataSize: Integer);

¡¡¡¡var

¡¡¡¡ s: string;

¡¡¡¡begin

¡¡¡¡ case DXPlayMessageType(Data) of

DXCHAT_MESSAGE:

begin

if TDXChatMessage(Data^).Len<=0 then

s := ''

else begin

//¼ÆËã×Ö·û´®³¤¶ÈºÍÄÚÈÝ

SetLength(s, TDXChatMessage(Data^).Len);

StrLCopy(PChar(s), @TDXChatMessage(Data^).c, Length(s));

end;

//ÏÔʾÊÕµ½µÄÏûÏ¢

Memo1.Lines.Add(Format('%s> %s', [Player.Name, s]));

end;

¡¡ end;

¡¡ end;

¡¡¡¡//·¢ËͰ´Å¥

¡¡¡¡procedure TMainForm.Button1Click(Sender: TObject);

¡¡¡¡var

¡¡¡¡ Msg: ^TDXChatMessage;

¡¡¡¡ MsgSize: Integer;

¡¡¡¡begin

¡¡¡¡ MsgSize := SizeOf(TDXChatMessage)+Length(Edit1.Text);

¡¡¡¡ GetMem(Msg, MsgSize);

¡¡¡¡ try

Msg.dwType := DXCHAT_MESSAGE;

Msg.Len := Length(Edit1.Text);

StrLCopy(@Msg^.c, PChar(Edit1.Text), Length(Edit1.Text));

//·¢ËÍÏûÏ¢µ½ËùÓеÄÈË

DXPlay1.SendMessage(DPID_ALLPLAYERS, Msg, MsgSize);

//·¢ËÍÏûÏ¢µ½×Ô¼º

DXPlay1.SendMessage(DXPlay1.LocalPlayer.ID, Msg, MsgSize);

Edit1.Text := '';

¡¡¡¡ finally

¡¡¡¡ FreeMem(Msg);

¡¡¡¡ end;

¡¡ end;

¡¡¡¡TDXPlay¿Ø¼þÊÇдÕâÀà³ÌÐòµÄ¹Ø¼ü£¬ÆäÊôÐÔ¡¢Ê¼þºÍ·½·¨²¢²»¶à¡£GUIDÊôÐÔÓÃÀ´³ÌÐòµÄ×ÔÎÒʶ±ð£¬¾ßÓÐÏàͬGUIDµÄ³ÌÐò»¥ÏàÖ®¼ä¾ÍÄÜʶ±ð£¬ËùÒÔÄã¿ÉÒÔ¿´µ½GUIDÊÇÒ»¸öºÜ³¤µÄÊý×Ö£»Open·½·¨ÓÃÀ´´ò¿ªÍ¨Ñ¶¶Ë¿Ú£¬CloseÓÃÀ´¹Ø±ÕͨѶ¶Ë¿Ú£»SendMessage·½·¨ÊÇÓÃÀ´·¢ËÍÏûÏ¢µ½ËùÓеÄÓÎÏ·Õߣ¬µ±ÄãµÄ³ÌÐòÊÕµ½ÏûÏ¢µÄʱºò£¬»á²úÉúOnMessage ʼþ¡£

¡¡¡¡Õâ¸ö³ÌÐòµÄ´úÂëÓ¦¸ÃÊÇÏ൱¼òÁ·ÁË£¬µ«ÊÇÈ´Íê³ÉÁ˵ã¶ÔµãµÄ¶àµãÁÄÌ칦ÄÜ¡£Èç¹ûÄãÔÚ×Ô¼ºµÄ³ÌÐòÀïÔ¼¶¨ºÃÒ»Ì×¹æÔò£¬ÄÇôÄãµÄ³ÌÐòÒ²¾Í¾ß±¸ÁË»¥ÏàµÄͨÐÅÄÜÁ¦£¬ÊDz»ÊǸоõºÜ¼òµ¥?¿ÉÒÔ˵£¬ÀûÓÃDirectXÀ´Ð´Õâ·½ÃæµÄͨÐųÌÐòÊÇ×î¼ÑµÄÑ¡Ôñ£¬Äã¿ÉÒÔ¶ÔÍøÂçµÄ֪ʶÍêÈ«²»¶®£¬ÒòΪÕâÒ»ÇÐÒѾ­ÓÉMicrosoft»¨·ÑÁË´óÁ¿ÈËÁ¦ÎïÁ¦½øÐÐÓÅ»¯µÄ´úÂëÀ´Íê³ÉÁË¡£Èç¹û˵ÓÐʲôȱµã£¬¾ÍÊÇÒªÇóÓû§µÄµçÄÔÉÏÒ»¶¨Òª°²×°ÉÏDirectX£¬ÕâÔÚÏÖÔÚwin98Ô½À´Ô½ÆÕ¼°µÄÇé¿öÏ£¬²¢²»ÊÇÒ»¼þÄÑÊ¡£ÔÙ˵£¬MicrosoftµÄDirectXÒ²ÊÇÒ»Ì×ÍêÈ«Ãâ·ÑµÄÈí¼þ¡£ÀûÓÃDirectXÓÅÐãµÄÐÔÄܼÓÉϹ¦ÄÜÇ¿´óµÄ DelphiÓïÑÔ£¬ÏàÐÅÄãÒ»¶¨ÄÜд³öÒ»Ì×ÓÅÐãµÄÓÎÏ·Èí¼þ£¨µ±È»ÓµÓÐÉè¼ÆÁ¼ºÃµÄ¶ÔÕ½¹¦ÄÜ£©¡£

Copyright © ÉϺ£¾ÛÉù¼ÆËã»úϵͳ¹¤³ÌÓÐÏÞÔðÈι«Ë¾ 1999-2000, All Rights Reserved

ÔðÈα༭£ºadmin
±¾ÎÄÒýÓõØÖ·£º http://www.3pcode.com/code/2005/01/11966.htm
Ïà¹ØÎÄÕÂ