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

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. //-------------------------------------------------------------------------
  12. // Product identifier string defines
  13. #define APPNAME       GlobCl
  14. //-------------------------------------------------------------------------
  15. // Functions for handling main window messages.  The message-dispatching
  16. // mechanism expects all message-handling functions to have the following
  17. // prototype:
  18. //
  19. //     LRESULT FunctionName(HWND, UINT, WPARAM, LPARAM);
  20. LRESULT MsgCreate(HWND, UINT, WPARAM, LPARAM);
  21. LRESULT MsgSize(HWND, UINT, WPARAM, LPARAM);
  22. LRESULT MsgSetfocus(HWND, UINT, WPARAM, LPARAM);
  23. LRESULT MsgCommand(HWND, UINT, WPARAM, LPARAM);
  24. LRESULT MsgDataready(HWND, UINT, WPARAM, LPARAM);
  25. LRESULT MsgRefreshdisplay(HWND, UINT, WPARAM, LPARAM);
  26. LRESULT MsgDisconnected(HWND, UINT, WPARAM, LPARAM);
  27. LRESULT MsgDestroy(HWND, UINT, WPARAM, LPARAM);
  28. //-------------------------------------------------------------------------
  29. // Functions for handling main window commands--ie. functions for
  30. // processing WM_COMMAND messages based on the wParam value.
  31. // The message-dispatching mechanism expects all command-handling
  32. // functions to have the following prototype:
  33. //
  34. //     LRESULT FunctionName(HWND, WORD, WORD, HWND);
  35. LRESULT CmdConnect(HWND, WORD, WORD, HWND);
  36. LRESULT CmdSelect(HWND, WORD, WORD, HWND);
  37. LRESULT CmdExit(HWND, WORD, WORD, HWND);
  38. LRESULT CmdAbout(HWND, WORD, WORD, HWND);
  39. LRESULT CmdOutbox(HWND, WORD, WORD, HWND);
  40. LRESULT CmdDisconnect(HWND, WORD, WORD, HWND);
  41. LRESULT CmdEndChat(HWND, WORD, WORD, HWND);
  42. //
  43. //   Socket Data transfer Message definitions
  44. //
  45. typedef struct _MSGHDR            // Message Header
  46. {
  47.     BYTE            signature;    // Identifies start of a message
  48.     WORD            length;       // size of message
  49.     BYTE            command;      // message command
  50. } MSGHDR, *LPMSGHDR;
  51. typedef struct _DATAMSG            // Message--contains header + data
  52. {
  53.     MSGHDR          hdr;
  54.     BYTE            data[0x8000];  // data
  55. } DATAMSG, *LPDATAMSG;
  56. DATAMSG xferbuf;
  57. // Message constants
  58. #define HDRSIZE      sizeof(MSGHDR)    // Size of Message header
  59. #define REALLEN(x)   lstrlen(x) + 1    // REALLEN will now count terminating NULL of x
  60. //    Globchat socket data structure to hold all necessary socket information
  61. //
  62. typedef struct _SOCKDATA
  63. {
  64.     SOCKET           sock;         // socket handle
  65.     int              status;       // Socket's status
  66.     struct sockaddr  addr;         // Address structure
  67.     char             reserved[10]; // Generic sockaddr struct is not big enough for all
  68.                                    // addresses (namely netbios addresses) so adding some
  69.                                    // space at the end.
  70.     int              addrlen;      // Address length
  71.     int              type;         // Socket type (from socket() call)
  72.     int              protocol;     // protocol (from socket() call)
  73.     int              currconnects; // Number of current connections on this socket
  74.     SOCKET           peer;         // Handle of server's peer socket we are connected to
  75.     char             name[16];      // Our name
  76. } SOCKDATA, *LPSOCKDATA;
  77. SOCKDATA MySock;
  78. //  SOCKDATA structure status options
  79. #define SOCKSTAT_INIT        1
  80. #define SOCKSTAT_LISTENING   2
  81. #define SOCKSTAT_ACCEPTING   3
  82. #define SOCKSTAT_CLOSED      4
  83. #define SOCKSTAT_CONNECTED   5
  84. #define SOCKSTAT_AVAILABLE   6
  85. #define SOCKSTAT_INSESSION   7
  86. #define SOCKSTAT_REQSESSION  8
  87. //-------------------------------------------------------------------------
  88. // Global function prototypes.
  89. BOOL InitApplication(HINSTANCE, int);
  90. BOOL CenterWindow(HWND, HWND);
  91. BOOL ReceiveInBox(HWND, WPARAM, LPARAM, char *, int);
  92. void SendOutBox(char *, int);
  93. void AtoH(char *, char *, int);
  94. unsigned char BtoH(char);
  95. void CleanUp(void);
  96. void GetAddrString(PSOCKADDR_IPX, char *);
  97. void HtoA(char *, char *, int);
  98. char HtoB(UCHAR);
  99. BOOL senddatamessage (SOCKET, LPDATAMSG);
  100. BOOL recvdatamessage (LPSOCKDATA, LPDATAMSG);
  101. LPTSTR GetStringRes (int id);
  102. // Callback functions.  These are called by Windows.
  103. LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
  104. //-------------------------------------------------------------------------
  105. // Command ID definitions.  These definitions are used to associate menu
  106. // items with commands.
  107. // Options menu
  108. #define IDM_CONNECT           1000
  109. #define IDM_SELECT            1001
  110. #define IDM_END_CHAT          1002
  111. #define IDM_DISCONNECT_SERVER 1003
  112. #define IDM_EXIT              1004
  113. // Help menu
  114. #define IDM_ABOUT      1100
  115. //-------------------------------------------------------------------------
  116. // User Defined Messages.  These definitions are used for indicating
  117. // network events.
  118. #define MW_DATAREADY       501
  119. #define MW_DISPLAYREFRESH  502
  120. #define MW_DISCONNECTED    503
  121. #define LDM_CONNECTED      504
  122. //-------------------------------------------------------------------------
  123. // String Table ID definitions.
  124. #define IDS_APPNAME                       1
  125. #define IDS_DESCRIPTION                   2
  126. #define IDS_FILEINFOLANG                  3
  127. #define IDS_CHAT_AVAIL                    4
  128. #define IDS_ERR_SERVER_NOT_FOUND          5
  129. #define IDS_ERR_NAMESPACE_NOT_SUPPORTED   6
  130. #define IDS_ERR_SOCKET_FAILED             7
  131. #define IDS_ERR_CONNECT_FAILED            8
  132. #define IDS_ERR_WSAASYNCSELECT            9
  133. #define IDS_ERR_UNSUPPORTED_PROTOCOL      10
  134. #define IDS_ERR_CONNECTION_DROPPED        11
  135. #define IDS_CALLING_SOCKET                12
  136. #define IDS_CALLING_CONNECT               13
  137. #define IDS_WAITING_FOR_ACCEPT            14
  138. #define IDS_SELECT_PROTOCOL               15
  139. #define IDS_ENTER_NAME                    16
  140. #define IDS_ENTER_MACHINE_NAME            17
  141. #define IDS_CONNECTION_STOPPED            18
  142. #define IDS_CHAT_DLG_STOPPED              19
  143. #define IDS_CHAT_AVAILABLE                20
  144. #define IDS_CHATTING_REMOTE               21
  145. #define IDS_REQUESTS_CHAT                 22
  146. #define IDS_SESSION_REQUEST               23
  147. //-------------------------------------------------------------------------
  148. //  Main Window Edit Control defines.
  149. #define ID_OUTBOX          601
  150. #define ID_INBOX           602
  151. //-------------------------------------------------------------------------
  152. //  About dialog defines.
  153. #define IDD_VERFIRST    100
  154. #define IDD_VERLAST     104
  155. //-------------------------------------------------------------------------
  156. //  Connect dialog defines.
  157. #define CD_NAME        200
  158. #define CD_PROTOCOL    201
  159. #define CD_SERVER      202
  160. #define CD_SERVER_TEXT 203
  161. #define CD_HELP        204
  162. //-------------------------------------------------------------------------
  163. //  Select dialog defines.
  164. #define SD_LIST        300
  165. //-------------------------------------------------------------------------
  166. //  Globchat socket message commands
  167. #define REGISTER_NAME             1
  168. #define XFER_DATA                 2
  169. #define REQUEST_SESSION           3
  170. #define SESSION_REQUEST_RESPONSE  4
  171. #define SESSION_CLOSE             5
  172. #define DEREGISTER_NAME           6
  173. //-------------------------------------------------------------------------
  174. //  Socket constants
  175. #define MYSIGNATURE               0xCC        // Starts every globchat socket message header
  176. #define NWCHATID                  0x0756      // 0x0756 (network order) was assigned by Novell
  177.                                               // for this specific application
  178. #define DNSCHATID                 0x555       // Well known socket for DNS GUID generation
  179. //-------------------------------------------------------------------------
  180. // Global variable declarations.
  181. extern HINSTANCE hInst;          // The current instance handle
  182. extern char      szAppName[];    // The name of this application
  183. extern char      szTitle[];      // The title bar text
  184. SOCKET sock, SrvSock;
  185. SOCKADDR_IPX RemAddr;
  186. PSOCKADDR_IPX pSockAddr, pRemAddr;
  187. struct sockaddr addr;
  188. int addrlen;
  189. HWND hOutWnd, hInWnd;
  190. char szRcvBuf[0x8000];
  191. char szSndBuf[0x8000];
  192. extern char szConnectName[];
  193. extern char szConnectServer[];
  194. CSADDR_INFO CSAInfo[10];
  195. CSADDR_INFO CSABuf[20];
  196. DWORD dwCSABufsize;
  197. char peername[16];
  198. LPPROTOCOL_INFO lpProtBuf;
  199. int goodprots[30];
  200. char lpServName[256];
  201. SOCKADDR_NB NBAddr;
  202. SOCKADDR_IPX IPXAddr;
  203. #define hwndMDIGlobCl NULL        /* Stub for NON-MDI applications. */
  204. //-------------------------------------------------------------------------
  205. // Message and command dispatch infrastructure.  The following type
  206. // definitions and functions are used by the message and command dispatching
  207. // mechanism and do not need to be changed.
  208.     // Function pointer prototype for message handling functions.
  209. typedef LRESULT (*PFNMSG)(HWND,UINT,WPARAM,LPARAM);
  210.     // Function pointer prototype for command handling functions.
  211. typedef LRESULT (*PFNCMD)(HWND,WORD,WORD,HWND);
  212.     // Enumerated type used to determine which default window procedure
  213.     // should be called by the message- and command-dispatching mechanism
  214.     // if a message or command is not handled explicitly.
  215. typedef enum
  216. {
  217.    edwpNone,            // Do not call any default procedure.
  218.    edwpWindow,          // Call DefWindowProc.
  219.    edwpDialog,          // Call DefDlgProc (This should be used only for
  220.                         // custom dialogs - standard dialog use edwpNone).
  221.    edwpMDIChild,        // Call DefMDIChildProc.
  222.    edwpMDIFrame         // Call DefFrameProc.
  223. } EDWP;                // Enumeration for Default Window Procedures
  224.     // This structure maps messages to message handling functions.
  225. typedef struct _MSD
  226. {
  227.     UINT   uMessage;
  228.     PFNMSG pfnmsg;
  229. } MSD;                 // MeSsage Dispatch structure
  230.     // This structure contains all of the information that a window
  231.     // procedure passes to DispMessage in order to define the message
  232.     // dispatching behavior for the window.
  233. typedef struct _MSDI
  234. {
  235.     int  cmsd;          // Number of message dispatch structs in rgmsd
  236.     MSD *rgmsd;         // Table of message dispatch structures
  237.     EDWP edwp;          // Type of default window handler needed.
  238. } MSDI, FAR *LPMSDI;   // MeSsage Dipatch Information
  239.     // This structure maps command IDs to command handling functions.
  240. typedef struct _CMD
  241. {
  242.     WORD   wCommand;
  243.     PFNCMD pfncmd;
  244. } CMD;                 // CoMmand Dispatch structure
  245.     // This structure contains all of the information that a command
  246.     // message procedure passes to DispCommand in order to define the
  247.     // command dispatching behavior for the window.
  248. typedef struct _CMDI
  249. {
  250.     int  ccmd;          // Number of command dispatch structs in rgcmd
  251.     CMD *rgcmd;         // Table of command dispatch structures
  252.     EDWP edwp;          // Type of default window handler needed.
  253. } CMDI, FAR *LPCMDI;   // CoMmand Dispatch Information
  254.     // Message and command dispatching functions.  They look up messages
  255.     // and commands in the dispatch tables and call the appropriate handler
  256.     // function.
  257. LRESULT DispMessage(LPMSDI, HWND, UINT, WPARAM, LPARAM);
  258. LRESULT DispCommand(LPCMDI, HWND, WPARAM, LPARAM);
  259.     // Message dispatch information for the main window
  260. extern MSDI msdiMain;
  261.     // Command dispatch information for the main window
  262. extern CMDI cmdiMain;
  263. //-------------------------------------------------------------------------
  264. // Version string definitions--Leave these alone.
  265. #define SZRCOMPANYNAME "CompanyName"
  266. #define SZRDESCRIPTION "FileDescription"
  267. #define SZRVERSION     "FileVersion"
  268. #define SZRAPPNAME     "InternalName"
  269. #define SZRCOPYRIGHT   "LegalCopyright"
  270. #define SZRTRADEMARK   "LegalTrademarks"
  271. #define SZRPRODNAME    "ProductName"
  272. #define SZRPRODVER     "ProuctVersion"