Initial commit.

This commit is contained in:
Justin Marshall
2026-04-27 10:35:40 -07:00
commit 101266ab72
1002 changed files with 387407 additions and 0 deletions
+13
View File
@@ -0,0 +1,13 @@
@echo off
if "%1"=="" goto usage
if "%2"=="" goto usage
goto start
:usage
echo Usage: ARCHIVE filename password
goto done
:start
cmd /c clean
pkzip32 -add -dir -max %1.zip * -excl=*.smk -excl=*.cod -excl=*.dsp -excl=*.dsw -excl=*.mak -excl=*.map
rename %1.zip %1.zip.enc
encrypt %1.zip.enc %2
:done
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+8
View File
@@ -0,0 +1,8 @@
@echo off
if not exist bin\storm.dll goto done
locate /d bin\*.bak
locate /d help\*.fts
locate /d samples\*.aps *.bak *.ilk *.exp *.obj *.pch *.pdb *.res *.tmp a.* dump.*
locate /d source\*.aps *.bak *.ilk *.exp *.obj *.pch *.pdb *.res *.tmp a.* dump.* *.lib *.dll *.snp
if exist *.bak del *.bak
:done
+7
View File
@@ -0,0 +1,7 @@
@echo off
if exist storm.hlp del storm.hlp
hc31 storm.hpj
if exist storm.ph del storm.ph
if exist *.bak del *.bak
if exist storm.hlp copy storm.hlp o:\help\storm.hlp /v
if exist storm.hlp start winhlp32 storm.hlp
+60
View File
@@ -0,0 +1,60 @@
{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}
{\f16\froman\fcharset238\fprq2 Times New Roman CE;}{\f17\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f19\froman\fcharset161\fprq2 Times New Roman Greek;}{\f20\froman\fcharset162\fprq2 Times New Roman Tur;}
{\f21\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f28\fmodern\fcharset238\fprq1 Courier New CE;}{\f29\fmodern\fcharset204\fprq1 Courier New Cyr;}{\f31\fmodern\fcharset161\fprq1 Courier New Greek;}{\f32\fmodern\fcharset162\fprq1 Courier New Tur;}
{\f33\fmodern\fcharset186\fprq1 Courier New Baltic;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;
\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\nowidctlpar\widctlpar\adjustright \fs20 \snext0 Normal;}
{\*\cs10 \additive Default Paragraph Font;}{\s15\nowidctlpar\widctlpar\adjustright \b\fs40 \sbasedon0 \snext16 API Title;}{\s16\nowidctlpar\widctlpar\adjustright \sbasedon0 \snext16 API Description;}{\s17\nowidctlpar\widctlpar\adjustright \f2\fs22
\sbasedon0 \snext17 API Function;}{\s18\nowidctlpar\widctlpar\adjustright \b \sbasedon0 \snext16 API Section;}{\s19\li720\nowidctlpar\widctlpar\adjustright \sbasedon0 \snext16 API Parameter Description;}{\s20\nowidctlpar\widctlpar\adjustright \i
\sbasedon0 \snext19 API Parameter Name;}{\s21\nowidctlpar\widctlpar\adjustright \fs20 \sbasedon0 \snext21 footnote text;}{\*\cs22 \additive \super \sbasedon10 footnote reference;}}{\info{\title SNetCreateGame}{\author Mike O'Brien}{\operator Mike O'Brien}
{\creatim\yr1997\mo3\dy21\hr17\min1}{\revtim\yr1997\mo3\dy21\hr18\min23}{\version5}{\edmins17}{\nofpages2}{\nofwords261}{\nofchars1490}{\*\company Blizzard Entertainment}{\nofcharsws0}{\vern71}}
\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade\viewkind1\viewscale100 \fet0\sectd \linex0\endnhere\sectdefaultcl {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3
\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}
{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain
\s15\keepn\nowidctlpar\widctlpar\adjustright \b\fs40 {\cs22\super ${\footnote \pard\plain \s21\nowidctlpar\widctlpar\adjustright \fs20 {\cs22\super $}{ CategoryProc}}#{\footnote \pard\plain \s21\nowidctlpar\widctlpar\adjustright \fs20 {\cs22\super #}{
CategoryProc}}K{\footnote \pard\plain \s21\nowidctlpar\widctlpar\adjustright \fs20 {\cs22\super K}{ CategoryProc}}}{ CategoryProc
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }{\b\i CategoryProc() is a placeholder for an application-defined function name.}{
\par
\par This function is called by from SNetSelectGame() prior to enumerating games, and optionally in response to a user request, so that the application can prompt the user about which categories of games he would like to display.
\par
\par }\pard\plain \s17\nowidctlpar\widctlpar\adjustright \f2\fs22 {BOOL CALLBACK SelectCategoryProc (
\par \tab BOOL\tab \tab \tab \tab userinitiated,
\par \tab SNETPROGRAMDATAPTR\tab programdata,
\par \tab SNETPLAYERDATAPTR\tab playerdata,
\par \tab SNETUIDATAPTR\tab \tab interfacedata,
\par \tab SNETVERSIONDATAPTR\tab versiondata,
\par \tab DWORD *\tab \tab \tab categorybits,
\par \tab DWORD *\tab \tab \tab categorymask
\par );
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s18\nowidctlpar\widctlpar\adjustright \b {Parameters
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {userinitiated
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {A boolean value spec
ifying why the callback function is being called. If this value is FALSE, the function is being called automatically prior to bringing up the list of games. If this value is TRUE, the function is being called in response to a user request.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {programdata
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {A structure containing the program data that was passed to SNetSelectGame().
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {playerdata
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {A structure containing the player data that was passed to SNetSelectGame().
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {interfacedata
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {A structure containing the interface data that was passed to SNetSelectGame(), modified as necessary to ensure that the dialog that the create callback displays fits with the network provider
\rquote s interface.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {versiondata
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {A structure containing the version data that was passed to SNetSelectGame().
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {Categorybits
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {A value returned by the callback function specifying which categories of games the user is interested in joining.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {categorymask
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {A value returned by the callback function specifying which bits must match between the value of }{\i categorybits}{ and the game\rquote s category bits for a game to be enumerated.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par
\par }\pard\plain \s18\nowidctlpar\widctlpar\adjustright \b {Return Value
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par The application should return TRUE to cause game enumeration to begin, or FALSE to abort the call to SNetSelectGame().
\par
\par }}
+62
View File
@@ -0,0 +1,62 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;
\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4 \sbasedon0\snext16 API Description;}{\s17\widctlpar
\f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4 \sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20
\sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}}{\info{\title SNetCreateGame}{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min18}{\revtim\yr1996\mo11\dy28\hr2\min32}{\version3}
{\edmins34}{\nofpages2}{\nofwords249}{\nofchars1420}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd \linex0\endnhere {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2
\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6
\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs22\super ${\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super $} CheckAuthProc}#{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super #} CheckAuthProc}K{\footnote
\pard\plain \s21\widctlpar \f4\fs20 {\cs22\super K} CheckAuthProc}} CheckAuthProc
\par \pard\plain \s16\widctlpar \f4
\par {\b\i CheckAuthProc() is a placeholder for an application-defined function name.}
\par
\par \pard \s16\widctlpar This function is called by the current network provider to determine whether the active user is authorized to join a game or chat channel.
\par \pard \s16\widctlpar
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL CALLBACK CheckAuthProc (
\par \tab DWORD\tab \tab itemtype,
\par \tab LPCSTR\tab playername,
\par \tab LPCSTR\tab playerdescription,
\par \tab DWORD\tab \tab userflags,
\par \tab LPCSTR\tab itemdescription,
\par \tab LPSTR\tab \tab errorbuffer,
\par \tab DWORD\tab \tab errorsize
\par );
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 itemtype
\par \pard\plain \s19\li720\widctlpar \f4 An identifier which tells whether the name and description describe a game or a player. It can be one of the following values:
\par \pard\plain \s16\widctlpar \f4
\par \trowd \trgaph108\trleft612 \cellx4140\cellx7812 \pard\plain \s19\widctlpar\intbl \f4 {\b Value}\cell \pard \s19\widctlpar\intbl {\b Meaning}\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft612 \cellx4140\cellx7812 \pard\plain
\s19\widctlpar\intbl \f4 SNET_AUTHTYPE_GAME\cell \pard \s19\widctlpar\intbl Item is a game.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft612 \cellx4140\cellx7812 \pard\plain \s19\widctlpar\intbl \f4 SNET_AUTHTYPE_CHANNEL\cell
\pard \s19\widctlpar\intbl Item is a chat channel.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 playername
\par \pard\plain \s19\li720\widctlpar \f4 The name of the player.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 playerdescription
\par \pard\plain \s19\li720\widctlpar \f4 An application defined string containing information about the player.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 userflags
\par \pard\plain \s19\li720\widctlpar \f4 A set of flags for the player. The following flags are currently defined:
\par \pard\plain \s16\widctlpar \f4 \tab
\par \trowd \trgaph108\trleft612 \cellx3960\cellx7812 \pard\plain \s19\widctlpar\intbl \f4 {\b Value}\cell {\b Meaning}\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft612 \cellx3960\cellx7812 \pard\plain \s19\widctlpar\intbl \f4 SNE
T_DDPF_BLIZZARD\cell Player is a Blizzard employee\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s19\widctlpar\intbl \f4 SNET_DDPF_MODERATOR\cell Player is a channel moderator\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain
\s19\widctlpar\intbl \f4 SNET_DDPF_SPEAKER\cell Player is a speaker for a special event\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s19\widctlpar\intbl \f4 SNET_DDPF_SYSOP\cell Player is a sysop of the selected gaming service\cell
\pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft612 \cellx3960\cellx7812 \pard\plain \s19\widctlpar\intbl \f4 SNET_DDPF_SQUELCHED\cell Player has been squelched by the local user\cell \pard\plain \widctlpar\intbl \f4\fs20 \row
\pard\plain \s16\widctlpar \f4
\par
\par \pard\plain \s20\widctlpar \i\f4 itemdescription
\par \pard\plain \s19\li720\widctlpar \f4 If {\i itemtype} is SNET_AUTHTYPE_GAME, this field contains the game description. If {\i itemtype} is SNET_AUTHTYPE_CHANNEL, this field contains the channel name.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 errorbuffer
\par \pard\plain \s19\li720\widctlpar \f4 A pointer to a string buffer which the application fills in with an error message in the case that authorization is not granted.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 errorsize
\par \pard\plain \s19\li720\widctlpar \f4 The size, in characters, of the string buffer.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par \pard \s16\widctlpar This function should return TRUE if the user is authorized to join the game or channel, or FALSE if the function fails or the user is not authorized.
\par \pard \s16\widctlpar
\par }
+52
View File
@@ -0,0 +1,52 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;
\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4 \sbasedon0\snext16 API Description;}{\s17\widctlpar
\f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4 \sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20
\sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}}{\info{\title SNetCreateGame}{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min18}{\revtim\yr1996\mo10\dy21\hr17\min2}{\version4}
{\edmins8}{\nofpages2}{\nofwords261}{\nofchars1490}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd \linex0\endnhere {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2
\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6
\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs22\super ${\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super $} CreateProc}#{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super #} CreateProc}K{\footnote \pard\plain
\s21\widctlpar \f4\fs20 {\cs22\super K} CreateProc}} CreateProc
\par \pard\plain \s16\widctlpar \f4
\par {\b\i CreateProc() is a placeholder for an application-defined function name.}
\par
\par This function is called by
from SNetSelectGame() if the user has decided to create a new game. The create callback is responsible for display a dialog to the user to request game information like the game name and difficulty, and then calling SNetCreateGame().
\par
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL CALLBACK CreateProc (
\par \tab SNETCREATEDATAPTR\tab createdata,
\par \tab SNETPROGRAMDATAPTR\tab programdata,
\par \tab SNETPLAYERDATAPTR\tab playerdata,
\par \tab SNETUIDATAPTR\tab \tab interfacedata,
\par \tab SNETVERSIONDATAPTR\tab versiondata,
\par \tab DWORD\tab *\tab \tab \tab playerid
\par );
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 createdata
\par \pard\plain \s19\li720\widctlpar \f4 A structure provided by the service provider containing data that the application will need to create the game. When the data in this structure conflicts with the application\rquote
s own data, the application should use the data in the structure. For example, the maxplayers field may be set lower than the application\rquote s maximum number of players if the network provider does not support the application\rquote
s maximum number of players.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 programdata
\par \pard\plain \s19\li720\widctlpar \f4 A structure containing the program data that was passed to SNetSelectGame().
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 playerdata
\par \pard\plain \s19\li720\widctlpar \f4 A structure containing the player data that was passed to SNetSelectGame().
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 interfacedata
\par \pard\plain \s19\li720\widctlpar \f4 A structure containing the interface data that was passed to SNetSelectGame(), modified as necessary to ensure that the dialog that the create callback displays fits with the network provider\rquote s interface.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 versiondata
\par \pard\plain \s19\li720\widctlpar \f4 A structure containing the version data that was passed to SNetSelectGame().
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 playerid
\par \pard\plain \s19\li720\widctlpar \f4 A pointer to a DWORD which the function should fill in with the player ID assigned in the call to SNetCreateGame().
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par The application should return TRUE if it called SNetCreateGame() and the call was successful. It should return FALSE if the game was not created for any reason.
\par
\par }
+69
View File
@@ -0,0 +1,69 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;
\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4 \sbasedon0\snext16 API Description;}{\s17\widctlpar
\f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4 \sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20
\sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}}{\info{\title SNetCreateGame}{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min18}{\revtim\yr1996\mo11\dy22\min44}{\version2}
{\edmins1}{\nofpages2}{\nofwords310}{\nofchars1768}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd \linex0\endnhere {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2
\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6
\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs22\super ${\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super $} DrawDescProc}#{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super #} DrawDescProc}K{\footnote
\pard\plain \s21\widctlpar \f4\fs20 {\cs22\super K} DrawDescProc}} DrawDescProc
\par \pard\plain \s16\widctlpar \f4
\par {\b\i DrawDescProc() is a placeholder for an application-defined function name.}
\par
\par This function is called by Storm or the current network provider when it needs to draw a game or player description.
\par
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL CALLBACK DrawDescProc (
\par \tab DWORD\tab \tab \tab \tab providerid,
\par \tab DWORD\tab \tab \tab \tab itemtype,
\par \tab LPCSTR\tab \tab \tab itemname,
\par \tab LPCSTR\tab \tab \tab itemdescription,
\par \tab DWORD\tab \tab \tab \tab itemflags,
\par \tab DWORD\tab \tab \tab \tab itemcreationtime,
\par \tab DWORD\tab \tab \tab \tab drawflags,
\par \tab LPDRAWITEMSTRUCT\tab drawdata
\par );
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 providerid
\par \pard\plain \s19\li720\widctlpar \f4 The ID of the network provider which is making the request.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 itemtype
\par \pard\plain \s19\li720\widctlpar \f4 An identifier which tells whether the name and description describe a game or a player. It can be one of the following values:
\par \pard\plain \s16\widctlpar \f4
\par \trowd \trgaph108\trleft612 \cellx3960\cellx7812 \pard\plain \s19\widctlpar\intbl \f4 {\b Value}\cell {\b Meaning}\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft612 \cellx3960\cellx7812 \pard\plain \s19\widctlpar\intbl \f4
SNET_DRAWTYPE_GAME\cell Item is a game\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft612 \cellx3960\cellx7812 \pard\plain \s19\widctlpar\intbl \f4 SNET_DRAWTYPE_PLAYER\cell Item is a player\cell \pard\plain \widctlpar\intbl
\f4\fs20 \row \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 itemname
\par \pard\plain \s19\li720\widctlpar \f4 The name of the game or player.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 itemdescription
\par \pard\plain \s19\li720\widctlpar \f4 The description of the game or player.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 itemflags
\par \pard\plain \s19\li720\widctlpar \f4 A set of flags for the game or player. The following flags are currently defined for players:
\par \pard\plain \s16\widctlpar \f4 \tab
\par \trowd \trgaph108\trleft612 \cellx3960\cellx7812 \pard\plain \s19\widctlpar\intbl \f4 {\b Value}\cell {\b Meaning}\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft612 \cellx3960\cellx7812 \pard\plain \s19\widctlpar\intbl \f4
SNET_DDPF_BLIZZARD\cell Player is a Blizzard employee\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s19\widctlpar\intbl \f4 SNET_DDPF_MODERATOR\cell Player is a channel moderator\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain
\s19\widctlpar\intbl \f4 SNET_DDPF_SPEAKER\cell Player is a speaker for a special event\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s19\widctlpar\intbl \f4 SNET_DDPF_SYSOP\cell Player is a sysop of the selected gaming service\cell
\pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft612 \cellx3960\cellx7812 \pard\plain \s19\widctlpar\intbl \f4 SNET_DDPF_SQUELCHED\cell Player has been squelched by the local user\cell \pard\plain \widctlpar\intbl \f4\fs20 \row
\pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 itemcreationtime
\par \pard\plain \s19\li720\widctlpar \f4 The creation time of the game, expressed as the number of seconds since midnight, January 1, 1970 UTC.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 drawflags
\par \pard\plain \s19\li720\widctlpar \f4 A set of flags defining how the item should be drawn. The following flags are defined:
\par
\par \trowd \trgaph108\trleft612 \cellx3960\cellx7812 \pard \s19\widctlpar\intbl {\b Value}\cell {\b Meaning}\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft612 \cellx3960\cellx7812 \pard\plain \s19\widctlpar\intbl \f4
SNET_DDF_INCLUDENAME\cell The callback function should draw the game name as well as the description. If this flag is not specified then the game is already visible elsewhere on the screen, and only the description needs to be drawn.\cell \pard\plain
\widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft612 \cellx3960\cellx7812 \pard\plain \s19\widctlpar\intbl \f4 SNET_DDF_MULTILINE\cell The area for the description is large enough to include more than one line of text.\cell \pard\plain
\widctlpar\intbl \f4\fs20 \row \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 drawdata
\par \pard\plain \s19\li720\widctlpar \f4 A structure containing information about the output device. This includes the device context, and the rectangle (in client coordinates) to which the application should bound its output.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par This function should return TRUE if the description was successfully drawn, or FALSE if an error occurred.
\par
\par }
+36
View File
@@ -0,0 +1,36 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;
\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4 \sbasedon0\snext16 API Description;}{\s17\widctlpar
\f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4 \sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20
\sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}}{\info{\title SNetCreateGame}{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min18}{\revtim\yr1996\mo10\dy3\hr15\min4}{\version2}
{\edmins3}{\nofpages1}{\nofwords82}{\nofchars472}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd \linex0\endnhere {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2
\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6
\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs22\super ${\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super $} EnumGamesProc}#{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super #} EnumGamesProc}} {\cs22\super K
{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super K} EnumGamesProc}} EnumGamesProc
\par \pard\plain \s16\widctlpar \f4
\par {\b\i EnumGamesProc() is a placeholder for an application-defined function name.}
\par
\par This function is called by SNetEnumGames() once for each active game that matches the program and version IDs of the application.
\par
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL CALLBACK EnumGamesProc (
\par \tab DWORD\tab \tab gameid,
\par \tab LPCSTR\tab gamename,
\par \tab LPCSTR\tab gamedescription
\par );
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 gameid
\par \pard\plain \s19\li720\widctlpar \f4 Unique identifier of the game. Pass this value to SNetJoinGame().
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 gamename
\par \pard\plain \s19\li720\widctlpar \f4 The name of the game.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 gamedescription
\par \pard\plain \s19\li720\widctlpar \f4 A description of the game.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par This function should return TRUE to continue enumeration, or FALSE to stop.
\par }
+40
View File
@@ -0,0 +1,40 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;
\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4 \sbasedon0\snext16 API Description;}{\s17\widctlpar
\f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4 \sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20
\sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}}{\info{\title SNetCreateGame}{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min18}{\revtim\yr1996\mo10\dy3\hr15\min5}{\version3}
{\edmins1}{\nofpages1}{\nofwords105}{\nofchars602}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd \linex0\endnhere {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2
\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6
\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs22\super ${\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super $} EnumProvidersProc}#{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super #} EnumProvidersProc}K
{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super K} EnumProvidersProc}} EnumProvidersProc
\par \pard\plain \s16\widctlpar \f4
\par {\b\i EnumProvidersProc() is a placeholder for an application-defined function name.}
\par
\par This function is called by SNetEnumProviders() once for each network provider installed on the system.
\par
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL CALLBACK EnumProvidersProc (
\par \tab DWORD\tab \tab \tab providerid,
\par \tab LPCSTR\tab \tab name,
\par \tab LPCSTR\tab \tab requirements,
\par \tab SNETCAPSPTR\tab caps
\par );
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 providerid
\par \pard\plain \s19\li720\widctlpar \f4 The unique ID of the provider. Pass this value to SNetInitializeProvider().
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 name
\par \pard\plain \s19\li720\widctlpar \f4 The name of the provider.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 requirements
\par \pard\plain \s19\li720\widctlpar \f4 A string describing the requirements for using this provider, such as \ldblquote two computers connected by a serial cable and null-modem.\rdblquote
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 caps
\par \pard\plain \s19\li720\widctlpar \f4 The capabilities of this provider.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par This function should return TRUE to continue enumeration, or FALSE to stop.
\par }
+28
View File
@@ -0,0 +1,28 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;
\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4 \sbasedon0\snext16 API Description;}{\s17\widctlpar
\f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4 \sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20
\sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}}{\info{\title SNetCreateGame}{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min18}{\revtim\yr1996\mo10\dy3\hr15\min5}{\version2}
{\edmins0}{\nofpages1}{\nofwords77}{\nofchars439}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd \linex0\endnhere {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2
\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6
\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs22\super ${\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super $} EventProc}#{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super #} EventProc}K{\footnote \pard\plain
\s21\widctlpar \f4\fs20 {\cs22\super K} EventProc}} EventProc
\par \pard\plain \s16\widctlpar \f4
\par {\b\i EventProc() is a placeholder for an application-defined function name.}
\par
\par This function is called to notify the application of a network event. Network events are queued up, and only delivered to the application when it calls SNetReceiveMessage() or SNetReceiveTurns().
\par
\par \pard\plain \s17\widctlpar \f11\fs22 void CALLBACK EventProc (
\par \tab SNETEVENTPTR event
\par );
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 eventdata
\par \pard\plain \s19\li720\widctlpar \f4 A pointer to a structure describing the event, and containing the ID of the player who caused the event to be generated.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par This function does not return a value.
\par }
+59
View File
@@ -0,0 +1,59 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;
\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4 \sbasedon0\snext16 API Description;}{\s17\widctlpar
\f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4 \sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20
\sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}}{\info{\title SNetCreateGame}{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min18}{\revtim\yr1996\mo10\dy3\hr15\min5}{\version2}
{\edmins0}{\nofpages2}{\nofwords290}{\nofchars1656}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd \linex0\endnhere {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2
\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6
\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs22\super ${\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super $} GetArtProc}#{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super #} GetArtProc}K{\footnote \pard\plain
\s21\widctlpar \f4\fs20 {\cs22\super K} GetArtProc}} GetArtProc
\par \pard\plain \s16\widctlpar \f4
\par {\b\i GetArtProc() is a placeholder for an application-defined function name.}
\par
\par This function is called by Storm or the current network provider to get artwork necessary for displaying a user interface screen.
\par
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL CALLBACK GetArtProc (
\par \tab DWORD\tab \tab \tab providerid,
\par \tab DWORD\tab \tab \tab artid,
\par \tab LPPALETTEENTRY\tab palette,
\par \tab LPBYTE\tab \tab buffer,
\par \tab DWORD\tab \tab \tab buffersize,
\par \tab int\tab \tab \tab *width,
\par \tab int\tab \tab \tab *height,
\par \tab int\tab \tab \tab *bitdepth
\par );
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 providerid
\par \pard\plain \s19\li720\widctlpar \f4 The ID of the network provider which is requesting the artwork, or zero if the artwork is being requested for a screen which is not provider specific.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 artid
\par \pard\plain \s19\li720\widctlpar \f4 The ID of the artwork being requested. The standard artwork IDs are shown below. Network providers can define their own IDs, above 0x80000000, for artwork that is specific to the provider.
\par \pard\plain \s16\widctlpar \f4
\par \trowd \trgaph108\trleft612 \cellx4230\cellx7812 \pard\plain \s19\widctlpar\intbl \f4 {\b Value}\cell {\b Meaning}\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft612 \cellx4230\cellx7812 \pard\plain \s19\widctlpar\intbl \f4
SNET_ART_BACKGROUND\cell The background bitmap for the dialog.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft612 \cellx4230\cellx7812 \pard\plain \s19\widctlpar\intbl \f4 SNET_ART_BUTTONTEXTURE\cell
The texture which is tiled over buttons in the dialog.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 palette
\par \pard\plain \s19\li720\widctlpar \f4 A pointer to an array of palette entries, to be filled in by the function. This parameter can be NULL if the provider doesn\rquote t need to load a palette.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 buffer
\par \pard\plain \s19\li720\widctlpar \f4 A pointer to a buffer where the function should copy the bitmap data. This parameter can be NULL if the provider doesn\rquote t need the bitmap data, or if it is only querying the bitmap dimensions.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 buffersize
\par \pard\plain \s19\li720\widctlpar \f4 The size of the buffer pointed to by {\i buffer}.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 width
\par \pard\plain \s19\li720\widctlpar \f4 A pointer to a variable which the function should fill in with the width of the bitmap. This parameter can be NULL if the provider doesn\rquote t need the bitmap width.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 height
\par \pard\plain \s19\li720\widctlpar \f4 A pointer to a variable which the function should fill in with the height of the bitmap. This parameter can be NULL if the provider doesn\rquote t need the bitmap height.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 bitdepth
\par \pard\plain \s19\li720\widctlpar \f4 A pointer to a variable which the function should fill in with the number of bits per pixel in the bitmap. This parameter can be NULL if the provider doesn\rquote t need the bitmap pixel depth.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par This function should return TRUE if the picture was successfully loaded, or FALSE if an error occurred.
\par }
+44
View File
@@ -0,0 +1,44 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;
\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4 \sbasedon0\snext16 API Description;}{\s17\widctlpar
\f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4 \sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20
\sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}}{\info{\title SNetCreateGame}{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min18}{\revtim\yr1996\mo11\dy22\hr18\min12}{\version3}
{\edmins6}{\nofpages1}{\nofwords172}{\nofchars981}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd \linex0\endnhere {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2
\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6
\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs22\super ${\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super $} GetDataProc}#{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super #} GetDataProc}K{\footnote
\pard\plain \s21\widctlpar \f4\fs20 {\cs22\super K} GetDataProc}} GetDataProc
\par \pard\plain \s16\widctlpar \f4
\par {\b\i GetDataProc() is a placeholder for an application-defined function name.}
\par
\par This function can be called by a network provider to get data other than artwork from the current application. To get artwork, a network provider calls GetArtProc().
\par
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL CALLBACK GetDataProc (
\par \tab DWORD\tab \tab \tab providerid,
\par \tab DWORD\tab \tab \tab dataid,
\par \tab LPVOID\tab \tab buffer,
\par \tab DWORD\tab \tab \tab buffersize,
\par \tab DWORD\tab \tab \tab *bytesused
\par );
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 providerid
\par \pard\plain \s19\li720\widctlpar \f4 The ID of the network provider which is requesting the artwork.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 dataid
\par \pard\plain \s19\li720\widctlpar \f4 The ID of the data item being requested. There are no predefined IDs. Network providers can define their own IDs, above 0x80000000, for data that is specific to the provider.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 buffer
\par \pard\plain \s19\li720\widctlpar \f4 A pointer to a buffer where the function should copy the data. This parameter can be NULL if the provider is only querying the data size.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 buffersize
\par \pard\plain \s19\li720\widctlpar \f4 The size of the buffer pointed to by {\i buffer}.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 bytesused
\par \pard\plain \s19\li720\widctlpar \f4 A pointer to a variable which the function should fill in with the number of bytes written to the buffer. If the buffer is NULL, the function should fill in the total number of bytes in the data item.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par This function should return TRUE if the data ID is valid and can be provided, or FALSE otherwise.
\par }
+59
View File
@@ -0,0 +1,59 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;
\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4 \sbasedon0\snext16 API Description;}{\s17\widctlpar
\f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4 \sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20
\sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}}{\info{\title SNetCreateGame}{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min18}{\revtim\yr1996\mo10\dy21\hr11\min40}{\version5}
{\edmins11}{\nofpages2}{\nofwords255}{\nofchars1458}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd \linex0\endnhere {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2
\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6
\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs22\super ${\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super $} MessageBoxProc}#{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super #} MessageBoxProc}K{\footnote
\pard\plain \s21\widctlpar \f4\fs20 {\cs22\super K} MessageBoxProc}} MessageBoxProc
\par \pard\plain \s16\widctlpar \f4
\par {\b\i MessageBoxProc() is a placeholder for an application-defined function name.}
\par
\par \pard \s16\widctlpar This function is called by Storm or the current network provider when it needs to display a message box.
\par \pard \s16\widctlpar
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL CALLBACK MessageBoxProc (
\par \tab HWND\tab \tab parentwindow,
\par \tab LPCSTR\tab text,
\par \tab LPCSTR\tab caption,
\par \tab UINT\tab \tab type
\par );
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 parentwindow
\par \pard\plain \s19\li720\widctlpar \f4 A handle to the window that the message box should use as its parent.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 text
\par \pard\plain \s19\li720\widctlpar \f4 The text of the message. The procedure should dynamically scale the message box in order to fit the entire text.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 caption
\par \pard\plain \s19\li720\widctlpar \f4 The caption, which should be used as the title of the message box window.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 type
\par \pard\plain \s19\li720\widctlpar \f4 A set of flags which indicate the type of the message box. The following constants are allowed:
\par \pard\plain \s16\widctlpar \f4
\par \trowd \trgaph108\trleft612 \cellx3960\cellx7812 \pard\plain \s19\widctlpar\intbl \f4 {\b Value}\cell \pard \s19\widctlpar\intbl {\b Meaning}\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft612 \cellx3960\cellx7812 \pard\plain
\s19\widctlpar\intbl \f4 MB_OK\cell The message box contains one push button: OK. This is the default.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s19\widctlpar\intbl \f4 MB_OKCANCEL\cell The message box contains tw
o push buttons: OK and Cancel.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s19\widctlpar\intbl \f4 MB_RETRYCANCEL\cell The message box contains two push buttons: Retry and Cancel.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row
\pard\plain \s19\widctlpar\intbl \f4 MB_YESNO\cell The message box contains two push buttons: Yes and No.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s19\widctlpar\intbl \f4 MB_YESNOCANCEL\cell
The message box contains three push buttons: Yes, No, and Cancel.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s19\widctlpar\intbl \f4 MB_DEFBUTTON1\cell \pard \s19\widctlpar\intbl
The first button is the default button. This is the default.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s19\widctlpar\intbl \f4 MB_DEFBUTTON2\cell The second button is the default button.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row
\trowd \trgaph108\trleft612 \cellx3960\cellx7812 \pard\plain \s19\widctlpar\intbl \f4 MB_DEFBUTTON3\cell \pard \s19\widctlpar\intbl The third button is the default button.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 flags
\par \pard\plain \s19\li720\widctlpar \f4 A set of flags specifying how the sound should be played. Use the SND_* constants defined in Windows.h.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par \pard \s16\widctlpar The return value is FALSE if the procedure is not able to display the message box.
\par
\par Otherwise, the return value is one of the following item values returned by the dialog box:
\par
\par \trowd \trgaph108\trleft612 \cellx3960\cellx7812 \pard\plain \s19\widctlpar\intbl \f4 IDOK\cell The OK button was selected.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft612 \cellx3960\cellx7812 \pard\plain \s19\widctlpar\intbl
\f4 IDCANCEL\cell The Cancel button was selected.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s19\widctlpar\intbl \f4 IDYES\cell The Yes button was selected.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain
\s19\widctlpar\intbl \f4 IDNO\cell The No button was selected.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft612 \cellx3960\cellx7812 \pard\plain \s19\widctlpar\intbl \f4 IDRETRY\cell \pard \s19\widctlpar\intbl
The Retry button was selected.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s16\widctlpar \f4
\par \pard \s16\widctlpar
\par }
+40
View File
@@ -0,0 +1,40 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;
\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4 \sbasedon0\snext16 API Description;}{\s17\widctlpar
\f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4 \sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20
\sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}}{\info{\title SNetCreateGame}{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min18}{\revtim\yr1996\mo10\dy21\hr11\min30}{\version3}
{\edmins5}{\nofpages1}{\nofwords145}{\nofchars829}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd \linex0\endnhere {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2
\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6
\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs22\super ${\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super $} PlaySoundProc}#{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super #} PlaySoundProc}K{\footnote
\pard\plain \s21\widctlpar \f4\fs20 {\cs22\super K} PlaySoundProc}} PlaySoundProc
\par \pard\plain \s16\widctlpar \f4
\par {\b\i PlaySoundProc() is a placeholder for an application-defined function name.}
\par
\par This function is called by Storm or the current network provider when it needs to play a sound effect.
\par
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL CALLBACK PlaySoundProc (
\par \tab DWORD\tab \tab providerid,
\par \tab DWORD\tab \tab soundid,
\par \tab DWORD\tab \tab flags
\par );
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 providerid
\par \pard\plain \s19\li720\widctlpar \f4 The ID of the network provider which is making the request.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 soundid
\par \pard\plain \s19\li720\widctlpar \f4 The ID of the requested sound effect. The standard IDs are shown below. Network providers can define their own IDs, above 0x80000000, for sound effects that are specific to the provider.
\par \pard\plain \s16\widctlpar \f4
\par \trowd \trgaph108\trleft612 \cellx3960\cellx7812 \pard\plain \s19\widctlpar\intbl \f4 {\b Value}\cell {\b Meaning}\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft612 \cellx3960\cellx7812 \pard\plain \s19\widctlpar\intbl \f4
SNET_SND_CHANGEFOCUS\cell A sound to indicate that the user has changed to focus to a new menu or list-box item.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft612 \cellx3960\cellx7812 \pard\plain \s19\widctlpar\intbl \f4
SNET_SND_SELECTITEM\cell A sound to indicate that the user has selected the current item.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 flags
\par \pard\plain \s19\li720\widctlpar \f4 A set of flags specifying how the sound should be played. Use the SND_* constants defined in Windows.h.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par This function should return TRUE if the sound was successfully played, or FALSE if an error occurred.
\par
\par }
+54
View File
@@ -0,0 +1,54 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;
\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4 \sbasedon0\snext16 API Description;}{\s17\widctlpar
\f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4 \sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20
\sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}}{\info{\title SNetCreateGame}{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min18}{\revtim\yr1996\mo11\dy13\hr23\min45}{\version2}
{\edmins1}{\nofpages2}{\nofwords185}{\nofchars1060}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd \linex0\endnhere {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2
\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6
\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs22\super ${\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super $} SNETCAPS}#{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super #} SNETCAPS}K{\footnote \pard\plain
\s21\widctlpar \f4\fs20 {\cs22\super K} SNETCAPS}} SNETCAPS
\par \pard\plain \s16\widctlpar \f4
\par The SNETCAPS structure contains capabilities for a network provider or a player.
\par
\par \pard\plain \s17\widctlpar \f11\fs22 typedef struct _SNETCAPS \{
\par \tab DWORD\tab \tab size;
\par \tab DWORD\tab \tab flags;
\par \tab DWORD\tab \tab maxmessagesize;
\par \tab DWORD\tab \tab maxqueuesize;
\par \tab DWORD\tab \tab maxplayers;
\par \tab DWORD\tab \tab bytessec;
\par \tab DWORD\tab \tab latencyms;
\par \tab DWORD\tab \tab defaultturnssec;
\par \tab DWORD\tab \tab defaultturnsintransit;
\par \} SNETCAPS, *SNETCAPSPTR;
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Members
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 size
\par \pard\plain \s19\li720\widctlpar \f4 The size of the structure, in bytes. Must be filled in by the application.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 flags
\par \pard\plain \s19\li720\widctlpar \f4 Network capability flags. No flags are currently defined.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 maxmessagesize
\par \pard\plain \s19\li720\widctlpar \f4 The maximum size, in bytes, of a message or turn that can be sent using this network provider.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 maxqueuesize
\par \pard\plain \s19\li720\widctlpar \f4 The maximum size of the outgoing message queue. This field is only meaningful if the network provider makes use of Microsoft DirectPlay.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 maxplayers
\par \pard\plain \s19\li720\widctlpar \f4 The maximum number of players supported by this network provider.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 bytessec
\par \pard\plain \s19\li720\widctlpar \f4 The expected bandwidth of the communications medium, expressed in bytes per second.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 latencyms
\par \pard\plain \s19\li720\widctlpar \f4 The expected latency of the communications medium, expressed as the number of milliseconds for a round-trip transmission.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 defaultturnssec
\par \pard\plain \s19\li720\widctlpar \f4 The recommended number of turns per second for this network provider.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 defaultturnsintransit
\par \pard\plain \s19\li720\widctlpar \f4 The recommended number of turns that the application should maintain in transit when using this network provider.
\par }
+37
View File
@@ -0,0 +1,37 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;
\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4 \sbasedon0\snext16 API Description;}{\s17\widctlpar
\f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4 \sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20
\sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}}{\info{\title SNetCreateGame}{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min18}{\revtim\yr1996\mo10\dy21\hr16\min49}{\version2}
{\edmins0}{\nofpages1}{\nofwords126}{\nofchars719}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd \linex0\endnhere {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2
\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6
\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs22\super ${\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super $} SNETCREATEDATA}#{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super #} SNETCREATEDATA}K{\footnote
\pard\plain \s21\widctlpar \f4\fs20 {\cs22\super K} SNETCREATEDATA}} SNETCREATEDATA
\par \pard\plain \s16\widctlpar \f4
\par The SNETCREATEDATA structure is used in the create game callback function to communicate information about the current provider\rquote s abilities.
\par
\par \pard\plain \s17\widctlpar \f11\fs22 typedef struct _SNETCREATEDATA \{
\par \tab DWORD\tab \tab size;
\par \tab DWORD\tab \tab providerid;
\par \tab DWORD\tab \tab maxplayers;
\par \tab DWORD\tab \tab createflags;
\par \} SNETCREATEDATA, *SNETCREATEDATAPTR;
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Members
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 size
\par \pard\plain \s19\li720\widctlpar \f4 The size of the structure, in bytes.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 providerid
\par \pard\plain \s19\li720\widctlpar \f4 The ID of the currently selected provider.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 maxplayers
\par \pard\plain \s19\li720\widctlpar \f4 The maximum number of players that can join the game. This value is the minimum of the maximum number of players the application supports and the maximum number of players the provider supports.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 createflags
\par \pard\plain \s19\li720\widctlpar \f4 A set of flags specifying what creation options are available. The following flags are defined:
\par
\par \trowd \trgaph108\trleft612 \cellx4680\cellx7812 \pard \s19\widctlpar\intbl {\b Value}\cell {\b Meaning}\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft612 \cellx4680\cellx7812 \pard\plain \s19\widctlpar\intbl \f4
SNET_CF_ALLOWPRIVATEGAMES\cell The creation callback function should allow the user the opportunity to create a private game.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s16\widctlpar \f4
\par }
+85
View File
@@ -0,0 +1,85 @@
{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}
{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f16\froman\fcharset238\fprq2 Times New Roman CE;}{\f17\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f19\froman\fcharset161\fprq2 Times New Roman Greek;}
{\f20\froman\fcharset162\fprq2 Times New Roman Tur;}{\f21\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f28\fmodern\fcharset238\fprq1 Courier New CE;}{\f29\fmodern\fcharset204\fprq1 Courier New Cyr;}{\f31\fmodern\fcharset161\fprq1 Courier New Greek;}
{\f32\fmodern\fcharset162\fprq1 Courier New Tur;}{\f33\fmodern\fcharset186\fprq1 Courier New Baltic;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;
\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{
\nowidctlpar\widctlpar\adjustright \fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\nowidctlpar\widctlpar\adjustright \b\fs40 \sbasedon0 \snext16 API Title;}{\s16\nowidctlpar\widctlpar\adjustright \sbasedon0 \snext16
API Description;}{\s17\nowidctlpar\widctlpar\adjustright \f2\fs22 \sbasedon0 \snext17 API Function;}{\s18\nowidctlpar\widctlpar\adjustright \b \sbasedon0 \snext16 API Section;}{\s19\li720\nowidctlpar\widctlpar\adjustright \sbasedon0 \snext16
API Parameter Description;}{\s20\nowidctlpar\widctlpar\adjustright \i \sbasedon0 \snext19 API Parameter Name;}{\s21\nowidctlpar\widctlpar\adjustright \fs20 \sbasedon0 \snext21 footnote text;}{\*\cs22 \additive \super \sbasedon10 footnote reference;}}
{\*\listtable{\list\listtemplateid-1\listsimple{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\'01*;}{\levelnumbers;}}{\listname ;}\listid-2}}{\*\listoverridetable{\listoverride\listid-2
\listoverridecount1{\lfolevel\listoverrideformat{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat1\levelold\levelspace0\levelindent360{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360 }}\ls1}}{\info{\title SNetCreateGame}
{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min18}{\revtim\yr1997\mo3\dy21\hr16\min55}{\version3}{\edmins5}{\nofpages2}{\nofwords409}{\nofchars2332}{\*\company Blizzard Entertainment}{\nofcharsws0}{\vern71}}
\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade\viewkind1\viewscale100 \fet0\sectd \linex0\endnhere\sectdefaultcl {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3
\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}
{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain
\s15\keepn\nowidctlpar\widctlpar\adjustright \b\fs40 {\cs22\super ${\footnote \pard\plain \s21\nowidctlpar\widctlpar\adjustright \fs20 {\cs22\super $}{ SNetCreateGame}}#{\footnote \pard\plain \s21\nowidctlpar\widctlpar\adjustright \fs20 {\cs22\super #}{
SNetCreateGame}}K{\footnote \pard\plain \s21\nowidctlpar\widctlpar\adjustright \fs20 {\cs22\super K}{ SNetCreateGame}}}{ SNetCreateGame
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par Creates a new network game using the currently selected network provider, and adds the local player as the game master. The game master is always player number one.
\par
\par Rather than calling this function manually, an application will generally call SNetSelectGame() to present the user with a list of games and allow him to join a game or create a new one.
\par
\par }\pard\plain \s17\nowidctlpar\widctlpar\adjustright \f2\fs22 {BOOL SNetCreateGame (
\par \tab LPCSTR\tab gamename,
\par \tab LPCSTR\tab gamepassword,
\par \tab LPCSTR\tab gamedescription,
\par \tab DWORD\tab \tab gamecategorybits,
\par \tab LPVOID\tab initdata,
\par \tab DWORD\tab \tab initdatabytes,
\par \tab DWORD\tab \tab maxplayers,
\par \tab LPCSTR\tab playername,
\par \tab LPCSTR\tab playerdescription,
\par \tab DWORD\tab \tab *playerid
\par );
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s18\nowidctlpar\widctlpar\adjustright \b {Parameters
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {gamename
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {The name of the game being created, as specified by the player. For example, \ldblquote Bob\rquote s Game\rdblquote .
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {gamepassword
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {A password for the game. If the password is not blank, then the game
is considered private. It does not show up on lists of games, and players cannot join the game without knowing the password. Passwords are not case sensitive.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {gamedescription
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {A description of the game. This can be generated by the program, and cont
ain information about the game options. On joining systems, the options strings may be simply displayed as text, or may be decoded by the game into a graphical or iconic representation of game options, such as whether fog of war is in effect.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {gamecategorybits
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {A set of bits describing the categories to which this game belongs. Other systems can either enumerate all games, or enumerate only games which belong to certain categories.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {initdata
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {A
pointer to application-specific initialization data. This data is sent to all joining players. The application receives it on the joining side through the SNET_EVENT_INITDATA callback, which it is guaranteed to get on its first call to SNetReceiveMessag
e() or SNetReceiveTurns() after joining. The maximum size of the initialization data is equal to the maximum message size for the current network provider.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {initdatabytes
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {The number of bytes in the application-specific initialization data.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {maxplayers
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {The
maximum number of players which will be allowed to join this game. This number must be less than or equal to the maximum number of players that was set during the call to SNetInitializeProvider().
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {playername
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {The name of the local player.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {playerdescription
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {A description of the local player. This can be generated by the program, and contain information such as the player\rquote
s character class or level. On joining systems, it may be decoded into a graphical or iconic representation of the player.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {playerid
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {The ID that is assigned to the player, if creating the game is successful.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s18\nowidctlpar\widctlpar\adjustright \b {Return Value
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par This function returns TRUE for success or FALSE for failure. The function can fail if:
\par {\pntext\pard\plain\s16 \f3 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s16\fi-360\li360\nowidctlpar\widctlpar{\*\pn \pnlvlblt\ilvl0\ls1\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls1\adjustright {No network provider has been initialized
\par {\pntext\pard\plain\s16 \f3 \loch\af3\dbch\af0\hich\f3 \'b7\tab}No game name or description is specified
\par {\pntext\pard\plain\s16 \f3 \loch\af3\dbch\af0\hich\f3 \'b7\tab}The maximum number of players is out of range
\par {\pntext\pard\plain\s16 \f3 \loch\af3\dbch\af0\hich\f3 \'b7\tab}No player name or description is specified
\par {\pntext\pard\plain\s16 \f3 \loch\af3\dbch\af0\hich\f3 \'b7\tab}No variable is given to receive the player ID
\par {\pntext\pard\plain\s16 \f3 \loch\af3\dbch\af0\hich\f3 \'b7\tab}The system is out of memory
\par {\pntext\pard\plain\s16 \f3 \loch\af3\dbch\af0\hich\f3 \'b7\tab}The network provider uses a server, and the server is unable to process the request
\par }\pard\plain \nowidctlpar\widctlpar\adjustright \fs20 {
\par }}
+25
View File
@@ -0,0 +1,25 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f1\froman\fcharset2\fprq2 Symbol;}{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;
\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;
\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4
\sbasedon0\snext16 API Description;}{\s17\widctlpar \f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\widctlpar \f4\fs20 \sbasedon0\snext19 footnote text;}{\*\cs20 \additive\super \sbasedon10
footnote reference;}}{\info{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min19}{\revtim\yr1996\mo10\dy3\hr15\min6}{\version2}{\edmins0}{\nofpages1}{\nofwords53}{\nofchars307}{\*\company Blizzard Entertainment}{\vern57431}}
\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd \linex0\endnhere {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}
{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs20\super ${\footnote \pard\plain
\s19\widctlpar \f4\fs20 {\cs20\super $} SNetDestroy}#{\footnote \pard\plain \s19\widctlpar \f4\fs20 {\cs20\super #} SNetDestroy}K{\footnote \pard\plain \s19\widctlpar \f4\fs20 {\cs20\super K} SNetDestroy}} SNetDestroy
\par \pard\plain \s16\widctlpar \f4
\par Closes all active games, uninitializes the network provider, and frees all memory used by this module.
\par
\par Normally, a program should call StormDestroy() once at the end of the program, rather than calling the individual destroy functions.
\par
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL SNetDestroy ();
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par None.
\par
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par {\pntext\pard\plain\f1 \'b7\tab}\pard \s16\fi-360\li360\widctlpar{\*\pn \pnlvlblt\pnf1\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}This function returns TRUE for success or FALSE for failure.
\par \pard\plain \widctlpar \f4\fs20
\par }
+60
View File
@@ -0,0 +1,60 @@
{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}
{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f16\froman\fcharset238\fprq2 Times New Roman CE;}{\f17\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f19\froman\fcharset161\fprq2 Times New Roman Greek;}
{\f20\froman\fcharset162\fprq2 Times New Roman Tur;}{\f21\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f28\fmodern\fcharset238\fprq1 Courier New CE;}{\f29\fmodern\fcharset204\fprq1 Courier New Cyr;}{\f31\fmodern\fcharset161\fprq1 Courier New Greek;}
{\f32\fmodern\fcharset162\fprq1 Courier New Tur;}{\f33\fmodern\fcharset186\fprq1 Courier New Baltic;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;
\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{
\nowidctlpar\widctlpar\adjustright \fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\nowidctlpar\widctlpar\adjustright \b\fs40 \sbasedon0 \snext16 API Title;}{\s16\nowidctlpar\widctlpar\adjustright \sbasedon0 \snext16
API Description;}{\s17\nowidctlpar\widctlpar\adjustright \f2\fs22 \sbasedon0 \snext17 API Function;}{\s18\nowidctlpar\widctlpar\adjustright \b \sbasedon0 \snext16 API Section;}{\s19\li720\nowidctlpar\widctlpar\adjustright \sbasedon0 \snext16
API Parameter Description;}{\s20\nowidctlpar\widctlpar\adjustright \i \sbasedon0 \snext19 API Parameter Name;}{\s21\li720\nowidctlpar\widctlpar\adjustright \f2 \sbasedon19 \snext21 API Callback;}{\s22\nowidctlpar\widctlpar\adjustright \fs20
\sbasedon0 \snext22 footnote text;}{\*\cs23 \additive \super \sbasedon10 footnote reference;}}{\*\listtable{\list\listtemplateid-1\listsimple{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\'01*;}{\levelnumbers
;}}{\listname ;}\listid-2}}{\*\listoverridetable{\listoverride\listid-2\listoverridecount1{\lfolevel\listoverrideformat{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat1\levelold\levelspace0\levelindent360{\leveltext\'01\u-3913 ?;}{\levelnumbers;}
\f3\fbias0 \fi-360\li360 }}\ls1}}{\info{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min19}{\revtim\yr1997\mo3\dy21\hr17}{\version3}{\edmins5}{\nofpages2}{\nofwords256}{\nofchars1462}{\*\company Blizzard Entertainment}
{\nofcharsws1795}{\vern71}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade\viewkind1\viewscale100 \fet0\sectd \linex0\endnhere\sectdefaultcl {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang
{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain
\s15\keepn\nowidctlpar\widctlpar\adjustright \b\fs40 {\cs23\super ${\footnote \pard\plain \s22\nowidctlpar\widctlpar\adjustright \fs20 {\cs23\super $}{ SNetEnumGames}}#{\footnote \pard\plain \s22\nowidctlpar\widctlpar\adjustright \fs20 {\cs23\super #}{
SNetEnumGames}}K{\footnote \pard\plain \s22\nowidctlpar\widctlpar\adjustright \fs20 {\cs23\super K}{ SNetEnumGames}}}{ SNetEnumGames
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par Enumerates all games available on the current network provider which match the program and version IDs. The callback function you provide is called once for each matching game.
\par
\par Some network providers can take a significant amount of time to find all active games (for example, one second). Instead of blocking for this duration, the function returns only the games it current
ly knows about, and then gives you a hint about when you should call it back to receive a more complete list.
\par
\par Rather than calling this function manually, an application will generally call SNetSelectGame() to present the user with a list of games and allow him to join a game or create a new one.
\par
\par }\pard\plain \s17\nowidctlpar\widctlpar\adjustright \f2\fs22 {BOOL SNetEnumGames (
\par \tab DWORD\tab \tab \tab \tab categorybits,
\par \tab DWORD\tab \tab \tab \tab categorymask,
\par \tab SNETENUMGAMESPROC\tab callback,
\par \tab DWORD\tab \tab \tab \tab *hintnextcall
\par );
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s18\nowidctlpar\widctlpar\adjustright \b {Parameters
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {categorybits
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {A set of bits that specify which categories of games the application is interested in enumerating.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {categorymask
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {A mask specifying which categories must match in order for a game to be enumerated. The following logical statement shows how }{\i categorybits}{ and }{\i categorymask}{ are used to select games:
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard \s16\li1440\nowidctlpar\widctlpar\adjustright {if (categorybits AND categorymask)
\par equals (gamecategorybits AND categorymask)
\par then enumerate game
\par }\pard \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {callback
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {The application\rquote s callback function. See EnumGamesProc() for a description.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {hintnextcall
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {The time that the application should wait before calling this function again, in milliseconds. If this number is zero, there is no need to call the function again.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s18\nowidctlpar\widctlpar\adjustright \b {Return Value
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par This function returns TRUE for success or FALSE for failure. The function can fail if:
\par {\pntext\pard\plain\s16 \f3 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s16\fi-360\li360\nowidctlpar\widctlpar{\*\pn \pnlvlblt\ilvl0\ls1\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls1\adjustright {No network provider has been initialized
\par {\pntext\pard\plain\s16 \f3 \loch\af3\dbch\af0\hich\f3 \'b7\tab}No callback function is provided
\par {\pntext\pard\plain\s16 \f3 \loch\af3\dbch\af0\hich\f3 \'b7\tab}The system is out of memory
\par {\pntext\pard\plain\s16 \f3 \loch\af3\dbch\af0\hich\f3 \'b7\tab}The network provider is unable to retrieve a list of games
\par }\pard\plain \nowidctlpar\widctlpar\adjustright \fs20 {
\par }}
+40
View File
@@ -0,0 +1,40 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f1\froman\fcharset2\fprq2 Symbol;}{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;
\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;
\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4
\sbasedon0\snext16 API Description;}{\s17\widctlpar \f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4
\sbasedon0\snext19 API Parameter Name;}{\s21\li720\widctlpar \f11 \sbasedon19\snext21 API Callback;}{\s22\widctlpar \f4\fs20 \sbasedon0\snext22 footnote text;}{\*\cs23 \additive\super \sbasedon10 footnote reference;}}{\info{\author Mike O'Brien}
{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min19}{\revtim\yr1996\mo10\dy3\hr19\min16}{\version2}{\edmins1}{\nofpages1}{\nofwords178}{\nofchars1020}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade
\fet0\sectd \linex0\endnhere {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4
\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}
{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs23\super ${\footnote \pard\plain \s22\widctlpar
\f4\fs20 {\cs23\super $} SNetEnumProviders}#{\footnote \pard\plain \s22\widctlpar \f4\fs20 {\cs23\super #} SNetEnumProviders}K{\footnote \pard\plain \s22\widctlpar \f4\fs20 {\cs23\super K} SNetEnumProviders}} SNetEnumProviders
\par \pard\plain \s16\widctlpar \f4
\par Enumerates all network providers installed on the system. The callback function you provide is called once for each provider. If desired, you can specify a minimum set of capabilities, and only providers which meet or exceed those capabilities will be r
eturned.
\par
\par Rather than calling this function manually, an application will generally call SNetSelectProvider() to present the user with a list of network providers and allow him to select and initialize one.
\par
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL SNetEnumProviders (
\par \tab SNETCAPSPTR\tab \tab \tab mincaps,
\par \tab SNETENUMPROVIDERSPROC\tab \tab callback
\par );
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 mincaps
\par \pard\plain \s19\li720\widctlpar \f4
A pointer to an SNETCAPS structure specifying the minimum capabilities required of network providers. The size field must be filled in which the size of the structure. Any other field can contain a number to specify a minimum capability, or zero to spec
ify that the field should be ignored.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s19\li720\widctlpar \f4 If the mincaps parameter is NULL, all network providers are enumerated.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 callback
\par \pard\plain \s19\li720\widctlpar \f4 The application\rquote s callback function. See EnumProvidersProc() for a description.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par This function returns TRUE for success or FALSE for failure. The function can fail if:
\par {\pntext\pard\plain\f1 \'b7\tab}\pard \s16\fi-360\li360\widctlpar{\*\pn \pnlvlblt\pnf1\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}No callback function is provided
\par {\pntext\pard\plain\f1 \'b7\tab}The size field of the SNETCAPS structure is invalid
\par \pard\plain \widctlpar \f4\fs20
\par }
+40
View File
@@ -0,0 +1,40 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f1\froman\fcharset2\fprq2 Symbol;}{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;
\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;
\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4
\sbasedon0\snext16 API Description;}{\s17\widctlpar \f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4
\sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20 \sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}}{\info{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min20}
{\revtim\yr1996\mo11\dy13\hr23\min45}{\version2}{\edmins0}{\nofpages2}{\nofwords202}{\nofchars1152}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd \linex0\endnhere {\*\pnseclvl1
\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5
\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs22\super ${\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super $} SNetGetNetworkLatency}#{\footnote
\pard\plain \s21\widctlpar \f4\fs20 {\cs22\super #} SNetGetNetworkLatency}K{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super K} SNetGetNetworkLatency}} SNetGetNetworkLatency
\par \pard\plain \s16\widctlpar \f4
\par Returns the expected or measured round-trip latency. This is twice the approximate time, in milliseconds, that a message sent from one computer will take to reach another computer.
\par
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL SNetGetNetworkLatency (
\par \tab DWORD\tab \tab measurementtype,
\par \tab DWORD\tab \tab *result
\par );
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 measurementtype
\par \pard\plain \s19\li720\widctlpar \f4 An identifier specifying the way in which the latency should be measured.
\par \pard\plain \s16\widctlpar \f4
\par \trowd \trgaph108\trleft612 \cellx3492\cellx7812 \pard\plain \s19\widctlpar\intbl \f4 {\b Value}\cell {\b Meaning}\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft612 \cellx3492\cellx7812 \pard\plain \s19\widctlpar\intbl \f4
SNET_LMT_EXPECTED\cell The expected latency for this network provider. This value is always the same for any given network provider.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s19\widctlpar\intbl \f4 SNET_LMT_CURRENT\cell
The current latency of the game. This computer must currently be joined in a game. The latency returned is the highest latency between this computer and any of the other players.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd
\trgaph108\trleft612 \cellx3492\cellx7812 \pard\plain \s19\widctlpar\intbl \f4 SNET_LMT_PEAK\cell The peak latency of the game. This computer must currently be joined in a game. The latency returned is the highest measured latency between this computer
and any of the other players since the beginning of the game, or since the last call to SNetResetLatencyMeasurements().\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s19\li720\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 result
\par \pard\plain \s19\li720\widctlpar \f4 The returned latency.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par This function returns TRUE for success or FALSE for failure. The function can fail if:
\par {\pntext\pard\plain\f1 \'b7\tab}\pard \s16\fi-360\li360\widctlpar{\*\pn \pnlvlblt\pnf1\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}No network provider has been initialized
\par {\pntext\pard\plain\f1 \'b7\tab}The measurement type identifier is invalid
\par {\pntext\pard\plain\f1 \'b7\tab}The measurement type calls for a measured rather than expected latency, and no game has been created or joined
\par {\pntext\pard\plain\f1 \'b7\tab}No variable is provided to receive the result
\par \pard\plain \widctlpar \f4\fs20
\par }
+37
View File
@@ -0,0 +1,37 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f1\froman\fcharset2\fprq2 Symbol;}{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;
\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;
\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4
\sbasedon0\snext16 API Description;}{\s17\widctlpar \f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4
\sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20 \sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}}{\info{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min20}
{\revtim\yr1996\mo10\dy3\hr15\min7}{\version2}{\edmins0}{\nofpages1}{\nofwords98}{\nofchars559}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd \linex0\endnhere {\*\pnseclvl1
\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5
\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs22\super ${\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super $} SNetGetNumPlayers}#{\footnote
\pard\plain \s21\widctlpar \f4\fs20 {\cs22\super #} SNetGetNumPlayers}K{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super K} SNetGetNumPlayers}} SNetGetNumPlayers
\par \pard\plain \s16\widctlpar \f4
\par Returns the number of active players in the game, and the range of active player IDs. The range of IDs may be larger than the number of active players if players have dropped out of the game.
\par
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL SNetGetNumPlayers (
\par \tab DWORD\tab \tab *firstplayerid,
\par \tab DWORD\tab \tab *lastplayerid,
\par \tab DWORD\tab \tab *activeplayers
\par \};
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 firstplayerid
\par \pard\plain \s19\li720\widctlpar \f4 The lowest numbered ID of any active player.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 lastplayerid
\par \pard\plain \s19\li720\widctlpar \f4 The highest numbered ID of any active player.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 activeplayers
\par \pard\plain \s19\li720\widctlpar \f4 The total number of active players.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par This function returns TRUE for success or FALSE for failure. The function can fail if:
\par {\pntext\pard\plain\f1 \'b7\tab}\pard \s16\fi-360\li360\widctlpar{\*\pn \pnlvlblt\pnf1\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}No network provider has been initialized
\par {\pntext\pard\plain\f1 \'b7\tab}No game has been created or joined
\par \pard\plain \widctlpar \f4\fs20
\par }
+35
View File
@@ -0,0 +1,35 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f1\froman\fcharset2\fprq2 Symbol;}{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;
\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;
\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4
\sbasedon0\snext16 API Description;}{\s17\widctlpar \f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4
\sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20 \sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}}{\info{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min20}
{\revtim\yr1996\mo10\dy3\hr15\min7}{\version2}{\edmins0}{\nofpages1}{\nofwords103}{\nofchars588}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd \linex0\endnhere {\*\pnseclvl1
\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5
\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs22\super ${\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super $} SNetGetPlayerCaps}#{\footnote
\pard\plain \s21\widctlpar \f4\fs20 {\cs22\super #} SNetGetPlayerCaps}K{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super K} SNetGetPlayerCaps}} SNetGetPlayerCaps
\par \pard\plain \s16\widctlpar \f4
\par Returns the capabilities of an individual player. You can use this function to get the latency between this machine and any other player in the game.
\par
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL SNetGetPlayerCaps (
\par \tab DWORD\tab \tab \tab playerid,
\par \tab SNETCAPSPTR\tab caps
\par );
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 playerid
\par \pard\plain \s19\li720\widctlpar \f4 The ID of the player for which capabilities will be returned.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 caps
\par \pard\plain \s19\li720\widctlpar \f4 An SNETCAPS structure. You must fill in the size field before passing this structure to SNetGetPlayerCaps().
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par This function returns TRUE for success or FALSE for failure. The function can fail if:
\par {\pntext\pard\plain\f1 \'b7\tab}\pard \s16\fi-360\li360\widctlpar{\*\pn \pnlvlblt\pnf1\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}No network provider has been initialized
\par {\pntext\pard\plain\f1 \'b7\tab}No game has been created or joined
\par {\pntext\pard\plain\f1 \'b7\tab}No active player exists with the given ID
\par {\pntext\pard\plain\f1 \'b7\tab}The size field of the SNETCAPS structure is invalid
\par \pard\plain \widctlpar \f4\fs20
\par }
+40
View File
@@ -0,0 +1,40 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f1\froman\fcharset2\fprq2 Symbol;}{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;
\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;
\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4
\sbasedon0\snext16 API Description;}{\s17\widctlpar \f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4
\sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20 \sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}}{\info{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min21}
{\revtim\yr1996\mo10\dy3\hr15\min7}{\version2}{\edmins0}{\nofpages1}{\nofwords87}{\nofchars500}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd \linex0\endnhere {\*\pnseclvl1
\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5
\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs22\super ${\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super $} SNetGetPlayerName}#{\footnote
\pard\plain \s21\widctlpar \f4\fs20 {\cs22\super #} SNetGetPlayerName}K{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super K} SNetGetPlayerName}} SNetGetPlayerName
\par \pard\plain \s16\widctlpar \f4
\par Returns the name of any player in the game.
\par
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL SNetGetPlayerName (
\par \tab DWORD\tab \tab playerid,
\par \tab LPSTR\tab \tab buffer,
\par \tab DWORD\tab \tab buffersize
\par );
\par
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 playerid
\par \pard\plain \s19\li720\widctlpar \f4 The ID of the player whose name is being requested.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 buffer
\par \pard\plain \s19\li720\widctlpar \f4 A string buffer into which the name will be copied.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 buffersize
\par \pard\plain \s19\li720\widctlpar \f4 The size, in characters, of the buffer.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par This function returns TRUE for success or FALSE for failure. The function can fail if:
\par {\pntext\pard\plain\f1 \'b7\tab}\pard \s16\fi-360\li360\widctlpar{\*\pn \pnlvlblt\pnf1\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}No network provider has been initialized
\par {\pntext\pard\plain\f1 \'b7\tab}No game has been created or joined
\par {\pntext\pard\plain\f1 \'b7\tab}No active player exists with the given ID
\par {\pntext\pard\plain\f1 \'b7\tab}No buffer is given
\par {\pntext\pard\plain\f1 \'b7\tab}The size of the buffer is zero
\par \pard\plain \widctlpar \f4\fs20
\par }
+29
View File
@@ -0,0 +1,29 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f1\froman\fcharset2\fprq2 Symbol;}{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;
\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;
\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4
\sbasedon0\snext16 API Description;}{\s17\widctlpar \f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4
\sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20 \sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}}{\info{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min20}
{\revtim\yr1996\mo10\dy3\hr19\min18}{\version2}{\edmins0}{\nofpages1}{\nofwords67}{\nofchars387}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd \linex0\endnhere {\*\pnseclvl1
\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5
\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs22\super ${\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super $} SNetGetProviderCaps}#{\footnote
\pard\plain \s21\widctlpar \f4\fs20 {\cs22\super #} SNetGetProviderCaps}K{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super K} SNetGetProviderCaps}} SNetGetProviderCaps
\par \pard\plain \s16\widctlpar \f4
\par Returns the capabilities of the currently selected network provider.
\par
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL SNetGetProviderCaps (
\par \tab SNETCAPSPTR\tab caps
\par );
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 caps
\par \pard\plain \s19\li720\widctlpar \f4 An SNETCAPS structure. You must fill in the size field before passing this structure to SNetGetProviderCaps().
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par This function returns TRUE for success or FALSE for failure. The function can fail if:
\par {\pntext\pard\plain\f1 \'b7\tab}\pard \s16\fi-360\li360\widctlpar{\*\pn \pnlvlblt\pnf1\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}No network provider has been initialized
\par {\pntext\pard\plain\f1 \'b7\tab}The size field of the SNETCAPS structure is invalid
\par \pard\plain \widctlpar \f4\fs20
\par }
+45
View File
@@ -0,0 +1,45 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f1\froman\fcharset2\fprq2 Symbol;}{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;
\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;
\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4
\sbasedon0\snext16 API Description;}{\s17\widctlpar \f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4
\sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20 \sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}}{\info{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min21}
{\revtim\yr1996\mo10\dy3\hr15\min8}{\version2}{\edmins1}{\nofpages2}{\nofwords292}{\nofchars1667}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd \linex0\endnhere {\*\pnseclvl1
\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5
\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs22\super ${\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super $} SNetGetTurnsInTransit}#{\footnote
\pard\plain \s21\widctlpar \f4\fs20 {\cs22\super #} SNetGetTurnsInTransit}K{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super K} SNetGetTurnsInTransit}} SNetGetTurnsInTransit
\par \pard\plain \s16\widctlpar \f4
\par Returns the number of turns which have been from this machine with SNetSendTurn() but not yet received with SNetReceiveTurns(). It is generally a good idea to keep two or more turns in transit (on the wire) so that other machines can process turns withou
t having to wait for them to be transmitted.
\par
\par For example, if a game runs at the rate of two turns per second, and for each turn it simply sends its turn and then waits for turns from all other players to arrive, then the game speed may be cut in half when running on a high-latency network such as th
e Internet. This is because at least a quarter of a second will be wasted for every turn waiting for turns to arrive from other players.
\par
\par However, if the game is modified so that it always sends out turns two in advance of what it is processing (sending tu
rn 3 and then processing all turns for turn 1, sending turn 4 and then processing all turns for turn 2, etc.) then the turns will have plenty of time for transmission, so no game delay will be required.
\par
\par The two primary ways to compensate for latency in a turn-based game are:
\par {\pntext\pard\plain 1. \tab}\pard \s16\fi-360\li360\widctlpar{\*\pn \pnlvlbody\pndec\pnb0\pni0\pnf4\pnfs24\pnstart1\pnindent360\pnhang{\pntxta . }}Decrease the number of turns processed per second, or
\par {\pntext\pard\plain 2. \tab}Increase the number of turns in transit.
\par \pard \s16\widctlpar
\par Since decreasing the number of turns processed per second compensates not only for latency problems but also bandwidth problems,
it is probably best to fix the number of turns in transit at two and then adjust the number of turns per second. You can get a recommendation for the number of turns per second from the network provider\rquote
s capabilities, returned during SNetEnumerateProviders().
\par
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL SNetGetTurnsInTransit (
\par \tab DWORD\tab \tab *turns
\par );
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 turns
\par \pard\plain \s19\li720\widctlpar \f4 The number of turns that have been sent from this computer with SNetSendTurn() but not yet received with SNetReceiveTurns().
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par This function returns TRUE for success or FALSE for failure. The function can fail if:
\par {\pntext\pard\plain\f1 \'b7\tab}\pard \s16\fi-360\li360\widctlpar{\*\pn \pnlvlblt\pnf1\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}No network provider has been initialized
\par {\pntext\pard\plain\f1 \'b7\tab}No game has been created or joined
\par {\pntext\pard\plain\f1 \'b7\tab}No variable is provided to receive the result
\par \pard\plain \widctlpar \f4\fs20
\par }
+60
View File
@@ -0,0 +1,60 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f1\froman\fcharset2\fprq2 Symbol;}{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;
\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;
\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4
\sbasedon0\snext16 API Description;}{\s17\widctlpar \f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4
\sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20 \sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}}{\info{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min21}
{\revtim\yr1996\mo10\dy3\hr19\min16}{\version2}{\edmins0}{\nofpages2}{\nofwords438}{\nofchars2502}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd \linex0\endnhere {\*\pnseclvl1
\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5
\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs22\super ${\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super $} SNetInitializeProvider}#{\footnote
\pard\plain \s21\widctlpar \f4\fs20 {\cs22\super #} SNetInitializeProvider}K{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super K} SNetInitializeProvider}} SNetInitializeProvider
\par \pard\plain \s16\widctlpar \f4
\par Initializes the given network provider, which will provide support for all further SNet calls.
\par
\par Some providers can take a second or more to initialize, especially if initialization involves connecting to a server.
\par
\par Rather than calling this function manually, an application will generally call SNetSelectProvider() to present the user with a list of network providers and allow him to select and initialize one.
\par
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL SNetInitializeProvider (
\par \tab DWORD\tab \tab \tab \tab providerid,
\par \tab SNETPROGRAMDATAPTR\tab programdata,
\par \tab SNETPLAYERDATAPTR\tab playerdata,
\par \tab SNETUIDATAPTR\tab \tab interfacedata,
\par \tab SNETVERSIONDATAPTR\tab versiondata
\par );
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 providerid
\par \pard\plain \s19\li720\widctlpar \f4 The ID of the provider to be initialized. This is obtained from a call to SNetEnumerateProviders().
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s19\li720\widctlpar \f4 You can also specify zero to use the null provider. The null provider is used just l
ike any other provider, but it does not make use of any communications medium. It is provided so that single player games can use the same code as multi-player games. To create a single player game using the null provider, first initialize the provider,
then create a game using SNetCreateGame(), then send messages and turns using the SNet functions as normal. At the end of the game, call SNetLeaveGame().
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 programdata
\par \pard\plain \s19\li720\widctlpar \f4 A pointer to a structure containing information about the program, such as the program name, version, and number of players supported. This is a mandatory parameter.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 playerdata
\par \pard\plain \s19\li720\widctlpar \f4 A pointer to a structure containing the name and description of the current player. The provider may use this information if it performs a matchmaking process. This is a mandatory parameter.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 interfacedata
\par \pard\plain \s19\li720\widctlpar \f4 A pointer to a structure containing information about how the network provider should display user interface screens if necessary. Most network providers will fail if this information is not given. For example,
the modem provider cannot query the user for a phone number to dial without the ability to display user interface screens.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 versiondata
\par \pard\plain \s19\li720\widctlpar \f4 A pointer to a structure containing information about the application which is necessary for automatic version control. Some network providers are capable of performing over-the-wire version updates.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par This function returns TRUE for success or FALSE for failure. The function can fail if:
\par {\pntext\pard\plain\f1 \'b7\tab}\pard \s16\fi-360\li360\widctlpar{\*\pn \pnlvlblt\pnf1\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}The program data is missing or invalid.
\par {\pntext\pard\plain\f1 \'b7\tab}The player data is missing or invalid.
\par {\pntext\pard\plain\f1 \'b7\tab}The interface data is missing or invalid, and the provider needs to display user interface in order to initialize itself.
\par {\pntext\pard\plain\f1 \'b7\tab}The system is out of memory or resources
\par {\pntext\pard\plain\f1 \'b7\tab}The network provider was unable to initialize itself. For example, the IPX provider may fail if IPX support is not available, and the Battle.net provider may fail if it cannot contact any Battle.net servers.
\par {\pntext\pard\plain\f1 \'b7\tab}The application needs to be upgraded before it can connect to the server.
\par \pard \s16\widctlpar
\par If this function fails, the application should call GetLastError() to determine the reason for failure. If GetLastError() returns SNET_ERROR_REQUIRES_UPGRADE, the application should call SNetPerformUpgrade().
\par \pard\plain \widctlpar \f4\fs20
\par }
+56
View File
@@ -0,0 +1,56 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f1\froman\fcharset2\fprq2 Symbol;}{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;
\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;
\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4
\sbasedon0\snext16 API Description;}{\s17\widctlpar \f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4
\sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20 \sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}}{\info{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min21}
{\revtim\yr1996\mo10\dy3\hr19\min14}{\version2}{\edmins0}{\nofpages2}{\nofwords232}{\nofchars1328}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd \linex0\endnhere {\*\pnseclvl1
\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5
\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs22\super ${\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super $} SNetJoinGame}#{\footnote \pard\plain
\s21\widctlpar \f4\fs20 {\cs22\super #} SNetJoinGame}K{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super K} SNetJoinGame}} SNetJoinGame
\par \pard\plain \s16\widctlpar \f4
\par Joins an existing game. Rather than calling this function manually, an application will generally call SNetSelectGame() to present the user with a list of games and allow him to join a game or create a new one.
\par
\par To leave a game after joining, call SNetLeaveGame().
\par
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL SNetJoinGame (
\par \tab DWORD\tab \tab \tab gameid,
\par \tab LPCSTR\tab \tab gamename,
\par \tab LPCSTR\tab \tab gamepassword,
\par \tab LPCSTR\tab \tab playername,
\par \tab LPCSTR\tab \tab playerdescription,
\par \tab DWORD\tab \tab \tab *playerid
\par );
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 gameid
\par \pard\plain \s19\li720\widctlpar \f4 The ID of the game to be joined. You can discover IDs of active games using SNetEnumGames().
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 gamename
\par \pard\plain \s19\li720\widctlpar \f4 The name of the game to be joined. By passing a name, you can join a game which was not enumerated, such as a private game. If {\i gameid} is not zero, this parameter is ignored.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 gamepassword
\par \pard\plain \s19\li720\widctlpar \f4 The password of the game to be joined. The function will fail if the password is incorrect. If the game to be joined is not password protected, simply pass a blank password.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 playername
\par \pard\plain \s19\li720\widctlpar \f4 The name of the local player.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 playerdescription
\par \pard\plain \s19\li720\widctlpar \f4 A description of the local player. This can be generated by the program, and contain information such as the player\rquote s character class or level.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 playerid
\par \pard\plain \s19\li720\widctlpar \f4 The ID that is assigned to the player, if joining is successful.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par This function returns TRUE for success or FALSE for failure. The function can fail if:
\par {\pntext\pard\plain\f1 \'b7\tab}\pard \s16\fi-360\li360\widctlpar{\*\pn \pnlvlblt\pnf1\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}No network provider has been initialized
\par {\pntext\pard\plain\f1 \'b7\tab}No player name or description is specified
\par {\pntext\pard\plain\f1 \'b7\tab}No variable is provided to receive the player ID
\par {\pntext\pard\plain\f1 \'b7\tab}The game owner cannot be contacted (possibly due to a firewall)
\par {\pntext\pard\plain\f1 \'b7\tab}The game password is incorrect
\par {\pntext\pard\plain\f1 \'b7\tab}The game is full or is closed to new players
\par {\pntext\pard\plain\f1 \'b7\tab}The system is out of memory
\par \pard\plain \widctlpar \f4\fs20
\par }
+24
View File
@@ -0,0 +1,24 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f1\froman\fcharset2\fprq2 Symbol;}{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;
\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;
\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4
\sbasedon0\snext16 API Description;}{\s17\widctlpar \f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\widctlpar \f4\fs20 \sbasedon0\snext19 footnote text;}{\*\cs20 \additive\super \sbasedon10
footnote reference;}}{\info{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min22}{\revtim\yr1996\mo10\dy3\hr15\min8}{\version2}{\edmins0}{\nofpages1}{\nofwords61}{\nofchars348}{\*\company Blizzard Entertainment}{\vern57431}}
\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd \linex0\endnhere {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}
{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs20\super ${\footnote \pard\plain
\s19\widctlpar \f4\fs20 {\cs20\super $} SNetLeaveGame}#{\footnote \pard\plain \s19\widctlpar \f4\fs20 {\cs20\super #} SNetLeaveGame}K{\footnote \pard\plain \s19\widctlpar \f4\fs20 {\cs20\super K} SNetLeaveGame}} SNetLeaveGame
\par \pard\plain \s16\widctlpar \f4
\par Leaves the current game. If the local player created the game using SNetCreateGame(), and hasn\rquote t yet started the game, then leaving will destroy the game. Otherwise, the game will continue without the local player.
\par
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL SNetLeaveGame();
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par None.
\par
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par This function returns TRUE for success or FALSE for failure. The function can fail if:
\par {\pntext\pard\plain\f1 \'b7\tab}\pard \s16\fi-360\li360\widctlpar{\*\pn \pnlvlblt\pnf1\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}No network provider has been initialized
\par \pard\plain \widctlpar \f4\fs20
\par }
+36
View File
@@ -0,0 +1,36 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f1\froman\fcharset2\fprq2 Symbol;}{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;
\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;
\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4
\sbasedon0\snext16 API Description;}{\s17\widctlpar \f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4
\sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20 \sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}}{\info{\title SNetCreateGame}{\author Mike O'Brien}{\operator Mike O'Brien}
{\creatim\yr1996\mo8\dy21\hr16\min18}{\revtim\yr1996\mo10\dy3\hr19\min28}{\version2}{\edmins1}{\nofpages1}{\nofwords152}{\nofchars869}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd
\linex0\endnhere {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang
{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8
\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs22\super ${\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super $} SNet
PerformUpgrade}#{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super #} SNetPerformUpgrade}K{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super K} SNetPerformUpgrade}} SNetPerformUpgrade
\par \pard\plain \s16\widctlpar \f4
\par Performs an automatic version update of the application. You should call this function is SNetSelectProvider() or SNetInitializeProvider() fails and GetLastError() returns SNET_ERROR_REQUIRES_UPGRADE.
\par
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL SNetPerformUpgrade (
\par \tab DWORD\tab \tab *upgradestatus
\par );
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 upgradestatus
\par \pard\plain \s19\li720\widctlpar \f4 Returns one of the following values, specifying whether the upgrade was successful:
\par
\par \trowd \trgaph108\trleft612 \cellx4500\cellx7812 \pard \s19\widctlpar\intbl {\b Value}\cell {\b Meaning}\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft612 \cellx4500\cellx7812 \pard\plain \s19\widctlpar\intbl \f4
SNET_UPGRADE_FAILED\cell The upgrade failed or was canceled by the user.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s19\widctlpar\intbl \f4 SNET_UPGRADE_NOT_NEEDED\cell No upgrade is needed.\cell \pard\plain \widctlpar\intbl \f4\fs20
\row \pard\plain \s19\widctlpar\intbl \f4 SNET_UPGRADE_SUCCEEDED\cell The upgrade succeeded.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft612 \cellx4500\cellx7812 \pard\plain \s19\widctlpar\intbl \f4 SNET_UPGRADING_TERMINATE
\par \pard\plain \s16\widctlpar\intbl \f4 \cell \pard\plain \s19\widctlpar\intbl \f4 The upgrade is currently in progress. The patch program needs the application to terminate so that it can modify the application\rquote
s EXE or DLL files. The patch program will restart the application after the upgrade is complete. \cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s16\widctlpar \f4
\par
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par This function returns TRUE for success or FALSE for failure. The function can fail if:
\par {\pntext\pard\plain\f1 \'b7\tab}\pard \s16\fi-360\li360\widctlpar{\*\pn \pnlvlblt\pnf1\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}No variable was provided to receive the upgrade status
\par {\pntext\pard\plain\f1 \'b7\tab}The upgrade failed or was canceled by the user
\par {\pntext\pard\plain\f1 \'b7\tab}No upgrade was needed
\par }
+31
View File
@@ -0,0 +1,31 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;
\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4 \sbasedon0\snext16 API Description;}{\s17\widctlpar
\f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4 \sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20
\sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}}{\info{\title SNetCreateGame}{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min18}{\revtim\yr1996\mo10\dy3\hr18\min2}{\version4}
{\edmins1}{\nofpages1}{\nofwords91}{\nofchars524}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd \linex0\endnhere {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2
\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6
\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs22\super ${\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super $} SNETPLAYERDATA}#{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super #} SNETPLAYERDATA}K{\footnote
\pard\plain \s21\widctlpar \f4\fs20 {\cs22\super K} SNETPLAYERDATA}} SNETPLAYERDATA
\par \pard\plain \s16\widctlpar \f4
\par The SNETPLAYERDATA function contains information about the local player. This information is required when initializing a provider, since the provider may provide a matchmaking service, and when creating or joining a game.
\par
\par \pard\plain \s17\widctlpar \f11\fs22 typedef struct _SNETPLAYERDATA \{
\par \tab DWORD\tab \tab size;
\par \tab DWORD\tab \tab playername;
\par \tab DWORD\tab \tab playerdescription;
\par \} SNETPLAYERDATA, *SNETPLAYERDATAPTR;
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Members
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 size
\par \pard\plain \s19\li720\widctlpar \f4 The size of the structure, in bytes.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 playername
\par \pard\plain \s19\li720\widctlpar \f4 The name of the local player.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 playerdescription
\par \pard\plain \s19\li720\widctlpar \f4 A description of the local player. This can be generated by the program, and contain information such as the player\rquote s character class or level.
\par \pard\plain \s16\widctlpar \f4
\par }
+70
View File
@@ -0,0 +1,70 @@
{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}
{\f16\froman\fcharset238\fprq2 Times New Roman CE;}{\f17\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f19\froman\fcharset161\fprq2 Times New Roman Greek;}{\f20\froman\fcharset162\fprq2 Times New Roman Tur;}
{\f21\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f28\fmodern\fcharset238\fprq1 Courier New CE;}{\f29\fmodern\fcharset204\fprq1 Courier New Cyr;}{\f31\fmodern\fcharset161\fprq1 Courier New Greek;}{\f32\fmodern\fcharset162\fprq1 Courier New Tur;}
{\f33\fmodern\fcharset186\fprq1 Courier New Baltic;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;
\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\nowidctlpar\widctlpar\adjustright \fs20 \snext0 Normal;}
{\*\cs10 \additive Default Paragraph Font;}{\s15\nowidctlpar\widctlpar\adjustright \b\fs40 \sbasedon0 \snext16 API Title;}{\s16\nowidctlpar\widctlpar\adjustright \sbasedon0 \snext16 API Description;}{\s17\nowidctlpar\widctlpar\adjustright \f2\fs22
\sbasedon0 \snext17 API Function;}{\s18\nowidctlpar\widctlpar\adjustright \b \sbasedon0 \snext16 API Section;}{\s19\li720\nowidctlpar\widctlpar\adjustright \sbasedon0 \snext16 API Parameter Description;}{\s20\nowidctlpar\widctlpar\adjustright \i
\sbasedon0 \snext19 API Parameter Name;}{\s21\nowidctlpar\widctlpar\adjustright \fs20 \sbasedon0 \snext21 footnote text;}{\*\cs22 \additive \super \sbasedon10 footnote reference;}}{\info{\title SNetCreateGame}{\author Mike O'Brien}{\operator Mike O'Brien}
{\creatim\yr1996\mo8\dy21\hr16\min18}{\revtim\yr1997\mo3\dy21\hr17\min47}{\version3}{\edmins5}{\nofpages2}{\nofwords224}{\nofchars1280}{\*\company Blizzard Entertainment}{\nofcharsws0}{\vern71}}
\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade\viewkind1\viewscale100 \fet0\sectd \linex0\endnhere\sectdefaultcl {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3
\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}
{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain
\s15\keepn\nowidctlpar\widctlpar\adjustright \b\fs40 {\cs22\super ${\footnote \pard\plain \s21\nowidctlpar\widctlpar\adjustright \fs20 {\cs22\super $}{ SNETPROGRAMDATA}}#{\footnote \pard\plain \s21\nowidctlpar\widctlpar\adjustright \fs20 {\cs22\super #}{
SNETPROGRAMDATA}}K{\footnote \pard\plain \s21\nowidctlpar\widctlpar\adjustright \fs20 {\cs22\super K}{ SNETPROGRAMDATA}}}{ SNETPROGRAMDATA
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par The SNETPROGRAMDATA structure contains information about the application, such as the program name and version number.
\par
\par }\pard\plain \s17\nowidctlpar\widctlpar\adjustright \f2\fs22 {typedef struct _SNETPROGRAMDATA \{
\par \tab DWORD\tab \tab size;
\par \tab LPCSTR\tab programname;
\par \tab LPCSTR\tab programdescription;
\par \tab DWORD\tab \tab programid;
\par \tab DWORD\tab \tab versionid;
\par \tab DWORD\tab \tab reserved1;
\par \tab DWORD\tab \tab maxplayers;
\par \tab LPVOID\tab initdata;
\par \tab DWORD\tab \tab initdatabytes;
\par \tab LPVOID\tab reserved2;
\par \tab DWORD\tab \tab optcategorybits;
\par \} SNETPROGRAMDATA, *SNETPROGRAMDATAPTR;
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s18\nowidctlpar\widctlpar\adjustright \b {Members
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {size
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {The size of the structure, in bytes.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {programname
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {The name of the program.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {programdescription
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {The description of the progr
am. This usually includes a name and version number. It is displayed at the bottom of the standard connection screens. If this field is not provided, Storm will automatically generate it using the EXE file\rquote s product version information.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {programid
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {A unique 32-bit identifier for the application. The use of this unique identifier allows multiple applications using Storm to create games on the same network without interfering with each other.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {versionid
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {A unique 32-bit identifier for the network version of the application. This number should be incremented whenever a change in the application makes it incompatible with older versions.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {reserved1
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {Reserved -- must be set to 0.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {maxplayers
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {The maximum number of players per game supported by the application.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {initdata
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {Application-specific initialization data. This data is provided by the game creator, and is available to all joining computers through the SNET_EVENT_INITDATA callback.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {initdatabytes
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {The size of the application-specific initialization data.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {reserved2
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {Reserved \endash must be set to 0.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {optcategorybits
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {This value provides a hint to the network provider about which category bits will most often be used by users to narrow the list of joinable games. The network provider can us
e this hint to structure the way it stores its list of games.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }}
+38
View File
@@ -0,0 +1,38 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f1\froman\fcharset2\fprq2 Symbol;}{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;
\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;
\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4
\sbasedon0\snext16 API Description;}{\s17\widctlpar \f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4
\sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20 \sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}}{\info{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min22}
{\revtim\yr1996\mo10\dy3\hr15\min9}{\version2}{\edmins0}{\nofpages1}{\nofwords112}{\nofchars640}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd \linex0\endnhere {\*\pnseclvl1
\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5
\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs22\super ${\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super $} SNetReceiveMessage}#{\footnote
\pard\plain \s21\widctlpar \f4\fs20 {\cs22\super #} SNetReceiveMessage}K{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super K} SNetReceiveMessage}} SNetReceiveMessage
\par \pard\plain \s16\widctlpar \f4
\par This function receives the next unread message from any player.
\par
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL SNetReceiveMessage (
\par \tab DWORD\tab \tab *senderplayerid,
\par \tab LPVOID\tab *data,
\par \tab DWORD\tab \tab *databytes
\par );
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 senderplayerid
\par \pard\plain \s19\li720\widctlpar \f4 If a message is available, this parameter returns the ID of the player who sent the message.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 data
\par \pard\plain \s19\li720\widctlpar \f4 If a message is available, this parameter returns a pointer to the message data. The pointer remains valid until the next call to an SNet function or to StormDestroy().
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 databytes
\par \pard\plain \s19\li720\widctlpar \f4 If a message is available, this parameter returns the number of bytes in the message.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par This function returns TRUE for success or FALSE for failure. The function can fail if:
\par {\pntext\pard\plain\f1 \'b7\tab}\pard \s16\fi-360\li360\widctlpar{\*\pn \pnlvlblt\pnf1\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}No network provider has been initialized
\par {\pntext\pard\plain\f1 \'b7\tab}No game has been created or joined
\par {\pntext\pard\plain\f1 \'b7\tab}No messages are available
\par \pard\plain \widctlpar \f4\fs20
\par }
+54
View File
@@ -0,0 +1,54 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f1\froman\fcharset2\fprq2 Symbol;}{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;
\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;
\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4
\sbasedon0\snext16 API Description;}{\s17\widctlpar \f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4
\sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20 \sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}}{\info{\title SNetReceiveTurns}{\author Mike O'Brien}{\operator Mike O'Brien}
{\creatim\yr1996\mo8\dy21\hr16\min22}{\revtim\yr1996\mo10\dy3\hr15\min9}{\version3}{\edmins0}{\nofpages2}{\nofwords269}{\nofchars1536}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd
\linex0\endnhere {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang
{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8
\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs22\super ${\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super $}
SNetReceiveTurns}#{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super #} SNetReceiveTurns}K{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super K} SNetReceiveTurns}} SNetReceiveTurns
\par \pard\plain \s16\widctlpar \f4
\par This function receives the next set of turns from every active player, if all turns are available.
\par
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL SNetReceiveTurns (
\par \tab DWORD\tab \tab firstplayerid,
\par \tab DWORD\tab \tab arraysize,
\par \tab LPVOID\tab *arraydata,
\par \tab LPDWORD\tab arraydatabytes,
\par \tab LPDWORD\tab arrayplayerstatus
\par );
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 firstplayerid
\par \pard\plain \s19\li720\widctlpar \f4 The player ID of the first player for which a turn will be received. For example, if this parameter is one, then slot zero in the each array corresponds to player number one.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 arraysize
\par \pard\plain \s19\li720\widctlpar \f4 The number of slots in each array. This limits the number of players for which turns can be returned.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 arraydata
\par \pard\plain \s19\li720\widctlpar \f4 An array of pointers, which will be filled in with pointers to the message data for each player\rquote s turn. Each returned pointer will remain valid until the next call to an SNet function or to StormDestroy().
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 arraydatabytes
\par \pard\plain \s19\li720\widctlpar \f4 An array of DWORDs, which will be filled in with the size, in bytes, of the message data for each player\rquote s turn.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 arrayplayerstatus
\par \pard\plain \s19\li720\widctlpar \f4 An array of DWORDs, which will be filled in with the status of each player, whether or not the function successfully returns turns for each player. The following status codes can be returned:
\par \pard\plain \s16\widctlpar \f4
\par \trowd \trgaph108\trleft612 \cellx3960\cellx7812 \pard\plain \s19\widctlpar\intbl \f4 {\b Value}\cell {\b Meaning}\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft612 \cellx3960\cellx7812 \pard\plain \s19\widctlpar\intbl \f4
SNET_PS_UNUSED\cell There is no active player in this slot.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s19\widctlpar\intbl \f4 SNET_PS_READY\cell The next turn for this player has been received.\cell \pard\plain \widctlpar\intbl
\f4\fs20 \row \pard\plain \s19\widctlpar\intbl \f4 SNET_PS_WAITING\cell The next turn for this player has not yet been received.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft612 \cellx3960\cellx7812 \pard\plain
\s19\widctlpar\intbl \f4 SNET_PS_NOTRESPONDING\cell The next turn for this player has not been received, and attempts to contact the computer for a resend have been unsuccessful. The player may have lost his network connection.\cell \pard\plain
\widctlpar\intbl \f4\fs20 \row \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par This function returns TRUE for success or FALSE for failure. The function can fail if:
\par {\pntext\pard\plain\f1 \'b7\tab}\pard \s16\fi-360\li360\widctlpar{\*\pn \pnlvlblt\pnf1\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}No network provider has been initialized
\par {\pntext\pard\plain\f1 \'b7\tab}No game has been created or joined
\par {\pntext\pard\plain\f1 \'b7\tab}An array size of zero is specified
\par {\pntext\pard\plain\f1 \'b7\tab}An array was not provided
\par {\pntext\pard\plain\f1 \'b7\tab}This machine has not yet received the next turn from at least one player
\par \pard\plain \widctlpar \f4\fs20
\par }
+42
View File
@@ -0,0 +1,42 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f1\froman\fcharset2\fprq2 Symbol;}{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;
\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;
\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4
\sbasedon0\snext16 API Description;}{\s17\widctlpar \f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4
\sbasedon0\snext19 API Parameter Name;}{\s21\li720\widctlpar \f11 \sbasedon19\snext21 API Callback;}{\s22\widctlpar \f4\fs20 \sbasedon0\snext22 footnote text;}{\*\cs23 \additive\super \sbasedon10 footnote reference;}}{\info{\author Mike O'Brien}
{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min22}{\revtim\yr1996\mo10\dy11\hr14\min19}{\version2}{\edmins1}{\nofpages2}{\nofwords197}{\nofchars1126}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade
\fet0\sectd \linex0\endnhere {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4
\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}
{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs23\super ${\footnote \pard\plain \s22\widctlpar
\f4\fs20 {\cs23\super $} SNetRegisterEventHandler}#{\footnote \pard\plain \s22\widctlpar \f4\fs20 {\cs23\super #} SNetRegisterEventHandler}K{\footnote \pard\plain \s22\widctlpar \f4\fs20 {\cs23\super K} SNetRegisterEventHandler}} SNetRegisterEventHandler
\par \pard\plain \s16\widctlpar \f4
\par Registers a callback function which will be called when the specified event occurs. Applications can use this functionality to receive notifications of players joining and leaving a game, among other things.
\par
\par Events can occur at any time, but Storm queues the events and only dispatches them to the appropriate event handler function during an application call to SNetReceiveMessage() or SNetReceiveTurns(). This protects the application from reentrancy issues.
\par
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL SNetRegisterEventHandler (
\par \tab DWORD\tab \tab \tab eventid,
\par \tab SNETEVENTPROC\tab callback
\par );
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 eventid
\par \pard\plain \s19\li720\widctlpar \f4 The ID of the event for which the callback function is being registered. The following events are defined:
\par \pard\plain \s16\widctlpar \f4
\par \trowd \trgaph108\trleft612 \cellx4320\cellx7812 \pard\plain \s19\widctlpar\intbl \f4 {\b Value}\cell {\b Meaning}\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft612 \cellx4320\cellx7812 \pard\plain \s19\widctlpar\intbl \f4
SNET_EVENT_INITDATA\cell Used to receive application-specific initialization data that the game creator specified in the call to SNetCreateGame().\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s19\widctlpar\intbl \f4 SNET_EVENT_GAMEDESTROY
\cell The current game has been destroyed by the owner.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s19\widctlpar\intbl \f4 SNET_EVENT_GAMESTART\cell The current game has been started.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row
\pard\plain \s19\widctlpar\intbl \f4 SNET_EVENT_PLAYERJOIN\cell A player has joined the current game.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft612 \cellx4320\cellx7812 \pard\plain \s19\widctlpar\intbl \f4
SNET_EVENT_PLAYERLEAVE\cell A player has left the current game.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 callback
\par \pard\plain \s19\li720\widctlpar \f4 A pointer to the callback function. See EventProc() for a description.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par This function returns TRUE for success or FALSE for failure. The function can fail if:
\par {\pntext\pard\plain\f1 \'b7\tab}\pard \s16\fi-360\li360\widctlpar{\*\pn \pnlvlblt\pnf1\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}An invalid event ID was specified
\par {\pntext\pard\plain\f1 \'b7\tab}No callback function was provided
\par \pard\plain \widctlpar \f4\fs20
\par }
+26
View File
@@ -0,0 +1,26 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;
\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4 \sbasedon0\snext16 API Description;}{\s17\widctlpar
\f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\widctlpar \f4\fs20 \sbasedon0\snext19 footnote text;}{\*\cs20 \additive\super \sbasedon10 footnote reference;}}{\info{\author Mike O'Brien}
{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min23}{\revtim\yr1996\mo10\dy3\hr15\min9}{\version2}{\edmins0}{\nofpages1}{\nofwords103}{\nofchars591}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0
\sectd \linex0\endnhere {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang
{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8
\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs20\super ${\footnote \pard\plain \s19\widctlpar \f4\fs20 {\cs20\super $}
SNetResetLatencyMeasurements}#{\footnote \pard\plain \s19\widctlpar \f4\fs20 {\cs20\super #} SNetResetLatencyMeasurements}K{\footnote \pard\plain \s19\widctlpar \f4\fs20 {\cs20\super K} SNetResetLatencyMeasurements}} SNetResetLatencyMeasurements
\par \pard\plain \s16\widctlpar \f4
\par This function has two effects. First, it clears the peak latency that has been measured since the beginning of the game, as returned by SNetGetNetworkLatency() with SNET_LMT_PEAK. Second, it causes all players in the game to be immediately polled for a
new current latency, as returned by SNetGetNetworkLatency() with SNET_LMT_CURRENT.
\par
\par It can be useful to call SNetResetLatencyMeasurements() after a player drops out of a game, especially if the game bases its speed or number of turns per second on the measured latency of the current players.
\par
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL SNetResetLatencyMeasurements ();
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par None.
\par
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par This function returns TRUE for success or FALSE for failure.
\par \pard\plain \widctlpar \f4\fs20
\par }
+59
View File
@@ -0,0 +1,59 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f1\froman\fcharset2\fprq2 Symbol;}{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;
\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;
\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4
\sbasedon0\snext16 API Description;}{\s17\widctlpar \f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4
\sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20 \sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}}{\info{\title SNetCreateGame}{\author Mike O'Brien}{\operator Mike O'Brien}
{\creatim\yr1996\mo8\dy21\hr16\min18}{\revtim\yr1996\mo10\dy3\hr19\min9}{\version2}{\edmins1}{\nofpages2}{\nofwords317}{\nofchars1812}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd
\linex0\endnhere {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang
{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8
\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs22\super ${\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super $}
SNetSelectGame}#{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super #} SNetSelectGame}K{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super K} SNetSelectGame}} SNetSelectGame
\par \pard\plain \s16\widctlpar \f4
\par Supplies user interface screens to allow the player to select from a list of games or create a new game, then creates or joins the game and returns the local user\rquote s game player ID.
\par
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL SNetSelectGame (
\par \tab DWORD\tab \tab \tab \tab flags,
\par \tab SNETPROGRAMDATAPTR\tab programdata,
\par \tab SNETPLAYERDATAPTR\tab playerdata,
\par \tab SNETUIDATAPTR\tab \tab interfacedata,
\par \tab SNETVERSIONDATAPTR\tab versiondata,
\par \tab DWORD\tab \tab \tab \tab *playerid
\par );
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 flags
\par \pard\plain \s19\li720\widctlpar \f4 A set of flags specifying which options should be provided to the user. The following flags are defined:
\par
\par \trowd \trgaph108\trleft612 \cellx3780\cellx7812 \pard \s19\widctlpar\intbl {\b Value}\cell {\b Meaning}\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \trowd \trgaph108\trleft612 \cellx3780\cellx7812 \pard\plain \s19\widctlpar\intbl \f4 SNET_
SF_ALLOWCREATE\cell The user is allowed to create new games. If this flag is not specified, the user is only allowed to join existing games.\cell \pard\plain \widctlpar\intbl \f4\fs20 \row \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 programdata
\par \pard\plain \s19\li720\widctlpar \f4 A pointer to a structure containing information about the program, such as the program name, version, and number of players supported. This is a mandatory parameter.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 playerdata
\par \pard\plain \s19\li720\widctlpar \f4
A pointer to a structure containing the name and description of the current player. The provider may use this information if it performs a matchmaking process. The provider also uses this information when creating or joining a game. This is a mandatory
parameter.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 interfacedata
\par \pard\plain \s19\li720\widctlpar \f4 A pointer to a structure containing i
nformation about how the network provider should display user interface screens if necessary. Most network providers will fail if this information is not given. For example, the modem provider cannot query the user for a phone number to dial without the
ability to display user interface screens.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 versiondata
\par \pard\plain \s19\li720\widctlpar \f4 A pointer to a structure containing information about the application which is necessary for automatic version control. Some network providers are capable of performing over-the-wire version updates.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 playerid
\par \pard\plain \s19\li720\widctlpar \f4 The ID that is assigned to the player, if the function successfully creates or joins a game.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par This function returns TRUE for success or FALSE for failure. The function can fail if:
\par {\pntext\pard\plain\f1 \'b7\tab}\pard \s16\fi-360\li360\widctlpar{\*\pn \pnlvlblt\pnf1\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}No network provider has been initialized.
\par {\pntext\pard\plain\f1 \'b7\tab}The program data is missing or invalid.
\par {\pntext\pard\plain\f1 \'b7\tab}The player data is missing or invalid.
\par {\pntext\pard\plain\f1 \'b7\tab}The interface data is missing or invalid
\par {\pntext\pard\plain\f1 \'b7\tab}No variable is provided to receive the player ID.
\par {\pntext\pard\plain\f1 \'b7\tab}The user canceled the creation or joining process.
\par {\pntext\pard\plain\f1 \'b7\tab}The system is out of memory.
\par }
+52
View File
@@ -0,0 +1,52 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f1\froman\fcharset2\fprq2 Symbol;}{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;
\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;
\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4
\sbasedon0\snext16 API Description;}{\s17\widctlpar \f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4
\sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20 \sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}}{\info{\title SNetCreateGame}{\author Mike O'Brien}{\operator Mike O'Brien}
{\creatim\yr1996\mo8\dy21\hr16\min18}{\revtim\yr1996\mo10\dy3\hr19\min8}{\version5}{\edmins12}{\nofpages2}{\nofwords310}{\nofchars1770}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd
\linex0\endnhere {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang
{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8
\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs22\super ${\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super $} SNet
SelectProvider}#{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super #} SNetSelectProvider}K{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super K} SNetSelectProvider}} SNetSelectProvider
\par \pard\plain \s16\widctlpar \f4
\par \pard \s16\widctlpar Supplies user interface screens to allow the user to select a network provider, then initializes that provider.
\par \pard \s16\widctlpar
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL SNetSelectGame (
\par \pard \s17\widctlpar \tab SNETCAPSPTR\tab \tab mincaps,
\par \tab SNETPROGRAMDATAPTR\tab programdata,
\par \tab SNETPLAYERDATAPTR\tab playerdata,
\par \tab SNETUIDATAPTR\tab \tab interfacedata,
\par \tab SNETVERSIONDATAPTR\tab versiondata,
\par \tab DWORD\tab \tab \tab \tab *providerid
\par );
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 programdata
\par \pard\plain \s19\li720\widctlpar \f4 A pointer to a structure containing information about the program, such as the program name, version, and number of players supported. This is a mandatory parameter.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 playerdata
\par \pard\plain \s19\li720\widctlpar \f4 A pointer to a structure containing the name and description of the current player. The provider may use this information if it performs a matchmaking process. This is a mandatory parameter.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 interfacedata
\par \pard\plain \s19\li720\widctlpar \f4
A pointer to a structure containing information about how the network provider should display user interface screens if necessary. Most network providers will fail if this information is not given. For example, the modem provider cannot query the user f
or a phone number to dial without the ability to display user interface screens.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 versiondata
\par \pard\plain \s19\li720\widctlpar \f4 A pointer to a structure containing information about the application which is necessary for automatic version control. Some network providers are capable of performing over-the-wire version updates.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 providerid
\par \pard\plain \s19\li720\widctlpar \f4 The ID of the provider that was selected.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par This function returns TRUE for success or FALSE for failure. The function can fail if:
\par {\pntext\pard\plain\f1 \'b7\tab}\pard \s16\fi-360\li360\widctlpar{\*\pn \pnlvlblt\pnf1\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}The program data is missing or invalid.
\par {\pntext\pard\plain\f1 \'b7\tab}The player data is missing or invalid.
\par {\pntext\pard\plain\f1 \'b7\tab}The interface data is missing or invalid, and the provider needs to display interface during the initialization process.
\par {\pntext\pard\plain\f1 \'b7\tab}The network provider was unable to initialize itself. For example, the IPX provider may fail if IPX support is not available, and the Battle.net provider may fail if it cannot contact any Battle.net servers.
\par {\pntext\pard\plain\f1 \'b7\tab}The application needs to be upgraded before it can connect to the server.
\par \pard \s16\widctlpar
\par If this function fails, the application should call GetLastError() to determine the reason for failure. If GetLastError() returns SNET_ERROR_REQUIRES_UPGRADE, the application should call SNetPerformUpgrade().
\par }
+44
View File
@@ -0,0 +1,44 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f1\froman\fcharset2\fprq2 Symbol;}{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;
\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;
\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4
\sbasedon0\snext16 API Description;}{\s17\widctlpar \f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4
\sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20 \sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}}{\info{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min23}
{\revtim\yr1996\mo10\dy21\hr11\min47}{\version2}{\edmins0}{\nofpages1}{\nofwords169}{\nofchars964}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd \linex0\endnhere {\*\pnseclvl1
\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5
\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs22\super ${\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super $} SNetSendMessage}#{\footnote \pard\plain
\s21\widctlpar \f4\fs20 {\cs22\super #} SNetSendMessage}K{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super K} SNetSendMessage}} SNetSendMessage
\par \pard\plain \s16\widctlpar \f4
\par Sends a message to another player, or to all players. It must be received on the target computer using SNetReceiveMessage().
\par
\par A message is different from a turn, in that messages can be sent between two individual players, and can be sent at any time, whereas turns are sent to all players at a specific interval. The choice of whether to use messages or turns depends on the netw
orking model of the game. Games can also mix and match, using messages for some purposes and turns for others.
\par
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL SNetSendMessage (
\par \tab DWORD\tab \tab targetplayerid,
\par \tab LPVOID\tab data,
\par \tab DWORD\tab \tab databytes
\par );
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 targetplayerid
\par \pard\plain \s19\li720\widctlpar \f4 The ID of the player to whom the message will be sent. Specify SNET_BROADCASTPLAYERID to broadcast the message to all players.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 data
\par \pard\plain \s19\li720\widctlpar \f4 A pointer to the message data.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 databytes
\par \pard\plain \s19\li720\widctlpar \f4 The size of the message, in bytes.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par This function returns TRUE for success or FALSE for failure. The function can fail if:
\par {\pntext\pard\plain\f1 \'b7\tab}\pard \s16\fi-360\li360\widctlpar{\*\pn \pnlvlblt\pnf1\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}No network provider has been initialized
\par {\pntext\pard\plain\f1 \'b7\tab}No game has been created or joined
\par {\pntext\pard\plain\f1 \'b7\tab}A player ID was given, and no active player exists with that ID
\par {\pntext\pard\plain\f1 \'b7\tab}No data pointer was provided
\par {\pntext\pard\plain\f1 \'b7\tab}The size of the message is zero
\par {\pntext\pard\plain\f1 \'b7\tab}The system is out of memory
\par \pard\plain \widctlpar \f4\fs20
\par }
+41
View File
@@ -0,0 +1,41 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f1\froman\fcharset2\fprq2 Symbol;}{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;
\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;
\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4
\sbasedon0\snext16 API Description;}{\s17\widctlpar \f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4
\sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20 \sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}}{\info{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min23}
{\revtim\yr1996\mo10\dy3\hr15\min10}{\version2}{\edmins0}{\nofpages1}{\nofwords182}{\nofchars1042}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd \linex0\endnhere {\*\pnseclvl1
\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5
\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs22\super ${\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super $} SNetSendTurn}#{\footnote \pard\plain
\s21\widctlpar \f4\fs20 {\cs22\super #} SNetSendTurn}K{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super K} SNetSendTurn}} SNetSendTurn
\par \pard\plain \s16\widctlpar \f4
\par Sends out the next turn for this computer. The turn must be received on the local machine and all other machines in the game using SNetReceiveTurns().
\par
\par Typically, a game will send a turn as soon as it is generated (for example, as soon a
s the user performs an action), and then receive turns at a specific rate, such as two turns per second. By sending turns as soon as they are generated, rather than sending only two turns per second, the game ensures that turns are given as much time as
possible to travel over the wire. However, it is also important for the game to ensure that it has always sent more turns than it has processed, to ensure that there are always turns on the wire. The game can accomplish this by checking the number of tu
rns in transit, using SNetGetTurnsInTransit(), before calling SNetReceiveTurns().
\par
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL SNetSendTurn (
\par \tab LPVOID\tab data,
\par \tab DWORD\tab \tab databytes
\par );
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 data
\par \pard\plain \s19\li720\widctlpar \f4 A pointer to the turn data.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 databytes
\par \pard\plain \s19\li720\widctlpar \f4 The size of the turn data, in bytes.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par This function returns TRUE for success or FALSE for failure. The function can fail if:
\par {\pntext\pard\plain\f1 \'b7\tab}\pard \s16\fi-360\li360\widctlpar{\*\pn \pnlvlblt\pnf1\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}No network provider has been initialized
\par {\pntext\pard\plain\f1 \'b7\tab}No game has been created or joined
\par {\pntext\pard\plain\f1 \'b7\tab}No data pointer was provided
\par {\pntext\pard\plain\f1 \'b7\tab}The size of the turn is zero
\par {\pntext\pard\plain\f1 \'b7\tab}The system is out of memory
\par \pard\plain \widctlpar \f4\fs20
\par }
+31
View File
@@ -0,0 +1,31 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f1\froman\fcharset2\fprq2 Symbol;}{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;
\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;
\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4
\sbasedon0\snext16 API Description;}{\s17\widctlpar \f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\widctlpar \f4\fs20 \sbasedon0\snext19 footnote text;}{\*\cs20 \additive\super \sbasedon10
footnote reference;}}{\info{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min23}{\revtim\yr1996\mo10\dy3\hr15\min10}{\version2}{\edmins0}{\nofpages1}{\nofwords157}{\nofchars898}{\*\company Blizzard Entertainment}{\vern57431}}
\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd \linex0\endnhere {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}
{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs20\super ${\footnote \pard\plain
\s19\widctlpar \f4\fs20 {\cs20\super $} SNetStartGame}#{\footnote \pard\plain \s19\widctlpar \f4\fs20 {\cs20\super #} SNetStartGame}K{\footnote \pard\plain \s19\widctlpar \f4\fs20 {\cs20\super K} SNetStartGame}} SNetStartGame
\par \pard\plain \s16\widctlpar \f4
\par Starts the current game. Only the game master can call this function. Once the game has been started, no new players can join, and the game will continue even if the game master has left.
\par
\par The SNetStartGame() function was designed around games like Warcraft, where all players sit in a chat room while waiting for the game to join, and then start playing the game at th
e same time. It makes less sense in a game like Quake where players can drop in and out of the game at any time. For this reason, it will probably be removed and replaced with a more comprehensive API that allows individual control over such game attrib
utes as whether new players can join, whether the game shows up in lists of games, and whether the game master is necessary to maintain the game.
\par
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL SNetStartGame ();
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par None.
\par
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par This function returns TRUE for success or FALSE for failure. The function can fail if:
\par {\pntext\pard\plain\f1 \'b7\tab}\pard \s16\fi-360\li360\widctlpar{\*\pn \pnlvlblt\pnf1\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}No network provider has been initialized
\par {\pntext\pard\plain\f1 \'b7\tab}No game has been created or joined
\par {\pntext\pard\plain\f1 \'b7\tab}The local player is not the master player
\par {\pntext\pard\plain\f1 \'b7\tab}The game has already been started
\par \pard\plain \widctlpar \f4\fs20
\par }
+80
View File
@@ -0,0 +1,80 @@
{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}
{\f16\froman\fcharset238\fprq2 Times New Roman CE;}{\f17\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f19\froman\fcharset161\fprq2 Times New Roman Greek;}{\f20\froman\fcharset162\fprq2 Times New Roman Tur;}
{\f21\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f28\fmodern\fcharset238\fprq1 Courier New CE;}{\f29\fmodern\fcharset204\fprq1 Courier New Cyr;}{\f31\fmodern\fcharset161\fprq1 Courier New Greek;}{\f32\fmodern\fcharset162\fprq1 Courier New Tur;}
{\f33\fmodern\fcharset186\fprq1 Courier New Baltic;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;
\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\nowidctlpar\widctlpar\adjustright \fs20 \snext0 Normal;}
{\*\cs10 \additive Default Paragraph Font;}{\s15\nowidctlpar\widctlpar\adjustright \b\fs40 \sbasedon0 \snext16 API Title;}{\s16\nowidctlpar\widctlpar\adjustright \sbasedon0 \snext16 API Description;}{\s17\nowidctlpar\widctlpar\adjustright \f2\fs22
\sbasedon0 \snext17 API Function;}{\s18\nowidctlpar\widctlpar\adjustright \b \sbasedon0 \snext16 API Section;}{\s19\li720\nowidctlpar\widctlpar\adjustright \sbasedon0 \snext16 API Parameter Description;}{\s20\nowidctlpar\widctlpar\adjustright \i
\sbasedon0 \snext19 API Parameter Name;}{\s21\nowidctlpar\widctlpar\adjustright \fs20 \sbasedon0 \snext21 footnote text;}{\*\cs22 \additive \super \sbasedon10 footnote reference;}}{\info{\title SNetCreateGame}{\author Mike O'Brien}{\operator Mike O'Brien}
{\creatim\yr1996\mo8\dy21\hr16\min18}{\revtim\yr1997\mo3\dy21\hr17\min50}{\version4}{\edmins2}{\nofpages2}{\nofwords369}{\nofchars2106}{\*\company Blizzard Entertainment}{\nofcharsws0}{\vern71}}
\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade\viewkind1\viewscale100 \fet0\sectd \linex0\endnhere\sectdefaultcl {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3
\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}
{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain
\s15\keepn\nowidctlpar\widctlpar\adjustright \b\fs40 {\cs22\super ${\footnote \pard\plain \s21\nowidctlpar\widctlpar\adjustright \fs20 {\cs22\super $}{ SNETUIDATA}}#{\footnote \pard\plain \s21\nowidctlpar\widctlpar\adjustright \fs20 {\cs22\super #}{
SNETUIDATA}}K{\footnote \pard\plain \s21\nowidctlpar\widctlpar\adjustright \fs20 {\cs22\super K}{ SNETUIDATA}}}{ SNETUIDATA
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par The SNETUIDATA structure contains information which Storm and the network providers use to display user interface on behalf of the application program.
\par
\par }\pard\plain \s17\nowidctlpar\widctlpar\adjustright \f2\fs22 {typedef struct _SNETUIDATA \{
\par \tab DWORD\tab \tab \tab \tab size;
\par \tab DWORD\tab \tab \tab \tab uiflags;
\par \tab HWND\tab \tab \tab \tab parentwindow;
\par \tab SNETGETARTPROC\tab \tab artcallback;
\par \tab SNETCHECKAUTHPROC\tab authcallback;
\par \tab SNETCREATEPROC\tab \tab createcallback;
\par \tab SNETDRAWDESCPROC\tab drawdesccallback;
\par \tab SNETSELECTEDPROC\tab selectedcallback;
\par \tab SNETMESSAGEBOXPROC\tab messageboxcallback;
\par \tab SNETPLAYSOUNDPROC\tab soundcallback;
\par \tab SNETSTATUSPROC\tab \tab statuscallback;
\par \tab SNETGETDATAPROC\tab \tab getdatacallback;
\par \tab SNETCATEGORYPROC\tab \tab categorycallback;
\par \} SNETUIDATA, *SNETUIDATAPTR;
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s18\nowidctlpar\widctlpar\adjustright \b {Members
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {size
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {The size of the structure, in bytes.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {uiflags
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {A set of flags specifying the desired behavior of the network provider\rquote s user interface. No flags are currently defined.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {parentwindow
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {The window handle of the active window. If Storm or a network provider creates a dialog box, it will use this handle for the parent window.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {artcallback
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {A pointer to a function which Storm or a network provider can call to obtain artwork for the dialog background or controls.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {authcallback
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {A pointer to a function which the network provider calls to determine whether the local player has access to a chat room. This only applies to network providers which provide chat functionality.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {createcallback
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {
A pointer to a function which the network provider calls when the user has decided to create a game. This function is responsible for asking the user for the game name and options, and then calling SNetCreateGame().
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {drawdesccallback
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {
A pointer to a function which the network provider calls if it needs to draw a game or player description. This allows the application to perform its own drawing. For example, it could convert a cryptic description str
ing which only the application understands, like \ldblquote FOG LOW BATTLE.PUD\rdblquote into a group of icons which would represent the game options in a way players could easily understand.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {selectedcallback
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {A pointer to a function which Storm calls when the user selects a network provider. This provides the application a chance to review the network provider\rquote
s ID and capabilities, and either accept the selection or present the user with an error message and reject the selection.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {messageboxcallback
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {A pointer to a function which Storm and the network provider can use to display message boxes.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {soundcallback
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {A pointer to a function which Storm and the network provider can use to play sound effects.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {statuscallback
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {A pointer to a function that the network provider can use to provide feedback on the status of a long operation.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {getdatacallback
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {A pointer to a function that the network provider can use to request provider-specific data from the application.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }\pard\plain \s20\nowidctlpar\widctlpar\adjustright \i {categorycallback
\par }\pard\plain \s19\li720\nowidctlpar\widctlpar\adjustright {A pointer to a function that the network provider can use to request information about which categories of games the user is interested in joining.
\par }\pard\plain \s16\nowidctlpar\widctlpar\adjustright {
\par }}
+33
View File
@@ -0,0 +1,33 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f1\froman\fcharset2\fprq2 Symbol;}{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;
\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;
\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4
\sbasedon0\snext16 API Description;}{\s17\widctlpar \f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4
\sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20 \sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}}{\info{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min23}
{\revtim\yr1996\mo10\dy3\hr15\min10}{\version2}{\edmins0}{\nofpages1}{\nofwords77}{\nofchars443}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd \linex0\endnhere {\*\pnseclvl1
\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5
\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs22\super ${\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super $} SNetUnregisterEventHandler}#{\footnote
\pard\plain \s21\widctlpar \f4\fs20 {\cs22\super #} SNetUnregisterEventHandler}K{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super K} SNetUnregisterEventHandler}} SNetUnregisterEventHandler
\par \pard\plain \s16\widctlpar \f4
\par This removes a given function from the list of registered event handlers.
\par
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL SNetUnregisterEventHandler (
\par \tab DWORD\tab \tab \tab eventid,
\par \tab SNETEVENTPROC\tab callback
\par );
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 eventid
\par \pard\plain \s19\li720\widctlpar \f4 The event ID for which the handler was registered. See SNetRegisterEventHandler() for a list of event IDs.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 callback
\par \pard\plain \s19\li720\widctlpar \f4 A pointer to the event handler function.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par This function returns TRUE for success or FALSE for failure. The function can fail if:
\par {\pntext\pard\plain\f1 \'b7\tab}\pard \s16\fi-360\li360\widctlpar{\*\pn \pnlvlblt\pnf1\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}An invalid event ID was specified
\par {\pntext\pard\plain\f1 \'b7\tab}No callback function was provided
\par \pard\plain \widctlpar \f4\fs20
\par }
+39
View File
@@ -0,0 +1,39 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;
\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4 \sbasedon0\snext16 API Description;}{\s17\widctlpar
\f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4 \sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20
\sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}}{\info{\title SNetCreateGame}{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min18}{\revtim\yr1996\mo10\dy3\hr18\min29}{\version2}
{\edmins2}{\nofpages1}{\nofwords135}{\nofchars771}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd \linex0\endnhere {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2
\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6
\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs22\super ${\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super $} SNETVERSIONDATA}#{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super #} SNETVERSIONDATA}K{\footnote
\pard\plain \s21\widctlpar \f4\fs20 {\cs22\super K} SNETVERSIONDATA}} SNETVERSIONDATA
\par \pard\plain \s16\widctlpar \f4
\par The SNETVERSIONDATA structure contains information that is needed to perform an over-the-wire program upgrade.
\par
\par \pard\plain \s17\widctlpar \f11\fs22 typedef struct _SNETVERSIONDATA \{
\par \tab DWORD\tab \tab size;
\par \tab LPCSTR\tab versionstring;
\par \tab LPCSTR\tab executablefile;
\par \tab LPCSTR\tab originalarchivefile;
\par \tab LCPSTR\tab patcharchivefile;
\par \} SNETVERSIONDATA, *SNETVERSIONDATAPTR;
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Members
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 size
\par \pard\plain \s19\li720\widctlpar \f4 The size of the structure, in bytes.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 versionstring
\par \pard\plain \s19\li720\widctlpar \f4 A human-readable string representing the product version. If this string is provided, it overrides the product version string in the executable file\rquote s version information resource.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 executablefile
\par \pard\plain \s19\li720\widctlpar \f4 The full path name of the program\rquote s executable file.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 originalarchivename
\par \pard\plain \s19\li720\widctlpar \f4 The full path name to the archive file which contains all of the program\rquote s data. This file will typically be located on CD.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 patcharchivefile
\par \pard\plain \s19\li720\widctlpar \f4 The full path name to the archive file which contains patched program data. This file must be located on the user\rquote s hard drive.
\par \pard\plain \s16\widctlpar \f4
\par }
+47
View File
@@ -0,0 +1,47 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;
\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4 \sbasedon0\snext16 API Description;}{\s17\widctlpar
\f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4 \sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20
\sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}}{\info{\title SNetCreateGame}{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min18}{\revtim\yr1996\mo11\dy27\hr19\min45}{\version3}
{\edmins1}{\nofpages2}{\nofwords170}{\nofchars971}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd \linex0\endnhere {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2
\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6
\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 {\cs22\super ${\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super $} StatusProc}#{\footnote \pard\plain \s21\widctlpar \f4\fs20 {\cs22\super #} StatusProc}K{\footnote \pard\plain
\s21\widctlpar \f4\fs20 {\cs22\super K} StatusProc}} StatusProc
\par \pard\plain \s16\widctlpar \f4
\par {\b\i StatusProc() is a placeholder for an application-defined function name.}
\par
\par This function is called by the network provider during a long operation to allow the program to provide visual feedback to the user.
\par
\par \pard\plain \s17\widctlpar \f11\fs22 BOOL CALLBACK StatusProc (
\par \tab LPCSTR\tab \tab statustext,
\par \tab DWORD\tab \tab \tab workcompleted,
\par \tab DWORD\tab \tab \tab estimatedworkremaining,
\par \tab DWORD\tab \tab \tab flags,
\par \tab SNETABORTPROC\tab abortproc
\par );
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Parameters
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 statustext
\par \pard\plain \s19\li720\widctlpar \f4 A human-readable description of the current status of the operation.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 workcompleted
\par \pard\plain \s19\li720\widctlpar \f4 A value representing the amount of work on this operation that the network provider has already completed.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 estimatedworkremaining
\par \pard\plain \s19\li720\widctlpar \f4 A value representing the network provider\rquote s best estimate for the amount of work remaining. If the application wants to display the progress as a percent, it can use the following equation:
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s19\fi720\li720\widctlpar \f4 percent = (completed*100)/(completed+remaining).
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 flags
\par \pard\plain \s19\li720\widctlpar \f4 A set of flags which specify the state of the service provider. There are no flags currently defined.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s20\widctlpar \i\f4 abortproc
\par \pard\plain \s19\li720\widctlpar \f4 A pointer to a function that the application can call to cancel the current operation.
\par \pard\plain \s16\widctlpar \f4
\par \pard\plain \s18\widctlpar \b\f4 Return Value
\par \pard\plain \s16\widctlpar \f4
\par If the application uses this information, it should return TRUE. Otherwise, it should return FALSE.
\par
\par }
Binary file not shown.
Binary file not shown.
+49
View File
@@ -0,0 +1,49 @@
[OPTIONS]
TITLE=Storm Reference
COMPRESS=on
WARNING=3
[FILES]
Title.rtf
SNetCreateGame.rtf
SNetDestroy.rtf
SNetEnumGames.rtf
SNetEnumProviders.rtf
SNetGetNetworkLatency.rtf
SNetGetNumPlayers.rtf
SNetGetPlayerCaps.rtf
SNetGetPlayerName.rtf
SNetGetProviderCaps.rtf
SNetGetTurnsInTransit.rtf
SNetInitializeProvider.rtf
SNetJoinGame.rtf
SNetLeaveGame.rtf
SNetPerformUpgrade.rtf
SNetReceiveMessage.rtf
SNetReceiveTurns.rtf
SNetRegisterEventHandler.rtf
SNetResetLatencyMeasurements.rtf
SNetSelectGame.rtf
SNetSelectProvider.rtf
SNetSendMessage.rtf
SNetSendTurn.rtf
SNetStartGame.rtf
SNetUnregisterEventHandler.rtf
CategoryProc.rtf
CheckAuthProc.rtf
CreateProc.rtf
DrawDescProc.rtf
EnumGamesProc.rtf
EnumProvidersProc.rtf
EventProc.rtf
GetArtProc.rtf
GetDataProc.rtf
MessageBoxProc.rtf
PlaySoundProc.rtf
StatusProc.rtf
SNETCAPS.rtf
SNETCREATEDATA.rtf
SNETPLAYERDATA.rtf
SNETPROGRAMDATA.rtf
SNETUIDATA.rtf
SNETVERSIONDATA.rtf
+652
View File
@@ -0,0 +1,652 @@
*playerid
0x80000000,
32-bit
A description of the local player. This can be generated by the program, and contain information such as the player
A pointer to a structure containing information about how the network provider should display user interface screens if necessary. Most network providers will fail if this information is not given. For example, the modem provider cannot query the user
A pointer to a structure containing information about the application which is necessary for automatic version control. Some network providers are capable of performing over-the-wire version updates.
A pointer to a structure containing information about the program, such as the program name, version, and number of players supported. This is a mandatory parameter.
A set of flags specifying how the sound should be played. Use the SND_* constants defined in Windows.h.
A structure containing the interface data that was passed to SNetSelectGame(), modified as necessary to ensure that the dialog that the create callback displays fits with the network provider
A structure containing the player data that was passed to SNetSelectGame().
A structure containing the program data that was passed to SNetSelectGame().
A structure containing the version data that was passed to SNetSelectGame().
A value returned by the callback function specifying which
An array
An identifier which tells whether the name and description describe a game or a player. It can be one of the following values:
An invalid event ID was specified
Any
Applications
BOOL SNetSelectGame (
Battle.net
Blizzard
Cancel
Cancel.
CategoryProc
CheckAuthProc
Courier New;
CreateProc
DWORD
DWORD *
DWORDs,
DrawDescProc
EnumGamesProc
EnumProvidersProc
EventProc
FALSE
For
Functions
GetArtProc
GetDataProc
GetLastError()
IDs
IDs,
IDs.
If this function fails, the application should call GetLastError() to determine the reason for failure. If GetLastError() returns SNET_ERROR_REQUIRES_UPGRADE, the application should call SNetPerformUpgrade().
LPCSTR
LPDWORD
LPVOID
Meaning
Members
MessageBoxProc
Most
New;
No active player exists with the given ID
No callback function is provided
No callback function was provided
No data pointer was provided
No game has been created or joined
No network provider has been initialized
No player name or description is specified
No variable is provided to receive the result
None.
Other
Otherwise,
Parameters
PlaySoundProc
Player has been squelched by the local user
Player is a Blizzard employee
Player is a channel moderator
Player is a speaker for a special event
Player is a sysop of the selected gaming service
Rather than calling this function manually, an application will generally call SNetSelectGame() to present the user with a list of games and allow him to join a game or create a new one.
Rather than calling this function manually, an application will generally call SNetSelectProvider() to present the user with a list of network providers and allow him to select and initialize one.
Return Value
SNETCAPS
SNETCAPSPTR
SNETCREATEDATA
SNETEVENTPROC
SNETPLAYERDATA
SNETPLAYERDATAPTR
SNETPROGRAMDATA
SNETPROGRAMDATAPTR
SNETUIDATA
SNETUIDATAPTR
SNETVERSIONDATA
SNETVERSIONDATAPTR
SNET_DDPF_BLIZZARD
SNET_DDPF_MODERATOR
SNET_DDPF_SPEAKER
SNET_DDPF_SQUELCHED
SNET_DDPF_SYSOP
SNET_ERROR_REQUIRES_UPGRADE,
SNET_EVENT_INITDATA
SNet
SNetCreateGame
SNetCreateGame()
SNetCreateGame(),
SNetCreateGame().
SNetDestroy
SNetEnumGames
SNetEnumProviders
SNetEnumerateProviders().
SNetGetNetworkLatency
SNetGetNetworkLatency()
SNetGetNumPlayers
SNetGetPlayerCaps
SNetGetPlayerName
SNetGetProviderCaps
SNetGetTurnsInTransit
SNetInitializeProvider
SNetInitializeProvider().
SNetJoinGame
SNetLeaveGame
SNetLeaveGame().
SNetPerformUpgrade
SNetPerformUpgrade().
SNetReceiveMessage
SNetReceiveMessage()
SNetReceiveTurns
SNetReceiveTurns().
SNetRegisterEventHandler
SNetResetLatencyMeasurements
SNetSelectGame
SNetSelectGame()
SNetSelectGame(),
SNetSelectGame().
SNetSelectProvider
SNetSelectProvider()
SNetSendMessage
SNetSendTurn
SNetSendTurn()
SNetStartGame
SNetUnregisterEventHandler
Some
StatusProc
Storm
StormDestroy().
Symbol;
TRUE
The ID of the network provider which is making the request.
The application
The application needs to be upgraded before it can connect to the server.
The name of the local player.
The network provider was unable to initialize itself. For example, the IPX provider may fail if IPX support is not available, and the Battle.net provider may fail if it cannot contact any Battle.net servers.
The player data is missing or invalid.
The program data is missing or invalid.
The size field of the SNETCAPS structure is invalid
The size of the buffer pointed to by
The size of the structure, in bytes.
The size of the turn
The system is out of memory
This function returns TRUE for success or FALSE for failure. The function can fail if:
This function should return TRUE to continue enumeration, or FALSE to stop.
Value
Windows.h.
ability
abortproc
about
above
active
after
all
allow
allowed
allows
already
also
always
amount
and
another
application
application-defined
application-specific
application.
archive
are
array
arrayplayerstatus
artwork
artwork,
assigned
authorized
automatic
automatically
available
available,
available.
background
bandwidth
been
before
beginning
being
below.
between
bitmap
bitmap.
bits
box
box.
buffer
buffer,
buffer.
buffersize
buffersize,
but
button
button.
buttons:
bytes
bytes,
bytes.
call
callback
callback,
called
calling
calls
can
canceled
cannot
capabilities
capabilities,
capable
caps
caption,
categories
category
categorybits
categorymask
categorymask)
channel
channel.
character
characters,
chat
class
communications
computer
computer.
computers
connect
constants
contact
contain
containing
contains
continue
control.
create
created
createdata
creates
creating
creation
current
currently
data
data,
data.
databytes
decided
decoded
default
default.
defaultturns
define
defined
defined.
defined:
describe
describing
description
description.
destroy
determine
dial
dialog
dialog.
display
displayed
displays
does
doesn
draw
drawdata
drawn.
during
each
effect.
effects.
either
employee
ensure
enumerate
enumerated.
enumeration,
error
especially
event
eventid
eventid,
events
example,
executable
existing
exists
expected
expressed
fail
failed
fails,
failure.
feedback
field
file
fill
filled
first
firstplayerid
flags
flags,
following
from
full
function
function.
game
game,
game.
gamedescription
gameid
gamename
gamename,
gamepassword
gamepassword,
games
games,
games.
gaming
generally
generated
get
given
given.
graphical
handle
handler
has
have
height
highest
him
hint
how
human-readable
iconic
identifier
if:
ignored.
includes
indicate
individual
information
initdata
initdatabytes
initialization
initialize
initialized
initialized.
installed
interested
interface
interface.
interfacedata
interfacedata,
into
invalid
invalid,
invalid.
item
item.
itemdescription
itemdescription,
itemtype
itemtype,
its
itself.
join
join,
joined
joined.
joining
joining.
latency
latency,
latency.
leaving
level.
like
list
local
located
machine
machines
maintain
makes
making
mandatory
manually,
master
match
matchmaking
maximum
maxplayers
maxplayers;
may
measured
measurement
medium,
memory
message
message.
messages
mincaps
mincaps,
minimum
missing
modem
moderator
modified
more
must
name
name,
name.
necessary
necessary.
need
needed
needs
network
new
next
not
null
number
number.
numbered
occurred.
once
one
one.
only
operation
operation.
options
options,
or a phone number to dial without the ability to display user interface screens.
order
out
over
over-the-wire
own
palette
parameter
parameter.
parentwindow
pass
passed
passing
password
password.
path
per
perform
performing
performs
phone
placeholder
played.
player
player,
player.
playerdata
playerdata,
playerdescription
playerdescription,
playerid
playerid,
playername
playername,
players
players.
pointed
pointer
pointers
present
private
probably
procedure
process
process.
processed
processing
product
program
program,
programdata
programdata,
provide
provided
provided,
provider
provider,
provider.
providerid
providerid,
providers
provides
push
query
querying
range
rather
reason
receive
received
received.
receives
recommended
registered.
represent
representing
request
request.
requested
requested.
requesting
required
requirements
response
responsible
result
return
returned
returned.
returns
round-trip
s character class or level.
s interface.
s maximum number of players
same
screens
screens.
second
second,
second.
select
selected
selected.
sending
sent
server
server.
servers.
service
set
should
simply
since
single
size
size,
size;
soon
sound
soundid
speaker
special
specific
specified
specify
specifying
squelched
standard
started
status
string
struct
structure
structure,
structure.
success
successful.
successfully
such
support
supported
supported.
supports
system
system.
systems,
take
than
that
the
their
then
there
this
through
time
time,
transit
turn
turns
two
type
unable
unique
updates.
upgrade
upgraded
use
used
user
user.
uses
using
valid
values:
variable
version
version,
versiondata
versiondata,
waiting
was
when
where
whether
which
will
window
window.
with
without
yet
you
zero
Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

+62
View File
@@ -0,0 +1,62 @@
{\rtf1\ansi \deff4\deflang1033{\fonttbl{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f11\fmodern\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;
\red192\green192\blue192;}{\stylesheet{\widctlpar \f4\fs20 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar \b\f4\fs40 \sbasedon0\snext16 API Title;}{\s16\widctlpar \f4 \sbasedon0\snext16 API Description;}{\s17\widctlpar
\f11\fs22 \sbasedon0\snext17 API Function;}{\s18\widctlpar \b\f4 \sbasedon0\snext16 API Section;}{\s19\li720\widctlpar \f4 \sbasedon0\snext16 API Parameter Description;}{\s20\widctlpar \i\f4 \sbasedon0\snext19 API Parameter Name;}{\s21\widctlpar \f4\fs20
\sbasedon0\snext21 footnote text;}{\*\cs22 \additive\super \sbasedon10 footnote reference;}{\s23\widctlpar\tqc\tx4320\tqr\tx8640 \f4\fs20 \sbasedon0\snext23 header;}{\s24\widctlpar\tqc\tx4320\tqr\tx8640 \f4\fs20 \sbasedon0\snext24 footer;}{\*\cs25
\additive\uldb \sbasedon10 Link Text;}{\*\cs26 \additive\v \sbasedon10 Link Pointer;}{\*\cs27 \additive\sbasedon10 Default Font;}}{\info{\title SNetCreateGame}{\author Mike O'Brien}{\operator Mike O'Brien}{\creatim\yr1996\mo8\dy21\hr16\min18}
{\revtim\yr1996\mo11\dy28\hr2\min33}{\version2}{\edmins0}{\nofpages2}{\nofwords207}{\nofchars1184}{\*\company Blizzard Entertainment}{\vern57431}}\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade \fet0\sectd \linex0\endnhere {\*\pnseclvl1
\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5
\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s15\keepn\widctlpar \b\f4\fs40 Storm Reference
\par \pard\plain \s16\widctlpar \f4
\par {\b SNet API Functions}
\par
\par {\cs25\uldb SNetCreateGame()}{\cs26\v SNetCreateGame}{\cs27
\par }{\cs25\uldb SNetDestroy()}{\cs26\v SNetDestroy}{\cs27
\par }{\cs25\uldb SNetEnumGames()}{\cs26\v SNetEnumGames}{\cs27
\par }{\cs25\uldb SNetEnumProviders()}{\cs26\v SNetEnumProviders}{\cs27
\par }{\cs25\uldb SNetGetNetworkLatency()}{\cs26\v SNetGetNetworkLatency}{\cs27
\par }{\cs25\uldb SNetGetNumPlayers()}{\cs26\v SNetGetNumPlayers}{\cs27
\par }{\cs25\uldb SNetGetPlayerCaps()}{\cs26\v SNetGetPlayerCaps}{\cs27
\par }{\cs25\uldb SNetGetPlayerName()}{\cs26\v SNetGetPlayerName}{\cs27
\par }{\cs25\uldb SNetGetProviderCaps()}{\cs26\v SNetGetProviderCaps}{\cs27
\par }{\cs25\uldb SNetGetTurnsInTransit()}{\cs26\v SNetGetTurnsInTransit}{\cs27
\par }{\cs25\uldb SNetInitializeProvider()}{\cs26\v SNetInitializeProvider}{\cs27
\par }{\cs25\uldb SNetJoinGame()}{\cs26\v SNetJoinGame}{\cs27
\par }{\cs25\uldb SNetLeaveGame()}{\cs26\v SNetLeaveGame}{\cs27
\par }{\cs25\uldb SNetPerformUpgrade()}{\cs26\v SNetPerformUpgrade}{\cs27
\par }{\cs25\uldb SNetReceiveMessage()}{\cs26\v SNetReceiveMessage}{\cs27
\par }{\cs25\uldb SNetReceiveTurns()}{\cs26\v SNetReceiveTurns}{\cs27
\par }{\cs25\uldb SNetRegisterEventHandler()}{\cs26\v SNetRegisterEventHandler}{\cs27
\par }{\cs25\uldb SNetResetLatencyMeasurements()}{\cs26\v SNetResetLatencyMeasurements}{\cs27
\par }{\cs25\uldb SNetSelectGame()}{\cs26\v SNetSelectGame}{\cs27
\par }{\cs25\uldb SNetSelectProvider()}{\cs26\v SNetSelectProvider}{\cs27
\par }{\cs25\uldb SNetSendMessage()}{\cs26\v SNetSendMessage}{\cs27
\par }{\cs25\uldb SNetSendTurn()}{\cs26\v SNetSendTurn}{\cs27
\par }{\cs25\uldb SNetStartGame()}{\cs26\v SNetStartGame}{\cs27
\par }{\cs25\uldb SNetUnregisterEventHandler()}{\cs26\v SNetUnregisterEventHandler}{\cs27
\par }
\par {\b Callback Functions}
\par
\par {\cs25\uldb CheckAuthProc()}{\cs26\v CheckAuthProc}
\par {\cs25\uldb CreateProc()}{\cs26\v CreateProc}
\par {\cs25\uldb DrawDescProc()}{\cs26\v DrawDescProc}{\cs27
\par }{\cs25\uldb EnumGamesProc()}{\cs26\v EnumGamesProc}{\cs27
\par }{\cs25\uldb EnumProvidersProc()}{\cs26\v EnumProvidersProc}{\cs27
\par }{\cs25\uldb EventProc()}{\cs26\v EventProc}{\cs27
\par }{\cs25\uldb GetArtProc()}{\cs26\v GetArtProc}{\cs27
\par }{\cs25\uldb GetDataProc()}{\cs26\v GetDataProc}{\cs27
\par }{\cs25\uldb MessageBoxProc()}{\cs26\v MessageBoxProc}{\cs27
\par }{\cs25\uldb PlaySoundProc()}{\cs26\v PlaySoundProc}{\cs27
\par }{\cs25\uldb StatusProc()}{\cs26\v StatusProc}{\cs27
\par
\par }{\cs27\b Data Structures
\par
\par }{\cs25\uldb SNETCAPS}{\cs26\v SNETCAPS}{\cs27
\par }{\cs25\uldb SNETCREATEDATA}{\cs26\v SNETCREATEDATA}{\cs27
\par }{\cs25\uldb SNETPLAYERDATA}{\cs26\v SNETPLAYERDATA}{\cs27
\par }{\cs25\uldb SNETPROGRAMDATA}{\cs26\v SNETPROGRAMDATA}{\cs27
\par }{\cs25\uldb SNETUIDATA}{\cs26\v SNETUIDATA}{\cs27
\par }{\cs25\uldb SNETVERSIONDATA}{\cs26\v SNETVERSIONDATA}{\cs27
\par }
\par }
Binary file not shown.
+30
View File
@@ -0,0 +1,30 @@
/****************************************************************************
*
* bnetart.h
*
* This file should be included by an application that wants to provide
* battle.net-specific artwork in its art callback.
*
***/
enum _BATTLENET_ART {
SNET_ART_BATTLE_BTNS = 0x80000000,
SNET_ART_BATTLE_CHAT_BKG,
SNET_ART_BATTLE_GREENLAG,
SNET_ART_BATTLE_YELLOWLAG,
SNET_ART_BATTLE_REDLAG,
SNET_ART_BATTLE_CONNECT_BKG,
SNET_ART_BATTLE_SELECT_CHNL_BKG,
SNET_ART_BATTLE_LOGIN_BKG,
SNET_ART_BATTLE_BADCONNECTION,
SNET_ART_BATTLE_WELCOME_AD,
SNET_ART_BATTLE_LRG_EDIT_POPUP_BKG,
};
enum _BATTLENET_DATA {
SNET_DATA_BATTLE_LOGODELAY = 0x80000000, // (DWORD) delay between frames
};
+3330
View File
File diff suppressed because it is too large Load Diff
+3335
View File
File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+142
View File
@@ -0,0 +1,142 @@
*******************************************************************
*** Important information for use with the ***
*** PKWARE Data Compression Library (R) for Win32 ***
*** Copyright 1995 by PKWARE Inc. All Rights Reserved. ***
*** PKWARE Data Compression Library Reg. U.S. Pat. and Tm. Off. ***
*******************************************************************
* The examples provided show how the PKWARE Data Compression Library is
implemented. These examples show how to do "file-to-file" compression,
"memory-to-memory" compression, and disk spanning. We recommend that
you run the examples with a debugger, and set breakpoints in the I/O
callback functions. These functions handle the data I/O, and can be
modified to compress or extract data from any device, not just from a file.
* Visual C++ users
* To build a Visual C++ project, load the Visual Workbench, and open
the .MAK file through the "Open" menu item under "Project." This
will automatically update the makefile to the path of where the
examples are installed.
* To make a VC++ .MAK file, add all the files in the example directory
with the extensions: *.c*, *.rc, *.def, *.lib
* Borland C++ 4.x users
* Borland .IDE files are provided for each example on the distribution
disk. You must set your include and library directories by going into
the OPTIONS | PROJECT | DIRECTORIES window.
* If you are making your own .IDE file, add all the files in the current
directory to the project with the extensions: *.c*, *.rc, *.def, *.lib.
* DLL examples
If you will be using the DLL examples, make sure that IMPLODE.DLL and/or
IMPBORL.DLL is in your user path.
Directory Structure for the examples:
ÀÄÄÄEXAMPLES
ÃÄÄÄCMDLINE
³ ÃÄÄÄFIL2FIL
³ ÃÄÄÄMEM2MEM
³ ÀÄÄÄMULTFILE
ÃÄÄÄGUI
³ ÃÄÄÄFIL2FIL
³ ÀÄÄÄMEM2MEM
ÃÄÄÄMFC
³ ÃÄÄÄFIL2FIL
³ ³ ÀÄÄÄRES
³ ÃÄÄÄMEM2MEM
³ ³ ÀÄÄÄRES
³ ÃÄÄÄMULTFILE
³ ³ ÀÄÄÄRES
³ ÀÄÄÄSPAN
³ ÀÄÄÄRES
ÀÄÄÄOWL
ÃÄÄÄMEM2MEM
ÀÄÄÄSPAN
CMDLINE Examples
----------------
FIL2FIL => This example shows how to compress and uncompress from one
file to another. Requires the TEST.IN file in the executable
directory to run.
MEM2MEM => This example shows how to compress and uncompress from one
memory buffer to another. TEST.IN must be less than 62K bytes.
MULTFILE => This example shows how to compress multiple files into one file,
then uncompress the file. The multiple files must be specified
on the command line.
GUI Examples
------------
FIL2FIL => SDK Windows example. Requires the TEST.IN file in the executable
directory to run.
MEM2MEM => SDK Windows example. Requires the TEST.IN file in the executable
directory to run. This example shows how to compress and
uncompress from one memory buffer to another.
MFC Examples
------------
FIL2FIL => Written using Visual C++ with MFC and the static link library.
Requires the TEST.IN file in the executable directory to run.
This example also contains debugging statements to help display
how the PKWARE Data Compression Library calls the read and write
routines repeatedly.
MEM2MEM => This example shows how to compress and uncompress from one
memory buffer to another. Written using Visual C++ with MFC
(also uses MFC DLL). Prompts for file to load, which must be
less than 62K bytes.
MULTFILE => This example shows how to compress multiple files into one file,
then uncompress the file. Written using Visual C++ with MFC
(also uses MFC DLL).
SPAN => Written using Visual C++ with MFC (also uses MFC DLL). This
example uses MULTFILE as a base, but includes disk spanning.
All files are extracted to a temporary directory, C:\TEMP\.
To change the extract directory, modify the global variable
"UncompressDir" in MAINFRM.CPP.
OWL Examples
------------
MEM2MEM => This example shows how to compress and uncompress from one
memory buffer to another. Written using Borland C++ 4.5 with OWL.
Prompts for file to load, which must be less than 62K bytes.
SPAN => Written using Borland C++ 4.5 with OWL. This example compresses
multiple files and includes disk spanning. All files are
extracted to a temporary directory, C:\TEMP\. To change the
extract directory, modify the global variable "UncompressDir"
in SPANAPP.CPP.
Directions on Using MULTFILE and SPAN Programs:
To compress multiple files: Select Compress Files from the File
menu, and use the Shift and Ctrl keys with the mouse to
highlight multiple files. Select OK after selecting the files.
Enter the path and name of file to compress the selected files
to.
To uncompress a file: Select Uncompress Files from the File menu,
and enter or select the file to uncompress, then select the OK
button. The files will be uncompressed in the same directory.
@@ -0,0 +1,5 @@
:
: Make file for example program using Borland compiler and DLL
:
bcc32 example.c ..\..\..\impborli.lib
@@ -0,0 +1,132 @@
/***************************************************************
PKWARE Data Compression Library (R) for Win32
Copyright 1991,1992,1994,1995 PKWARE Inc. All Rights Reserved.
PKWARE Data Compression Library Reg. U.S. Pat. and Tm. Off.
***************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include "implode.h"
/* Define a structure containing data to be passed to the callback
functions through the user defined parameter.
*/
struct PassedParam
{
unsigned int CmpPhase;
FILE *InFile;
FILE *OutFile;
unsigned long CRC;
};
/*-------------------------------------------------------------------
Routine to supply data to the implode() or explode() routines.
When this routine returns 0 bytes read, the implode() or explode()
routines will terminate. Also calculate the CRC-32 on the original
uncompressed data during the implode() call.
*/
unsigned int ReadData(char *Buff, unsigned int *Size, void *Param)
{
size_t Read;
struct PassedParam *Par = (struct PassedParam *)Param;
Read = fread(Buff, 1, *Size, Par->InFile);
if (Par->CmpPhase)
Par->CRC = crc32(Buff, (unsigned int *)&Read, &Par->CRC);
return (unsigned int)Read;
}
/*-------------------------------------------------------------------
Routine to write compressed data output from implode() or
uncompressed data from explode(). Also calculate the CRC on
the uncompressed data during the explode() call.
*/
void WriteData(char *Buff, unsigned int *Size, void *Param)
{
struct PassedParam *Par = (struct PassedParam *)Param;
fwrite(Buff, 1, *Size, Par->OutFile);
if (!Par->CmpPhase)
Par->CRC = crc32(Buff, Size, &Par->CRC);
}
int cdecl main(void)
{
char *WorkBuff; /* buffer for compression tables */
unsigned int Error;
unsigned int type; /* ASCII or Binary compression */
unsigned int dsize; /* Dictionary Size. 1,2 or 4K */
unsigned long OrgCRC; /* CRC of original input file */
struct PassedParam Param; /* Parameters passed to callback functions */
/* Open the input file */
Param.InFile = fopen("test.in","rb");
if (Param.InFile == NULL)
{
puts("Unable to open input file");
return 1;
}
/* Create the output compressed file */
Param.OutFile = fopen("test.cmp","wb");
/* Allocate memory for implode work buffer */
WorkBuff = (char *)malloc(CMP_BUFFER_SIZE);
if (WorkBuff == NULL)
{
puts("Unable to allocate work buffer");
return 1;
}
/* Initialize CRC */
Param.CmpPhase = 1;
Param.CRC = (unsigned long) -1;
type = CMP_ASCII; /* Use ASCII compression */
dsize = 4096; /* Use 4K dictionary */
puts("Calling Implode");
implode(ReadData, WriteData, WorkBuff, &Param, &type, &dsize);
puts("Done Compressing");
OrgCRC = ~Param.CRC;
free(WorkBuff);
fclose(Param.InFile);
fclose(Param.OutFile);
/* Compression done, now try extracting the compressed file */
WorkBuff = (char *)malloc(EXP_BUFFER_SIZE);
if (WorkBuff == NULL)
{
puts("Unable to allocate work buffer");
return 1;
}
Param.InFile = fopen("test.cmp","rb"); /* Compressed file */
Param.OutFile = fopen("test.ext","wb"); /* File to extract to */
/* Initialize CRC */
Param.CmpPhase = 0;
Param.CRC = (unsigned long) -1;
puts("Calling Explode");
Error = explode(ReadData, WriteData, WorkBuff, &Param);
Param.CRC = ~Param.CRC;
free(WorkBuff);
fclose(Param.InFile);
fclose(Param.OutFile);
printf("Uncompression completed - Error %d\n", Error);
printf("Original CRC=%08lx Uncompressed CRC=%08lx\n",OrgCRC,Param.CRC);
return 0;
}
@@ -0,0 +1,44 @@
/***************************************************************
PKWARE Data Compression Library (R) for Win32
Copyright 1991,1992,1994,1995 PKWARE Inc. All Rights Reserved.
PKWARE Data Compression Library Reg. U.S. Pat. and Tm. Off.
***************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
unsigned int implode(
unsigned int (*read_buf)(char *buf, unsigned int *size, void *param),
void (*write_buf)(char *buf, unsigned int *size, void *param),
char *work_buf,
void *param,
unsigned int *type,
unsigned int *dsize);
unsigned int explode(
unsigned int (*read_buf)(char *buf, unsigned int *size, void *param),
void (*write_buf)(char *buf, unsigned int *size, void *param),
char *work_buf,
void *param);
unsigned long crc32(char *buffer, unsigned int *size, unsigned long *old_crc);
#ifdef __cplusplus
} // End of 'extern "C"' declaration
#endif
#define CMP_BUFFER_SIZE 36312
#define EXP_BUFFER_SIZE 12596
#define CMP_BINARY 0
#define CMP_ASCII 1
#define CMP_NO_ERROR 0
#define CMP_INVALID_DICTSIZE 1
#define CMP_INVALID_MODE 2
#define CMP_BAD_DATA 3
#define CMP_ABORT 4
@@ -0,0 +1,5 @@
:
: Make file for example program
:
cl example.c ..\..\..\implode.lib
@@ -0,0 +1,5 @@
:
: Make file for example program using Borland compiler
:
bcc32 example.c ..\..\..\impborl.lib
@@ -0,0 +1,5 @@
:
: Make file for example program using DLL
:
cl example.c ..\..\..\implodei.lib
@@ -0,0 +1,5 @@
:
: Make file for example program using Borland compiler and DLL
:
bcc32 mem2mem.c ..\..\..\impborli.lib
@@ -0,0 +1,44 @@
/***************************************************************
PKWARE Data Compression Library (R) for Win32
Copyright 1991,1992,1994,1995 PKWARE Inc. All Rights Reserved.
PKWARE Data Compression Library Reg. U.S. Pat. and Tm. Off.
***************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
unsigned int implode(
unsigned int (*read_buf)(char *buf, unsigned int *size, void *param),
void (*write_buf)(char *buf, unsigned int *size, void *param),
char *work_buf,
void *param,
unsigned int *type,
unsigned int *dsize);
unsigned int explode(
unsigned int (*read_buf)(char *buf, unsigned int *size, void *param),
void (*write_buf)(char *buf, unsigned int *size, void *param),
char *work_buf,
void *param);
unsigned long crc32(char *buffer, unsigned int *size, unsigned long *old_crc);
#ifdef __cplusplus
} // End of 'extern "C"' declaration
#endif
#define CMP_BUFFER_SIZE 36312
#define EXP_BUFFER_SIZE 12596
#define CMP_BINARY 0
#define CMP_ASCII 1
#define CMP_NO_ERROR 0
#define CMP_INVALID_DICTSIZE 1
#define CMP_INVALID_MODE 2
#define CMP_BAD_DATA 3
#define CMP_ABORT 4
@@ -0,0 +1,5 @@
:
: Make file for example program
:
cl mem2mem.c ..\..\..\implode.lib
@@ -0,0 +1,5 @@
:
: Make file for example program using Borland compiler
:
bcc32 mem2mem.c ..\..\..\impborl.lib
@@ -0,0 +1,5 @@
:
: Make file for example program using DLL
:
cl mem2mem.c ..\..\..\implodei.lib
@@ -0,0 +1,286 @@
/*************************************************************************
Example to interface the PKWARE Data Compression Library (R)
Copyright 1995 PKWARE Inc. All Rights Reserved.
PKWARE Data Compression Library Reg. U.S. Pat. and Tm. Off
Version 1.11
This example takes a file from the disk (file must be <= 62K),
compresses the file to memory, and then expands the compressed
data back into another memory buffer. This data is then written
to a file called test.ext, that can be compared to the original file.
*************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "implode.h"
#define BUFFERSIZE ((long)(62 * 1024)) /* File size limit */
#define FALSE 0
#define TRUE (!FALSE)
typedef struct PassedParam
{
char *pSource; /* Pointer to source buffer */
char *pDestination; /* Pointer to destination buffer */
unsigned long SourceOffset; /* Offset into the source buffer */
unsigned long DestinationOffset; /* Offset into the destination buffer */
unsigned long CompressedSize; /* Need this for extracting! */
unsigned long UnCompressedSize; /* Size of uncompressed data file */
unsigned long BufferSize;
unsigned long Crc; /* Calculated CRC value */
unsigned long OrigCrc; /* Original CRC value of data */
} PARAM;
/*
** BufferSize defines the maximum size allowed for output of compressed
** data from implode(), or uncompressed data from explode(). Notice that
** if you are compressing files that compress to a size greater than
** BufferSize, an error message will result. You can modify the value of
** BufferSize if you need a bigger buffer. If you know your maximum file
** size, you can adjust BUFFERSIZE. This will allow for larger, or smaller
** maximum values of BufferSize.
*/
/* Routine to read uncompressed data. Used only by implode().
** This routine reads the data that is to be compressed.
*/
unsigned int
ReadUnCompressed(char *buff, unsigned int *size, void *Param)
{
PARAM *Ptr = (PARAM *) Param;
if (Ptr->UnCompressedSize == 0L)
{
/* This will terminate the compression or extraction process */
return(0);
}
if (Ptr->UnCompressedSize < (unsigned long)*size)
{
*size = (unsigned int)Ptr->UnCompressedSize;
}
memcpy(buff, Ptr->pSource + Ptr->SourceOffset, *size);
Ptr->SourceOffset += (unsigned long)*size;
Ptr->UnCompressedSize -= (unsigned long)*size;
Ptr->Crc = crc32(buff, size, &Ptr->Crc);
return(*size);
}
/* Routine to read compressed data. Used only by explode().
** This routine reads the compressed data that is to be uncompressed.
*/
unsigned int
ReadCompressed(char *buff, unsigned int *size, void *Param)
{
PARAM *Ptr = (PARAM *) Param;
if (Ptr->CompressedSize == 0L)
{
/* This will terminate the compression or extraction process */
return(0);
}
if (Ptr->CompressedSize < (unsigned long)*size)
{
*size = (unsigned int)Ptr->CompressedSize;
}
memcpy(buff, Ptr->pSource + Ptr->SourceOffset, *size);
Ptr->SourceOffset += (unsigned long)*size;
Ptr->CompressedSize -= (unsigned long)*size;
return(*size);
}
/* Routime to write compressed data. Used only by implode().
** This routine writes the compressed data to a memory buffer.
*/
void
WriteCompressed(char *buff, unsigned int *size, void *Param)
{
PARAM *Ptr = (PARAM *) Param;
if (Ptr->CompressedSize + (unsigned long)*size > Ptr->BufferSize)
{
puts("Compressed data will overflow buffer. Increase size of buffer!");
exit(1);
}
memcpy(Ptr->pDestination + Ptr->DestinationOffset, buff, *size);
Ptr->DestinationOffset += (unsigned long)*size;
Ptr->CompressedSize += (unsigned long)*size;
}
/* Routine to write uncompressed data. Used only by explode().
** This routine writes the uncompressed data to a memory buffer.
*/
void
WriteUnCompressed(char *buff, unsigned int *size, void *Param)
{
PARAM *Ptr = (PARAM *) Param;
if (Ptr->CompressedSize + (unsigned long)*size > Ptr->BufferSize)
{
puts("Compressed data will overflow buffer. Increase size of buffer!");
exit(1);
}
memcpy(Ptr->pDestination + Ptr->DestinationOffset, buff, *size);
Ptr->DestinationOffset += (unsigned long)*size;
Ptr->UnCompressedSize += (unsigned long)*size;
Ptr->Crc = crc32(buff, size, &Ptr->Crc);
}
void
main(int argc, char *argv[])
{
char *WorkBuff; /* Buffer for compression tables */
char *InFileName;
char *temp;
unsigned int error;
unsigned int bytes_read;
unsigned int type;
unsigned int dsize;
unsigned int written;
PARAM Param;
FILE *InFile;
FILE *OutFile;
/* Use the first command line argument as the name of the file
** to read as the data source. If no filename is given, default
** to use "test.in"
*/
if (argc > 1)
{
InFileName = argv[1];
}
else
{
InFileName = "test.in";
}
/* Open the file so it's contents can be read into memory. */
if ((InFile = fopen(InFileName, "rb")) == NULL)
{
puts("Unable to open input file.");
exit(1);
}
/* Determine the size of the file, and rewind to beginning of file. */
if (fseek(InFile, 0L, SEEK_END))
{
puts("Unable to determine input file size.");
exit(1);
}
Param.UnCompressedSize = ftell(InFile);
fseek(InFile, 0L, SEEK_SET);
if (Param.UnCompressedSize > BUFFERSIZE)
{
fclose(InFile);
printf("Cannot compress files larger than %d.\n",BUFFERSIZE);
exit(1);
}
Param.BufferSize = Param.UnCompressedSize;
Param.CompressedSize = 0L;
/* Allocate memory buffers to hold the compressed and uncompressed
** contents of the data file.
*/
Param.pSource = (char *)malloc(Param.BufferSize);
Param.pDestination = (char *)malloc(Param.BufferSize);
/* We make the destination buffer the same size as the source buffer.
** You should determine what compression ratios you achieve with your
** specific data. You may only need a destination buffer about one half
** the size of the source buffer (assuming 50% compression).
*/
if (Param.pSource == NULL || Param.pDestination == NULL)
{
puts("Unable to allocate source & destination buffers.");
exit(1);
}
/* Read the contents of the file into the uncompressed data buffer. */
fread((void *)Param.pSource, 1, Param.UnCompressedSize, InFile);
fclose(InFile);
/* Allocate the buffer used by implode() for compression tables. */
WorkBuff = (char *)malloc(CMP_BUFFER_SIZE);
if (WorkBuff == NULL)
{
puts("Unable to allocate work buffer.");
return;
}
puts("Calling Implode");
type = CMP_ASCII;
dsize = 1024;
Param.SourceOffset = 0L;
Param.DestinationOffset = 0L;
Param.Crc = (unsigned long) -1;
implode(ReadUnCompressed,WriteCompressed,WorkBuff,&Param,&type,&dsize);
Param.OrigCrc = ~Param.Crc;
free(WorkBuff);
/* Since the imploding is done, the data in the compressed buffer
** will be used as the source for the exploding process.
*/
temp = Param.pSource;
Param.pSource = Param.pDestination;
Param.pDestination = temp;
/* Clear buffer containing original uncompressed data */
memset(Param.pDestination, 0, Param.UnCompressedSize);
/* Allocate the buffer used by explode() for compression tables. */
WorkBuff = (char *)malloc(EXP_BUFFER_SIZE);
if (WorkBuff == NULL)
{
puts("Unable to allocate work buffer.");
return;
}
Param.SourceOffset = 0L;
Param.DestinationOffset = 0L;
Param.UnCompressedSize = 0L;
Param.Crc = (unsigned long) -1;
/* Now try extracting the compressed file data */
puts("Calling Explode");
error = explode(ReadCompressed,WriteUnCompressed,WorkBuff,&Param);
Param.Crc = ~Param.Crc;
if (error || (Param.Crc != Param.OrigCrc))
{
puts("Error in compressed data!");
}
printf("Original CRC=%lx Uncompressed CRC=%lx\n",Param.OrigCrc, Param.Crc);
/* The uncompressed data is now in pDestination. Lets write this to a file
** called test.ext. We can compare this buffer to the original input file.
*/
if ((OutFile = fopen("test.ext", "wb+")) == NULL)
{
puts("Unable to open output file.");
}
else
{
fwrite((void *)Param.pDestination, 1, Param.UnCompressedSize, OutFile);
fclose(OutFile);
}
/* Free buffers */
free(WorkBuff);
free(Param.pSource);
free(Param.pDestination);
}
@@ -0,0 +1,5 @@
:
: Make file for example program using Borland compiler and DLL
:
bcc32 multfile.c ..\..\..\impborli.lib
@@ -0,0 +1,44 @@
/***************************************************************
PKWARE Data Compression Library (R) for Win32
Copyright 1991,1992,1994,1995 PKWARE Inc. All Rights Reserved.
PKWARE Data Compression Library Reg. U.S. Pat. and Tm. Off.
***************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
unsigned int implode(
unsigned int (*read_buf)(char *buf, unsigned int *size, void *param),
void (*write_buf)(char *buf, unsigned int *size, void *param),
char *work_buf,
void *param,
unsigned int *type,
unsigned int *dsize);
unsigned int explode(
unsigned int (*read_buf)(char *buf, unsigned int *size, void *param),
void (*write_buf)(char *buf, unsigned int *size, void *param),
char *work_buf,
void *param);
unsigned long crc32(char *buffer, unsigned int *size, unsigned long *old_crc);
#ifdef __cplusplus
} // End of 'extern "C"' declaration
#endif
#define CMP_BUFFER_SIZE 36312
#define EXP_BUFFER_SIZE 12596
#define CMP_BINARY 0
#define CMP_ASCII 1
#define CMP_NO_ERROR 0
#define CMP_INVALID_DICTSIZE 1
#define CMP_INVALID_MODE 2
#define CMP_BAD_DATA 3
#define CMP_ABORT 4
@@ -0,0 +1,5 @@
:
: Make file for example program
:
cl multfile.c ..\..\..\implode.lib
@@ -0,0 +1,5 @@
:
: Make file for example program using Borland compiler
:
bcc32 multfile.c ..\..\..\impborl.lib
@@ -0,0 +1,5 @@
:
: Make file for example program using DLL
:
cl multfile.c ..\..\..\implodei.lib
@@ -0,0 +1,479 @@
/*************************************************************************
Example to interface the PKWARE Data Compression Library (R)
Copyright 1995 PKWARE Inc. All Rights Reserved.
PKWARE Data Compression Library Reg. U.S. Pat. and Tm. Off
Version 1.11
This example compresses a set of one or more files into a single
output file. The set of files is taken from the command line. Each
file is compressed, and written to the output file. A record
holding information for each file is written to the output file along
with the compressed data. The name of the compressed output file
created by this program is PKWDCL.CMP.
**************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include "implode.h"
#define BUFSIZE 2048 /* Work buffer */
#define TEMPNAME "PKWDCL.TMP" /* Temporary file */
#define COMPRESSED_FILE_NAME "PKWDCL.CMP" /* Name of compressed output file */
#define FALSE 0
#define TRUE (!FALSE)
/*
** Structure definitions
*/
typedef struct FileHeader
{
char signature[4]; /* Signature in case of errors */
char filename[13]; /* File name */
unsigned long CompSize; /* Compressed size of file */
unsigned long UnCompSize; /* Original size of file */
unsigned long Crc; /* Crc value for file */
} HEADER;
/*
** This structure will be written to the compressed output file and
** will record information for each input file that is compressed
** into the output file.
*/
typedef struct PassedParam
{
FILE *InFile; /* Pointer to file for reading data */
FILE *OutFile; /* Pointer to file for writing data */
FILE *Destination; /* Pointer to compressed output file */
int Imploding; /* Flag indicating compression or */
/* uncompression is in progress. */
unsigned long Crc; /* CRC value for current file. */
unsigned long OrigCrc; /* Original CRC for a file */
unsigned long CompressedFileSize; /* Size of compressed file */
unsigned long UnCompressedFileSize;/* Original file size */
} PARAM;
/*
** This structure is used to pass values shared between the main
** application and the callback functions called by implode() and
** explode().
*/
/*
** Function Prototypes
*/
unsigned long FileSize(FILE *);
void ReadHeader(FILE *, HEADER *);
void SkipFile(FILE *, unsigned long);
void Expand(char *,int);
void CompressFile(char *, char *, PARAM *);
void AppendFile(FILE *,unsigned long);
void WriteHeader(char *, PARAM *);
void Compress(char *,int, char **);
/* The ReadBuff function is used by the implode() and explode()
** functions to read a stream of data that will be either
** compressed, or uncompressed.
*/
unsigned int
ReadBuff(char *buff, unsigned int *size, void *Param)
{
PARAM *Ptr = (PARAM *) Param;
unsigned int Read = 0;
/* This function may ask for up to 4K of data at a time. If your archive
** file contains several compressed files, you may read too much. For
** example, your first compressed file in the archive may be 100 bytes.
** So you do not want to read more than 100 bytes or you'll be unable to
** uncompress the second file, since you will not be located at the
** beginning of the file any longer. We will use the variable
** "CompressedFileSize" to check for this condition.
*/
if (Ptr->Imploding == FALSE)
{
/* If we are exploding data, and the number of bytes left in the
** compressed file is less than the number of bytes requested, then
** set the number of bytes requested to the bytes remaining in the
** compressed file.
*/
/* Set size to bytes left */
if ((unsigned long)*size > Ptr->CompressedFileSize)
{
*size = (unsigned)Ptr->CompressedFileSize;
}
/* Subtract the number of bytes read from the total size of the
** compressed file.
*/
Ptr->CompressedFileSize -= (unsigned long)*size;
}
/* Read 'size' bytes from input source */
Read = fread(buff, 1, *size, Ptr->InFile);
if (Ptr->Imploding == FALSE)
{
/* Check the CRC value of data as it's uncompressed. */
Ptr->Crc = crc32(buff, &Read, &Ptr->Crc);
}
/* Return the number of bytes read from the input source */
return(Read);
}
/* The WriteBuff function is used by the implode() and explode()
** functions to write a stream of data that has been either
** compressed, or uncompressed.
*/
void
WriteBuff(char *buff, unsigned int *size, void *Param)
{
/* If compressing data, add the number of bytes to 'CompressedFileSize'.
** We need to keep track of the size of the compressed file.
*/
PARAM *Ptr = (PARAM *) Param;
int Written;
if (Ptr->Imploding)
{
Ptr->CompressedFileSize += (unsigned long)*size;
}
/* Write the data to the file. If we are Imploding, this is compressed
** data. Otherwise it is uncompressed data.
*/
Written = fwrite((void *)buff, 1, *size, Ptr->OutFile);
if (Written != *size)
{
puts("Failed to write compressed data");
}
if (Ptr->Imploding == TRUE)
{
/* Calculate the CRC value of data as it's compressed. */
Ptr->Crc = crc32(buff, size, &Ptr->Crc);
}
}
/* The ReadHeader function is used to read a HEADER data structure
** from the compressed output file. This HEADER record contains the
** information about the compressed file.
*/
void
ReadHeader(FILE *pFile, HEADER *header)
{
fread(header, 1, sizeof(HEADER), pFile);
}
/* The SkipFile function is used to skip over a file that is in
** the compressed output file if that file is not to be uncompressed.
*/
void
SkipFile(FILE *pFile, unsigned long Size)
{
fseek(pFile, Size, SEEK_CUR);
}
/* The FileSize function is used to determine the number of
** bytes in a file that is to be compressed.
*/
unsigned long
FileSize(FILE *pFile)
{
unsigned long Size;
if (fseek(pFile, 0L, SEEK_END))
{
puts("Unable to determine input file size.");
}
Size = ftell(pFile);
fseek(pFile, 0L, SEEK_SET);
return(Size);
}
/* The Expand function is used to uncompress the files that were
** written to the compressed output file. A prompt is displayed
** for each file allowing the user to skip the file if it is not
** to be uncompressed.
*/
void
Expand(char *WorkBuff, int Files)
{
HEADER header;
PARAM Param;
int error;
int i;
int FileCount;
char ch;
char s[80];
memset( &Param, 0, sizeof(Param) );
Param.InFile = fopen(COMPRESSED_FILE_NAME, "rb");
if (Param.InFile == NULL)
{
printf("Unable to open compressed output file %s\n",COMPRESSED_FILE_NAME);
}
for (FileCount = 1; FileCount < Files; FileCount++)
{
Param.CompressedFileSize = 0L;
ReadHeader(Param.InFile,&header);
/* Display a message and ask if you wish to extract this file */
sprintf(s,"Extract file %s ? File is %lu bytes. (Y/N)",
header.filename, header.UnCompSize);
puts(s);
/* We need to remember how many bytes are in this compressed data
** stream. We don't want to read too many bytes.
*/
Param.CompressedFileSize = header.CompSize;
Param.OrigCrc = header.Crc;
Param.Imploding = FALSE;
do
{
ch = toupper(getchar());
}
while(ch != 'Y' && ch != 'N');
if (ch == 'Y')
{
/* If the file is to be uncompressed, create new, empty file
** of the same name where the uncompressed contents of the
** file will be written.
*/
Param.OutFile = fopen(header.filename, "wb+");
if (Param.OutFile == NULL)
{
printf("Unable to open output data file %s\n",header.filename);
/* Skip past this file and go on to the next one. */
SkipFile(Param.InFile,Param.CompressedFileSize);
}
else
{
/* Call explode to uncompress the file. */
Param.Crc = (unsigned long) -1;
error = explode(ReadBuff,WriteBuff,WorkBuff,&Param);
Param.Crc = ~Param.Crc;
if (error || (Param.OrigCrc != Param.Crc))
{
printf("Error in compressed file %s!\n",header.filename);
}
printf("Expanding file %s Original CRC = %lx Uncompressed CRC = %lx\n",header.filename,Param.OrigCrc,Param.Crc);
/* Close the file we just created */
fclose(Param.OutFile);
}
}
else
{
/* Skip past this file and go on to the next one. */
SkipFile(Param.InFile,Param.CompressedFileSize);
}
}
fclose(Param.InFile);
}
/* The CompressFile function is used to compress a file into a
** temporary file.
*/
void
CompressFile(char *file, char *WorkBuff, PARAM *Param)
{
unsigned int type; /* Compression type */
unsigned int dsize; /* Dictionary size */
/* Set the compression type to BINARY compression */
type = CMP_BINARY;
/* Set the compression dictionary size to 4K */
dsize = 4096;
/* Open the file to be compressed. */
Param->InFile = fopen(file, "rb");
if (Param->InFile == NULL)
{
puts("Unable to open input file");
return;
}
/* Open the temporary file where the compressed data will be written. */
Param->OutFile = fopen(TEMPNAME, "wb+");
if (Param->OutFile == NULL)
{
printf("Unable to open temporary output file %s\n",Param->OutFile);
}
else
{
Param->Crc = (unsigned long) -1;
Param->UnCompressedFileSize = FileSize(Param->InFile);
/* Call implode() to compress the file. */
implode(ReadBuff,WriteBuff,WorkBuff,Param,&type,&dsize);
printf("Compressing file %s", file);
printf(" File size = %ld bytes Compressed size = %ld bytes\n",
Param->UnCompressedFileSize,Param->CompressedFileSize);
/* Close the temp file and the file being compressed */
Param->OrigCrc = ~Param->Crc;
fclose(Param->InFile);
fclose(Param->OutFile);
}
}
/* The AppendFile function is used to copy the compressed data from
** the temporary file to the compressed output file after the
** header record for the file has been written.
*/
void
AppendFile(FILE *pDest,unsigned long Size)
{
char buf[BUFSIZE];
unsigned long left;
unsigned int Read;
unsigned int written;
FILE *pFile;
/* Keep track of the number of bytes that need to be appended */
left = Size;
/* Open the temporary file containing the compressed input file
** data. The contents of this file are then written to the
** final output file.
*/
if ((pFile = fopen(TEMPNAME, "rb")) != NULL)
{
do
{
Read = fread(buf, 1, BUFSIZE, pFile);
written = fwrite(buf, 1, Read, pDest);
left -= (unsigned long)written;
}
while (left && written);
fclose(pFile);
}
else
{
printf("Unable to open temporary file %s\n",TEMPNAME);
}
}
/* The WriteHeader function is used to format and write the
** record header for each file compressed into the compressed
** output file.
*/
void
WriteHeader(char *filename, PARAM *Param)
{
HEADER header;
int Written;
/* Save the filename and compressed file size in the structure */
strcpy(header.filename, filename);
header.CompSize = Param->CompressedFileSize;
header.UnCompSize = Param->UnCompressedFileSize;
header.Crc = Param->OrigCrc;
/* Save a signature, can be used to help rebuild a damaged file */
header.signature[0] = 'D';
header.signature[1] = 'H';
header.signature[2] = 9;
header.signature[3] = 2;
/* Write the data to the compressed archive file */
Written = fwrite(&header, 1, sizeof(HEADER), Param->Destination);
if (Written != sizeof(HEADER))
{
puts("Failed to write compressed file header record.");
}
}
/* The Compress function is used to compress each file specified
** on the command line.
*/
void
Compress(char *WorkBuff, int Files, char** FileList)
{
PARAM Param;
int FileCount;
memset( &Param, 0, sizeof(Param) );
/* Open the file that will be the final output file for all
** of the compressed input files.
*/
Param.Destination = fopen(COMPRESSED_FILE_NAME, "wb+");
if (Param.Destination == NULL)
{
printf("Unable to open compressed output file %s\n",COMPRESSED_FILE_NAME);
}
else
{
/* For each file specified on the command line, compress the file,
** write a header record for the file, then write the compressed
** file data to the output file.
*/
for (FileCount = 1; FileCount < Files; FileCount++)
{
Param.Imploding = TRUE;
Param.CompressedFileSize = 0L;
Param.OrigCrc = 0L;
CompressFile(FileList[FileCount], WorkBuff,&Param);
WriteHeader(FileList[FileCount], &Param);
AppendFile(Param.Destination,Param.CompressedFileSize);
}
if( Param.InFile )
fclose(Param.InFile);
fclose(Param.Destination);
unlink(TEMPNAME);
}
}
/* The main function simply allocates a work buffer needed for
** calling the implode() and explode() functions, and then
** calls the functions will compress and uncompress the
** files specified on the commandline.
*/
int
main(int argc, char *argv[])
{
char *WorkBuff; /* Buffer for compression tables */
if( argc < 2 )
{
printf( "Usage: multfile filename(s)\n" );
return 0;
}
/* Allocate the memory needed for implode(). The explode() routine
** will use this same buffer, although it can generally use a
** smaller sized buffer.
*/
WorkBuff = (char *)malloc(CMP_BUFFER_SIZE);
if (WorkBuff == NULL)
{
puts("Unable to allocate work buffer");
return 1;
}
Compress(WorkBuff,argc,argv); /* Call Compress, pass the allocated memory */
Expand(WorkBuff,argc); /* Call Expand, pass the allocated memory. */
free(WorkBuff); /* Free the allocated memory */
return 0;
}
@@ -0,0 +1,44 @@
/***************************************************************
PKWARE Data Compression Library (R) for Win32
Copyright 1991,1992,1994,1995 PKWARE Inc. All Rights Reserved.
PKWARE Data Compression Library Reg. U.S. Pat. and Tm. Off.
***************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
unsigned int implode(
unsigned int (*read_buf)(char *buf, unsigned int *size, void *param),
void (*write_buf)(char *buf, unsigned int *size, void *param),
char *work_buf,
void *param,
unsigned int *type,
unsigned int *dsize);
unsigned int explode(
unsigned int (*read_buf)(char *buf, unsigned int *size, void *param),
void (*write_buf)(char *buf, unsigned int *size, void *param),
char *work_buf,
void *param);
unsigned long crc32(char *buffer, unsigned int *size, unsigned long *old_crc);
#ifdef __cplusplus
} // End of 'extern "C"' declaration
#endif
#define CMP_BUFFER_SIZE 36312
#define EXP_BUFFER_SIZE 12596
#define CMP_BINARY 0
#define CMP_ASCII 1
#define CMP_NO_ERROR 0
#define CMP_INVALID_DICTSIZE 1
#define CMP_INVALID_MODE 2
#define CMP_BAD_DATA 3
#define CMP_ABORT 4
@@ -0,0 +1 @@
nmake makefile.msc
@@ -0,0 +1 @@
nmake makefdll.msc
@@ -0,0 +1,18 @@
ALL : WinDCL.exe
WinDCL.res : WinDCL.rc resource.h
rc -r WinDCL.rc
WinDCL.obj : WinDCL.c WinDCL.h
cl -c /D "_X86_" /D "WIN32" WinDCL.c
# rc WinDCL.res
LINK32_OBJS= \
WINDCL.res \
WINDCL.OBJ \
WinDcl.exe : WinDCL.res WinDCL.obj
link /SUBSYSTEM:windows /INCREMENTAL:no /MACHINE:I386 /OUT:"windcl.exe" \
$(LINK32_OBJS) ..\..\..\IMPLODEI.LIB
@@ -0,0 +1,18 @@
ALL : WinDCL.exe
WinDCL.res : WinDCL.rc resource.h
rc -r WinDCL.rc
WinDCL.obj : WinDCL.c WinDCL.h
cl -c /D "_X86_" /D "WIN32" WinDCL.c
# rc WinDCL.res
LINK32_OBJS= \
WINDCL.res \
WINDCL.OBJ \
WinDcl.exe : WinDCL.res WinDCL.obj
link /SUBSYSTEM:windows /INCREMENTAL:no /MACHINE:I386 /OUT:"windcl.exe" \
$(LINK32_OBJS) ..\..\..\IMPLODE.LIB
@@ -0,0 +1,2 @@
#define IDM_TEST_DCL 1000
Binary file not shown.
+247
View File
@@ -0,0 +1,247 @@
/*
*******************************************************************
*** Important information for use with the ***
*** PKWARE Data Compression Library (R) for Win32 ***
*** Copyright 1994,1995 by PKWARE Inc. All Rights Reserved. ***
*** PKWARE Data Compression Library Reg. U.S. Pat. and Tm. Off. ***
*******************************************************************
*/
#include <windows.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include "resource.h"
#include "WinDCL.h"
#include "implode.h"
void TestDLL(void);
#ifndef _MSC_VER
#pragma argsused
#endif
int PASCAL WinMain(HANDLE hInstance, HANDLE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
{
WNDCLASS wndclass;
MSG msg;
// Get rid of any compiler warnings
lpszCmdLine = lpszCmdLine;
hInst = hInstance;
// Register the DCL Test window Class
if(!hPrevInstance)
{
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInst;
wndclass.hIcon = LoadIcon(hInst, "WinDCL");
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wndclass.lpszMenuName = "WinDCL";
wndclass.lpszClassName = "WinDCL";
if (!RegisterClass(&wndclass))
return FALSE;
}
// create Main window
hWndMain = CreateWindow(
"WinDCL",
"DCL Example", // no title
WS_CAPTION | // Title and Min/Max
WS_SYSMENU | // Add system menu box
WS_MINIMIZEBOX | // Add minimize box
WS_MAXIMIZEBOX | // Add maximize box
WS_THICKFRAME | // thick sizeable frame
WS_CLIPCHILDREN | // don't draw in child windows areas
WS_VISIBLE | // window created visible
WS_OVERLAPPED,
CW_USEDEFAULT, 0, // Use default X, Y
CW_USEDEFAULT, 0, // Use default X, Y
NULL, // Parent window's handle
NULL, // Default to Class Menu
hInst, // Instance of window
NULL); // Create struct for WM_CREATE
// Did the Create Work??
if(hWndMain == NULL)
return 0;
ShowWindow(hWndMain, nCmdShow);
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
switch (Message)
{
case WM_COMMAND:
if (wParam == IDM_TEST_DCL)
TestDLL();
break;
case WM_CLOSE:
DestroyWindow(hWnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, Message, wParam, lParam);
}
return 0L;
}
UINT ProcessInBuffer(PCHAR buffer, UINT *iSize, void *pParam)
{
LPIOFILEBLOCK lpFileIOBlock;
unsigned int iRead;
lpFileIOBlock = (LPIOFILEBLOCK) pParam;
iRead = fread(buffer, 1, *iSize, lpFileIOBlock->InFile );
if( iRead > 0 && lpFileIOBlock->bDoCRC == DO_CRC_INSTREAM )
lpFileIOBlock->dwCRC = crc32(buffer, &iRead, &lpFileIOBlock->dwCRC);
return iRead;
}
void ProcessOutBuffer(PCHAR buffer, UINT *iSize, void *pParam)
{
LPIOFILEBLOCK lpFileIOBlock;
unsigned int iWrite;
lpFileIOBlock = (LPIOFILEBLOCK) pParam;
iWrite = fwrite( buffer, 1, *iSize, lpFileIOBlock->OutFile );
if( lpFileIOBlock->bDoCRC == DO_CRC_OUTSTREAM )
lpFileIOBlock->dwCRC = crc32(buffer, &iWrite, &lpFileIOBlock->dwCRC);
}
void TestDLL()
{
int iStatus;
char szVerbose[128];
IOFILEBLOCK FileIOBlock;
HGLOBAL hWorkBuff;
PCHAR pWorkBuff;
unsigned int type; /* ASCII or Binary compression */
unsigned int dsize; /* Dictionary Size. 1,2 or 4K */
type = CMP_ASCII; /* Use ASCII compression */
dsize = 4096; /* Use 4K dictionary */
// allocate the memory block for the scratch pad
if( (hWorkBuff = GlobalAlloc(GHND, CMP_BUFFER_SIZE)) == NULL )
{
return;
}
if ((pWorkBuff = (LPSTR) GlobalLock(hWorkBuff)) == NULL)
{
GlobalFree(hWorkBuff);
return;
}
// setup structure used by ProcessReadBuffer() and ProcessWriteBuffer()
FileIOBlock.InFile = fopen( "Test.in", "rb" );
FileIOBlock.OutFile = fopen( "Test.cmp", "wb" );
FileIOBlock.bDoCRC = DO_CRC_INSTREAM;
FileIOBlock.dwCRC = ~((DWORD)0); // Pre-condition CRC
if( (FileIOBlock.InFile != NULL) && (FileIOBlock.OutFile != NULL) )
{
MessageBox(NULL, "Ready to implode", "Notice", MB_OK);
iStatus = implode(ProcessInBuffer,
ProcessOutBuffer,
pWorkBuff,
&FileIOBlock,
&type, &dsize );
if( iStatus != 0 )
{
wsprintf(szVerbose, "Implode Error: %d", iStatus );
MessageBox(NULL, szVerbose, "Error", MB_OK);
}
else
{
// Post-condition CRC
if (FileIOBlock.bDoCRC == DO_CRC_INSTREAM)
{
FileIOBlock.dwCRC = ~FileIOBlock.dwCRC;
wsprintf(szVerbose, "CRC of input file: %lX", FileIOBlock.dwCRC);
MessageBox(NULL, szVerbose, "Notice", MB_OK);
}
}
fclose(FileIOBlock.OutFile);
fclose(FileIOBlock.InFile);
if( iStatus == 0 )
{
// setup structure used by ProcessReadBuffer() and ProcessWriteBuffer()
FileIOBlock.InFile = fopen( "Test.cmp", "rb" );
FileIOBlock.OutFile = fopen( "Test.ext", "wb" );
FileIOBlock.bDoCRC = DO_CRC_OUTSTREAM;
FileIOBlock.dwCRC = ~((DWORD)0); // Pre-condition CRC
MessageBox(NULL, "Ready to explode", "Notice", MB_OK);
iStatus = explode(ProcessInBuffer,
ProcessOutBuffer,
pWorkBuff,
&FileIOBlock );
if( iStatus != 0 )
{
wsprintf(szVerbose, "Explode Error: %d", iStatus );
MessageBox(NULL, szVerbose, "Error", MB_OK);
}
else
{
// Post-condition CRC
if (FileIOBlock.bDoCRC == DO_CRC_OUTSTREAM)
{
FileIOBlock.dwCRC = ~FileIOBlock.dwCRC;
wsprintf(szVerbose, "CRC of exploded file: %lX", FileIOBlock.dwCRC);
MessageBox(NULL, szVerbose, "Notice", MB_OK);
}
}
fclose(FileIOBlock.OutFile);
fclose(FileIOBlock.InFile);
}
}
else
{
if( FileIOBlock.InFile != NULL )
{
fclose( FileIOBlock.InFile );
}
if( FileIOBlock.OutFile != NULL )
{
fclose( FileIOBlock.OutFile );
}
MessageBox(NULL, "The file TEST.IN must be in the current directory", "Error", MB_OK);
}
GlobalUnlock(hWorkBuff);
GlobalFree(hWorkBuff);
}
@@ -0,0 +1,26 @@
/*
*******************************************************************
*** Important information for use with the ***
*** PKWARE Data Compression Library (R) for Win32 ***
*** Copyright 1994,1995 by PKWARE Inc. All Rights Reserved. ***
*** PKWARE Data Compression Library Reg. U.S. Pat. and Tm. Off. ***
*******************************************************************
*/
#define DO_CRC_INSTREAM 1
#define DO_CRC_OUTSTREAM 2
#define WM_FAILEDVALIDATE (WM_USER + 1)
typedef struct IOFILEBLOCK {
FILE *InFile;
FILE *OutFile;
BOOL bDoCRC;
DWORD dwCRC;
}IOFILEBLOCK, *LPIOFILEBLOCK;
HWND hInst;
HWND hWndMain;
LRESULT CALLBACK WndProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam);
Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

Binary file not shown.
@@ -0,0 +1,9 @@
#include "resource.h"
WinDcl ICON "WinDcl.ico"
WinDCL MENU
BEGIN
MENUITEM "&Test DCL", IDM_TEST_DCL
END

Some files were not shown because too many files have changed in this diff Show More