--- mstools/samples/ddeml/client/ddemlcl.c 2018/08/09 18:21:25 1.1.1.2 +++ mstools/samples/ddeml/client/ddemlcl.c 2018/08/09 18:23:21 1.1.1.3 @@ -1,3 +1,14 @@ + +/******************************************************************************\ +* This is a part of the Microsoft Source Code Samples. +* Copyright (C) 1993 Microsoft Corporation. +* All rights reserved. +* This source code is only intended as a supplement to +* Microsoft Development Tools and/or WinHelp documentation. +* See these sources for detailed information regarding the +* Microsoft samples programs. +\******************************************************************************/ + /*************************************************************************** * * * PROGRAM : client.c * @@ -13,7 +24,14 @@ #include "infoctrl.h" /* global variables used in this module or among more than one module */ -CONVCONTEXT CCFilter = { sizeof(CONVCONTEXT), 0, 0, 0, 0L, 0L }; +CONVCONTEXT CCFilter = { sizeof(CONVCONTEXT), 0, 0, 0, 0L, 0L, + { + sizeof(SECURITY_QUALITY_OF_SERVICE), + SecurityImpersonation, + SECURITY_STATIC_TRACKING, + TRUE + } +}; DWORD idInst = 0; HANDLE hInst; /* Program instance handle */ HANDLE hAccel; /* Main accelerator resource */ @@ -25,7 +43,7 @@ DWORD wDelay = 0; BOOL fBlockNextCB = FALSE; /* set if next callback causes a CBR_BLOCK */ BOOL fTermNextCB = FALSE; /* set to call DdeDisconnect() on next callback */ BOOL fAutoReconnect = FALSE; /* set if DdeReconnect() is to be called on XTYP_DISCONNECT callbacks */ -HDDEDATA hDataOwned = NULL; /* Current owned huge data handle */ +HDDEDATA hDataOwned = 0; /* Current owned huge data handle */ DWORD fmtLink = 0; /* link clipboard format number */ DWORD DefOptions = 0; /* default transaction optons */ OWNED aOwned[MAX_OWNED]; /* list of all owned handles. */ @@ -58,8 +76,8 @@ VOID NEAR PASCAL SetWrap (HWND,BOOL); * * ****************************************************************************/ int WINAPI WinMain( -HANDLE hInstance, -HANDLE hPrevInstance, +HINSTANCE hInstance, +HINSTANCE hPrevInstance, LPSTR lpszCmdLine, INT nCmdShow) { @@ -564,8 +582,8 @@ DWORD id) * Create a conversation with the link app and * begin a request and advise start transaction. */ - xact.hConv = CreateConv(DdeCreateStringHandle(idInst, psz, NULL), - DdeCreateStringHandle(idInst, &psz[strlen(psz) + 1], NULL), + xact.hConv = CreateConv(DdeCreateStringHandle(idInst, psz, 0), + DdeCreateStringHandle(idInst, &psz[strlen(psz) + 1], 0), FALSE); if (xact.hConv) { psz += strlen(psz) + 1; @@ -574,7 +592,7 @@ DWORD id) xact.wType = XTYP_ADVSTART; xact.hDdeData = 0; xact.wFmt = CF_TEXT; - xact.hszItem = DdeCreateStringHandle(idInst, psz, NULL); + xact.hszItem = DdeCreateStringHandle(idInst, psz, 0); xact.fsOptions = 0; ProcessTransaction(&xact); xact.wType = XTYP_REQUEST; @@ -613,7 +631,7 @@ DWORD id) break; case IDM_ABANDONALL: - DdeAbandonTransaction(idInst, pmci->hConv, NULL); + DdeAbandonTransaction(idInst, pmci->hConv, 0L); { HWND hwndXaction; @@ -641,17 +659,17 @@ DWORD id) break; case IDM_BLOCKALLCBS: - DdeEnableCallback(idInst, NULL, EC_DISABLE); + DdeEnableCallback(idInst, 0, EC_DISABLE); InvalidateRect(hwndMDIClient, NULL, TRUE); break; case IDM_ENABLEALLCBS: - DdeEnableCallback(idInst, NULL, EC_ENABLEALL); + DdeEnableCallback(idInst, 0, EC_ENABLEALL); InvalidateRect(hwndMDIClient, NULL, TRUE); break; case IDM_ENABLEONECB: - DdeEnableCallback(idInst, NULL, EC_ENABLEONE); + DdeEnableCallback(idInst, 0, EC_ENABLEONE); InvalidateRect(hwndMDIClient, NULL, TRUE); break; @@ -664,17 +682,17 @@ DWORD id) break; case IDM_DELAY: - DoDialog(MAKEINTRESOURCE(IDD_VALUEENTRY), (DLGPROC)DelayDlgProc, NULL, + DoDialog(MAKEINTRESOURCE(IDD_VALUEENTRY), (DLGPROC)DelayDlgProc, 0, TRUE); break; case IDM_TIMEOUT: - DoDialog(MAKEINTRESOURCE(IDD_VALUEENTRY), (DLGPROC)TimeoutDlgProc, NULL, + DoDialog(MAKEINTRESOURCE(IDD_VALUEENTRY), (DLGPROC)TimeoutDlgProc, 0, TRUE); break; case IDM_CONTEXT: - DoDialog(MAKEINTRESOURCE(IDD_CONTEXT), (DLGPROC)ContextDlgProc, NULL, TRUE); + DoDialog(MAKEINTRESOURCE(IDD_CONTEXT), (DLGPROC)ContextDlgProc, 0, TRUE); break; case IDM_AUTORECONNECT: @@ -712,7 +730,7 @@ DWORD id) break; case IDM_HELPABOUT:{ - DoDialog(MAKEINTRESOURCE(IDD_ABOUT), (DLGPROC)AboutDlgProc, NULL, TRUE); + DoDialog(MAKEINTRESOURCE(IDD_ABOUT), (DLGPROC)AboutDlgProc, 0, TRUE); break; } @@ -773,7 +791,7 @@ BOOL fList) CONVINFO ci; if (fList) { - hConv = (HCONV)DdeConnectList(idInst, hszApp, hszTopic, NULL, &CCFilter); + hConv = (HCONV)DdeConnectList(idInst, hszApp, hszTopic, 0, &CCFilter); } else { hConv = DdeConnect(idInst, hszApp, hszTopic, &CCFilter); } @@ -845,7 +863,8 @@ BOOL fList) mcs.hOwner = hInst; mcs.x = mcs.cx = CW_USEDEFAULT; mcs.y = mcs.cy = CW_USEDEFAULT; - mcs.style = GetWindow(hwndMDIClient, GW_CHILD) ? 0L : WS_MAXIMIZE; + mcs.style = GetWindow(hwndMDIClient, GW_CHILD) ? + WS_CLIPCHILDREN : (WS_MAXIMIZE | WS_CLIPCHILDREN); // mci.hwndXaction = mci.fList = fList; @@ -885,6 +904,7 @@ HCONVLIST hConvList) DWORD cConv = 0; CONVINFO ci; DWORD cb = 0; + DWORD d; CHAR *psz, *pszStart; ci.cb = sizeof(CONVINFO); @@ -915,14 +935,16 @@ HCONVLIST hConvList) if (pszStart = psz = MyAlloc(cb)) { *psz = '\0'; - hConv = 0; while (hConv = DdeQueryNextServer(hConvList, hConv)) { if (DdeQueryConvInfo(hConv, QID_SYNC, &ci) && IsWindow((HWND)ci.hUser)) { - psz += GetWindowText((HWND)ci.hUser, psz, cb); + d = GetWindowText((HWND)ci.hUser, psz, cb); + psz += d; + cb -= d; if (--cConv) { *psz++ = '\r'; *psz++ = '\n'; + cb -= 2; } } }