GLOBALS.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:11k
源码类别:

Windows编程

开发平台:

Visual C++

  1. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  2. // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  3. // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  4. // PARTICULAR PURPOSE.
  5. //
  6. // Copyright (C) 1993-1997  Microsoft Corporation.  All Rights Reserved.
  7. //
  8. // PURPOSE:
  9. //    Contains declarations for all globally scoped names in the program.
  10. //
  11. #include <nspapi.h>
  12. #include <wsipx.h>
  13. //-------------------------------------------------------------------------
  14. // Product identifier string defines
  15. #define APPNAME       GlobChat
  16. //-------------------------------------------------------------------------
  17. // Functions for handling main window messages.  The message-dispatching
  18. // mechanism expects all message-handling functions to have the following
  19. // prototype:
  20. //
  21. //     LRESULT FunctionName(HWND, UINT, WPARAM, LPARAM);
  22. LRESULT MsgCreate(HWND, UINT, WPARAM, LPARAM);
  23. LRESULT MsgSize(HWND, UINT, WPARAM, LPARAM);
  24. LRESULT MsgTimer(HWND, UINT, WPARAM, LPARAM);
  25. LRESULT MsgCommand(HWND, UINT, WPARAM, LPARAM);
  26. LRESULT MsgDestroy(HWND, UINT, WPARAM, LPARAM);
  27. LRESULT MsgConnected(HWND, UINT, WPARAM, LPARAM);
  28. LRESULT MsgDataready(HWND, UINT, WPARAM, LPARAM);
  29. //-------------------------------------------------------------------------
  30. // Functions for handling main window commands--ie. functions for
  31. // processing WM_COMMAND messages based on the wParam value.
  32. // The message-dispatching mechanism expects all command-handling
  33. // functions to have the following prototype:
  34. //
  35. //     LRESULT FunctionName(HWND, WORD, WORD, HWND);
  36. LRESULT CmdExit(HWND, WORD, WORD, HWND);
  37. LRESULT CmdAbout(HWND, WORD, WORD, HWND);
  38. //-------------------------------------------------------------------------
  39. //  Globchat socket message definitions
  40. //
  41. typedef struct _MSGHDR            // Message header
  42. {
  43.     BYTE            signature;    // Identifies start of a message
  44.     WORD            length;       // size of message
  45.     BYTE            command;      // message command
  46. } MSGHDR, *LPMSGHDR;
  47. typedef struct _DATAMSG            // Message = message header + data
  48. {
  49.     MSGHDR          hdr;
  50.     BYTE            data[0x8000];  // data
  51. } DATAMSG, *LPDATAMSG;
  52. DATAMSG xferbuf;
  53. #define HDRSIZE      sizeof(MSGHDR)    // Message header size
  54. #define REALLEN(x)   lstrlen(x) + 1    // REALLEN will now count terminating NULL of x
  55. //-------------------------------------------------------------------------
  56. // My personal SOCKDATA structure for storing info on my sockets
  57. typedef struct _SOCKDATA
  58. {
  59.     SOCKET           sock;           // socket handle
  60.     int              status;         // Socket's status
  61.     struct sockaddr  addr;           // Address structure
  62.     char             reserved[10];   // Generic sockaddr struct is not big enough for all
  63.                                      // addresses (namely netbios addresses) so adding some
  64.                                      // space at the end.
  65.     int              addrlen;        // Address length
  66.     int              type;           // Socket type (from socket() call)
  67.     int              protocol;       // protocol (from socket() call)
  68.     int              currconnects;   // Number of current connections on this socket
  69.     LPTSTR           lpProtocolName; // Pointer to protocol name socket is running on
  70.     int              servsockindex;  // Index to array of server sockets
  71.     SOCKET           peer;           // Associated peer socket which this socket is in session with
  72.     char             name[16];       // User name
  73. } SOCKDATA, *LPSOCKDATA;
  74. LPSOCKDATA ServerSockets;        // Listening (server) sockets
  75. LPSOCKDATA ConnectedSockets;   // Accepted (client) sockets
  76. //  SOCKDATA structure status options
  77. #define SOCKSTAT_INIT        1
  78. #define SOCKSTAT_LISTENING   2
  79. #define SOCKSTAT_ACCEPTING   3
  80. #define SOCKSTAT_CLOSED      4
  81. #define SOCKSTAT_CONNECTED   5
  82. #define SOCKSTAT_AVAILABLE   6
  83. #define SOCKSTAT_INSESSION   7
  84. #define SOCKSTAT_REQSESSION  8
  85. //-------------------------------------------------------------------------
  86. // Global function prototypes.
  87. BOOL InitApplication(HINSTANCE, int);
  88. BOOL CenterWindow(HWND, HWND);
  89. void AtoH(char *, char *, int);
  90. unsigned char BtoH(char);
  91. void deregistername(char *);
  92. BOOL senddatamessage(SOCKET, LPDATAMSG);
  93. BOOL recvdatamessage (LPSOCKDATA, LPDATAMSG);
  94. void UpdateClientList(char *, int, char *);
  95. BOOL MakeServSock(HWND, LPSOCKDATA, LPPROTOCOL_INFO);
  96. LPTSTR GetStringRes (int id);
  97. // Callback functions.  These are called by Windows.
  98. LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
  99. //-------------------------------------------------------------------------
  100. // Command ID definitions.  These definitions are used to associate menu
  101. // items with commands.
  102. // File menu
  103. #define IDM_EXIT    1000
  104. // Help menu
  105. #define IDM_ABOUT   1100
  106. // Status List boxes
  107. #define ID_PROTOCOLBOX 400
  108. #define ID_CLIENTBOX   401
  109. //-------------------------------------------------------------------------
  110. // String Table ID definitions.
  111. #define IDS_APPNAME         1
  112. #define IDS_DESCRIPTION     2
  113. #define IDS_AVAILABLE       3
  114. #define IDS_SESSION         4
  115. #define IDS_SESSION_SETUP   5
  116. #define IDS_LANGVERINFO     6
  117. //-------------------------------------------------------------------------
  118. //  About dialog defines.
  119. #define IDD_VERFIRST    100
  120. #define IDD_VERLAST     104
  121. //-------------------------------------------------------------------------
  122. // Application Specific Messages.
  123. #define MW_CONNECTED    200
  124. #define MW_DATAREADY    201
  125. #define SAPTIMER        300
  126. //--------------------------------------------------------------------------
  127. //  Other constants
  128. #define NWCHATID        0x5607      // 0x0756 (network order) was assigned by Novell
  129.                                     // for this specific application
  130. #define DNSCHATID       0x555       // TCP well known port
  131. // Globchat socket message commands
  132. #define REGISTER_NAME             1
  133. #define XFER_DATA                 2
  134. #define REQUEST_SESSION           3
  135. #define SESSION_REQUEST_RESPONSE  4
  136. #define SESSION_CLOSE             5
  137. #define DEREGISTER_NAME           6
  138. #define MYSIGNATURE               0xCC   // First byte in every message header
  139. //-------------------------------------------------------------------------
  140. // Global variable declarations.
  141. extern HINSTANCE hInst;          // The current instance handle
  142. extern char      szAppName[];    // The name of this application
  143. extern char      szTitle[];      // The title bar text
  144. HANDLE ConnectHeap;
  145. LPPROTOCOL_INFO lpProtBuf;
  146. SOCKET SAPSocket;
  147. SOCKADDR_IPX SAPSockAddr, SAPDestSockAddr;
  148. int NextFree, MaxConnects;
  149. char aliasbuf[512];
  150. int sizealiasbuf;
  151. HWND hwndProtocolList;
  152. HWND hwndClientList;
  153. #define hwndMDIClient NULL
  154. //-------------------------------------------------------------------------
  155. // Message and command dispatch infrastructure.  The following type
  156. // definitions and functions are used by the message and command dispatching
  157. // mechanism and do not need to be changed.
  158.     // Function pointer prototype for message handling functions.
  159. typedef LRESULT (*PFNMSG)(HWND,UINT,WPARAM,LPARAM);
  160.     // Function pointer prototype for command handling functions.
  161. typedef LRESULT (*PFNCMD)(HWND,WORD,WORD,HWND);
  162.     // Enumerated type used to determine which default window procedure
  163.     // should be called by the message- and command-dispatching mechanism
  164.     // if a message or command is not handled explicitly.
  165. typedef enum
  166. {
  167.    edwpNone,            // Do not call any default procedure.
  168.    edwpWindow,          // Call DefWindowProc.
  169.    edwpDialog,          // Call DefDlgProc (This should be used only for
  170.                         // custom dialogs - standard dialog use edwpNone).
  171.    edwpMDIChild,        // Call DefMDIChildProc.
  172.    edwpMDIFrame         // Call DefFrameProc.
  173. } EDWP;                // Enumeration for Default Window Procedures
  174.     // This structure maps messages to message handling functions.
  175. typedef struct _MSD
  176. {
  177.     UINT   uMessage;
  178.     PFNMSG pfnmsg;
  179. } MSD;                 // MeSsage Dispatch structure
  180.     // This structure contains all of the information that a window
  181.     // procedure passes to DispMessage in order to define the message
  182.     // dispatching behavior for the window.
  183. typedef struct _MSDI
  184. {
  185.     int  cmsd;          // Number of message dispatch structs in rgmsd
  186.     MSD *rgmsd;         // Table of message dispatch structures
  187.     EDWP edwp;          // Type of default window handler needed.
  188. } MSDI, FAR *LPMSDI;   // MeSsage Dipatch Information
  189.     // This structure maps command IDs to command handling functions.
  190. typedef struct _CMD
  191. {
  192.     WORD   wCommand;
  193.     PFNCMD pfncmd;
  194. } CMD;                 // CoMmand Dispatch structure
  195.     // This structure contains all of the information that a command
  196.     // message procedure passes to DispCommand in order to define the
  197.     // command dispatching behavior for the window.
  198. typedef struct _CMDI
  199. {
  200.     int  ccmd;          // Number of command dispatch structs in rgcmd
  201.     CMD *rgcmd;         // Table of command dispatch structures
  202.     EDWP edwp;          // Type of default window handler needed.
  203. } CMDI, FAR *LPCMDI;   // CoMmand Dispatch Information
  204.     // Message and command dispatching functions.  They look up messages
  205.     // and commands in the dispatch tables and call the appropriate handler
  206.     // function.
  207. LRESULT DispMessage(LPMSDI, HWND, UINT, WPARAM, LPARAM);
  208. LRESULT DispCommand(LPCMDI, HWND, WPARAM, LPARAM);
  209.     // Message dispatch information for the main window
  210. extern MSDI msdiMain;
  211.     // Command dispatch information for the main window
  212. extern CMDI cmdiMain;
  213. //-------------------------------------------------------------------------
  214. // Version string definitions--Leave these alone.
  215. #define SZRCOMPANYNAME "CompanyName"
  216. #define SZRDESCRIPTION "FileDescription"
  217. #define SZRVERSION     "FileVersion"
  218. #define SZRAPPNAME     "InternalName"
  219. #define SZRCOPYRIGHT   "LegalCopyright"
  220. #define SZRTRADEMARK   "LegalTrademarks"
  221. #define SZRPRODNAME    "ProductName"
  222. #define SZRPRODVER     "ProuctVersion"
  223. //-------------------------------------------------------------------------
  224. // SAP structure definition for a single entry SAP packet.
  225. typedef struct _SAPHDR
  226. {
  227.     WORD     operation;    // 1 = Req., 2 = Resp., 3 = Get Nearest Req, 4 = Get Nearest Resp.
  228.     WORD     servicetype;  // kind of service
  229.     char     name[48];         // Name of Server
  230.     char     network[4];      // network number
  231.     char     node[6];         // node number
  232.     char     socket[2];       // socket number
  233.     WORD     hops;         // Number of hops to server
  234. } SAPHDR, *LPSAPHDR;  // SAP structure, pointer to SAP structure
  235. SAPHDR SAPData;