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

Windows编程

开发平台:

Visual C++

  1. /******************************************************************************
  2. *       This is a part of the Microsoft Source Code Samples.
  3. *       Copyright (C) 1993-1997 Microsoft Corporation.
  4. *       All rights reserved.
  5. *       This source code is only intended as a supplement to
  6. *       Microsoft Development Tools and/or WinHelp documentation.
  7. *       See these sources for detailed information regarding the
  8. *       Microsoft samples programs.
  9. ******************************************************************************/
  10. #include <windows.h>
  11. #include <ddeml.h>
  12. #include <tchar.h>
  13. #define WINDOWMENU  3   /* position of window menu               */
  14. /* resource ID's */
  15. #define IDCLIENT  1
  16. #define IDCONV    2
  17. #define IDLIST    3
  18. /* menu ID's */
  19. #define IDM_EDITPASTE           2004
  20. #define IDM_CONNECT             3000    // enabled always
  21. #define IDM_RECONNECT           3001    // enabled if list selected
  22. #define IDM_DISCONNECT          3002    // enabled if conversation selected
  23. #define IDM_TRANSACT            3003    // enabled if conversation selected
  24. #define IDM_ABANDON             3004    // enabled if transaction selected
  25. #define IDM_ABANDONALL          3005    // enabled if conv. selected &&
  26.                                         // and any transaction windows exist
  27. #define IDM_BLOCKCURRENT        3010    // enabled if conv. sel.  chkd if conv. blocked
  28. #define IDM_ENABLECURRENT       3011    // enabled if conv. sel.  chkd if not blocked
  29. #define IDM_ENABLEONECURRENT    3012    // enabled if conv. sel.
  30. #define IDM_BLOCKALLCBS         3013    // enabled if any convs.
  31. #define IDM_ENABLEALLCBS        3014    // enabled if any convs.
  32. #define IDM_ENABLEONECB         3015    // enabled if any convs.
  33. #define IDM_BLOCKNEXTCB         3016    // enabled always, chkd if set.
  34. #define IDM_TERMNEXTCB          3017    // enabled if any convs.  chked if set.
  35. #define IDM_TIMEOUT             3021
  36. #define IDM_DELAY               3022
  37. #define IDM_CONTEXT             3023
  38. #define IDM_AUTORECONNECT       3024
  39. #define IDM_WINDOWTILE          4001
  40. #define IDM_WINDOWCASCADE       4002
  41. #define IDM_WINDOWCLOSEALL      4003
  42. #define IDM_WINDOWICONS         4004
  43. #define IDM_XACTTILE            4005
  44. #define IDM_XACTCASCADE         4006
  45. #define IDM_XACTCLOSEALL        4007
  46. #define IDM_WINDOWCHILD         4100
  47. #define IDM_HELP                5001
  48. #define IDM_HELPABOUT           5002
  49. #define DEFTIMEOUT              1000
  50. #include "dialog.h"
  51. // predefined format list item
  52. typedef struct {
  53.     DWORD fmt;
  54.     PTSTR sz;
  55. } FORMATINFO;
  56. #define CFORMATS 3
  57. // conversation (MDI child) window information
  58. typedef struct {
  59.     HWND hwndXaction;       // last xaction window with focus, 0 if none.
  60.     BOOL fList;
  61.     HCONV hConv;
  62.     HSZ hszTopic;
  63.     HSZ hszApp;
  64.     INT x;          // next child coord.
  65.     INT y;
  66.     CONVINFO ci; // most recent status info.
  67. } MYCONVINFO;       // parameters to AddConv() in reverse order.
  68. #define CHILDCBWNDEXTRA     sizeof(HWND)
  69. #define UM_GETNEXTCHILDX    (WM_USER + 200)
  70. #define UM_GETNEXTCHILDY    (WM_USER + 201)
  71. #define UM_DISCONNECTED     (WM_USER + 202)
  72. // transaction processing structure - this structure is associated with
  73. // infoctrl control windows.  A handle to this structure is placed into
  74. // the first window word of the control.
  75. typedef struct {    // used to passinfo to/from TransactionDlgProc and
  76.     DWORD ret;      // TextEntryDlgProc.
  77.     DWORD Result;
  78.     DWORD ulTimeout;
  79.     DWORD wType;
  80.     HCONV hConv;
  81.     HDDEDATA hDdeData;
  82.     DWORD wFmt;
  83.     HSZ hszItem;
  84.     DWORD fsOptions;
  85. } XACT;
  86. typedef struct {
  87.     HDDEDATA hData;
  88.     HSZ hszItem;
  89.     DWORD wFmt;
  90. } OWNED;
  91. // transaction option flags - for fsOptions field and DefOptions global.
  92. #define XOPT_NODATA             0x0001
  93. #define XOPT_ACKREQ             0x0002
  94. #define XOPT_DISABLEFIRST       0x0004
  95. #define XOPT_ABANDONAFTERSTART  0x0008
  96. #define XOPT_BLOCKRESULT        0x0010
  97. #define XOPT_ASYNC              0x0020
  98. #define XOPT_COMPLETED          0x8000      // used internally only.
  99. /* strings */
  100. #define IDS_ILLFNM              1
  101. #define IDS_ADDEXT              2
  102. #define IDS_CLOSESAVE       3
  103. #define IDS_HELPNOTAVAIL    4
  104. #define IDS_CLIENTTITLE     5
  105. #define IDS_APPNAME             6
  106. #define IDS_DDEMLERR        7
  107. #define IDS_BADLENGTH       8
  108. /* attribute flags for DlgDirList */
  109. #define ATTR_DIRS       0xC010          /* find drives and directories */
  110. #define ATTR_FILES      0x0000          /* find ordinary files         */
  111. #define PROP_FILENAME   szPropertyName  /* name of property for dialog */
  112. #define MAX_OWNED   20
  113. /*
  114.  *  GLOBALS
  115.  */
  116. extern CONVCONTEXT CCFilter;
  117. extern DWORD idInst;
  118. extern HANDLE hInst;            /* application instance handle            */
  119. extern HANDLE hAccel;           /* resource handle of accelerators        */
  120. extern HWND hwndFrame;          /* main window handle                     */
  121. extern HWND hwndMDIClient;      /* handle of MDI Client window            */
  122. extern HWND hwndActive;         /* handle of current active MDI child     */
  123. extern HWND hwndActiveEdit;     /* handle of edit control in active child */
  124. extern LONG styleDefault;       /* default child creation state           */
  125. extern DWORD SyncTimeout;
  126. extern LONG DefTimeout;
  127. extern DWORD wDelay;
  128. extern BOOL fEnableCBs;
  129. extern BOOL fEnableOneCB;
  130. extern BOOL fBlockNextCB;
  131. extern BOOL fTermNextCB;
  132. extern BOOL fAutoReconnect;
  133. extern HDDEDATA hDataOwned;
  134. extern DWORD fmtLink;        // registered LINK clipboard fmt
  135. extern DWORD DefOptions;
  136. extern TCHAR szChild[];          /* class of child                         */
  137. extern TCHAR szList[];           /* class of child                         */
  138. extern TCHAR szSearch[];         /* search string                          */
  139. extern TCHAR *szDriver;          /* name of printer driver                 */
  140. extern TCHAR szPropertyName[];   /* filename property for dialog box       */
  141. extern INT iPrinter;            /* level of printing capability           */
  142. extern BOOL fCase;              /* searches case sensitive                */
  143. extern DWORD cFonts;            /* number of fonts enumerated             */
  144. extern FORMATINFO aFormats[];
  145. extern OWNED aOwned[MAX_OWNED];
  146. extern DWORD cOwned;
  147. extern FARPROC lpMsgFilterProc;
  148. extern HSZ hszHuge;
  149. extern HHOOK ghhk;
  150. // MACROS
  151. #ifdef NODEBUG
  152. #define MyAlloc(cb)     (PTSTR)LocalAlloc(LPTR, (cb))
  153. #define MyFree(p)       (LocalUnlock((HANDLE)(p)), LocalFree((HANDLE)(p)))
  154. #else   // DEBUG
  155. #define MyAlloc(cb)     DbgAlloc((DWORD)cb)
  156. #define MyFree(p)       DbgFree((PTSTR)p)
  157. #endif //NODEBUG
  158. /*  externally declared functions
  159.  */
  160. // client.c
  161. BOOL  APIENTRY InitializeApplication(VOID);
  162. BOOL  APIENTRY InitializeInstance(DWORD);
  163. INT FAR cdecl MPError(DWORD,DWORD, ...);
  164. LONG  APIENTRY FrameWndProc(HWND, UINT, WPARAM, LPARAM);
  165. LONG  APIENTRY MDIChildWndProc(HWND, UINT, WPARAM, LPARAM);
  166. HCONV CreateConv(HSZ hszApp, HSZ hszTopic, BOOL fList);
  167. HWND  APIENTRY AddConv(HSZ hszApp, HSZ hszTopic, HCONV hConv, BOOL fList);
  168. PTSTR GetConvListText(HCONVLIST hConvList);
  169. PTSTR GetConvInfoText(HCONV hConv, CONVINFO *pci);
  170. PTSTR GetConvTitleText(HCONV hConv, HSZ hszApp, HSZ hszTopic, BOOL fList);
  171. PTSTR Status2String(DWORD status);
  172. PTSTR State2String(DWORD state);
  173. PTSTR Error2String(DWORD error);
  174. PTSTR Type2String(DWORD wType, DWORD fsOptions);
  175. PTSTR GetHSZName(HSZ hsz);
  176. LRESULT CALLBACK MyMsgFilterProc(int nCode, WPARAM wParam, LPARAM lParam);
  177. // dialog.c
  178. INT FAR DoDialog(LPTSTR lpTemplateName, DLGPROC lpDlgProc, LONG param,
  179.         BOOL fRememberFocus);
  180. BOOL  APIENTRY AboutDlgProc(HWND, UINT, WPARAM, LPARAM);
  181. BOOL  APIENTRY ConnectDlgProc(HWND, UINT, WPARAM, LPARAM);
  182. BOOL  APIENTRY TransactDlgProc(HWND, UINT, WPARAM, LPARAM);
  183. BOOL  APIENTRY AdvOptsDlgProc(HWND, UINT, WPARAM, LPARAM);
  184. BOOL  APIENTRY TextEntryDlgProc(HWND, UINT, WPARAM, LPARAM);
  185. BOOL  APIENTRY ViewHandleDlgProc(HWND, UINT, WPARAM, LPARAM);
  186. BOOL  APIENTRY TimeoutDlgProc(HWND, UINT, WPARAM, LPARAM);
  187. BOOL  APIENTRY DelayDlgProc(HWND, UINT, WPARAM, LPARAM);
  188. BOOL  APIENTRY ContextDlgProc(HWND, UINT, WPARAM, LPARAM);
  189. VOID Delay(DWORD delay);
  190. // dde.c
  191. BOOL ProcessTransaction(XACT *pxact);
  192. VOID CompleteTransaction(HWND hwndInfoCtr, XACT *pxact);
  193. HDDEDATA CALLBACK DdeCallback(UINT wType, UINT wFmt, HCONV hConv, HSZ hsz1,
  194.         HSZ hsz2, HDDEDATA hData, DWORD lData1, DWORD lData2);
  195. HWND MDIChildFromhConv(HCONV hConv);
  196. HWND FindAdviseChild(HWND hwndMDI, HSZ hszItem, DWORD wFmt);
  197. HWND FindListWindow(HCONVLIST hConvList);
  198. PTSTR GetTextData(HDDEDATA hData);
  199. PTSTR GetFormatData(HDDEDATA hData);
  200. INT MyGetClipboardFormatName(DWORD fmt, LPTSTR lpstr, INT cbMax);
  201. PTSTR GetFormatName(DWORD wFmt);
  202. BOOL MyDisconnect(HCONV hConv);
  203. // mem.c
  204. PTSTR DbgAlloc(DWORD cb);
  205. PTSTR DbgFree(PTSTR p);