ÓÃ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 %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

