--- mstools/samples/ddeml/client/ddemlcl.c 2018/08/09 18:20:38 1.1 +++ mstools/samples/ddeml/client/ddemlcl.c 2018/08/09 18:21:25 1.1.1.2 @@ -26,11 +26,13 @@ BOOL fBlockNextCB = FALSE; /* set if 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 */ -DWORD fmtLink = 0; /* link clipboard format number */ -DWORD DefOptions = 0; /* default transaction optons */ +DWORD fmtLink = 0; /* link clipboard format number */ +DWORD DefOptions = 0; /* default transaction optons */ OWNED aOwned[MAX_OWNED]; /* list of all owned handles. */ -DWORD cOwned = 0; /* number of existing owned handles. */ +DWORD cOwned = 0; /* number of existing owned handles. */ FARPROC lpMsgFilterProc; /* instance proc from MSGF_DDEMGR filter */ +HSZ hszHuge; /* used for checking huge item data */ +HHOOK ghhk = 0; /* * This is the array of formats we support @@ -55,12 +57,11 @@ VOID NEAR PASCAL SetWrap (HWND,BOOL); * enters the message loop. * * * ****************************************************************************/ -int APIENTRY WinMain( - HANDLE hInstance, - HANDLE hPrevInstance, - LPSTR lpszCmdLine, - int nCmdShow - ) +int WINAPI WinMain( +HANDLE hInstance, +HANDLE hPrevInstance, +LPSTR lpszCmdLine, +INT nCmdShow) { MSG msg; @@ -78,16 +79,17 @@ int APIENTRY WinMain( /* Enter main message loop */ while (GetMessage (&msg, NULL, 0, 0)){ - (*lpMsgFilterProc)(MSGF_DDEMGR, 0, (LONG)(LPMSG)&msg); + ((HOOKPROC)*lpMsgFilterProc)(MSGF_DDEMGR, 0, (LONG)(LPMSG)&msg); } // free up any appowned handles while (cOwned) { DdeFreeDataHandle(aOwned[--cOwned].hData); } + DdeFreeStringHandle(idInst, hszHuge); DdeUninitialize(idInst); - UnhookWindowsHook(WH_MSGFILTER, lpMsgFilterProc); + UnhookWindowsHook(WH_MSGFILTER, (HOOKPROC)lpMsgFilterProc); FreeProcInstance(lpMsgFilterProc); return 0; @@ -142,7 +144,7 @@ LPARAM lParam; break; case WM_COMMAND: - CommandHandler (hwnd, GET_WM_COMMAND_ID(wParam, lParam)); + CommandHandler (hwnd, LOWORD(wParam)); break; case WM_CLOSE: @@ -194,7 +196,7 @@ LPARAM lParam; */ pmci = (MYCONVINFO *)MyAlloc(sizeof(MYCONVINFO)); if (pmci != NULL) { - _fmemcpy(pmci, + memcpy(pmci, (LPSTR)((LPMDICREATESTRUCT)((LPCREATESTRUCT)lParam)->lpCreateParams)->lParam, sizeof(MYCONVINFO)); pmci->hwndXaction = 0; /* no current transaction yet */ @@ -278,12 +280,12 @@ LPARAM lParam; // fall through case WM_MDIACTIVATE: - hwndActive = GET_WM_MDIACTIVATE_HWNDACTIVATE(wParam, lParam); + hwndActive = (HWND)(lParam); pmci = (MYCONVINFO *)GetWindowLong(hwnd, 0); /* * pass the focus onto the current transaction window. */ - if (GET_WM_MDIACTIVATE_FACTIVATE(hwnd, wParam, lParam) && + if ((lParam == (LONG)hwnd) && IsWindow(pmci->hwndXaction)) SetFocus(pmci->hwndXaction); break; @@ -563,11 +565,11 @@ DWORD id) * begin a request and advise start transaction. */ xact.hConv = CreateConv(DdeCreateStringHandle(idInst, psz, NULL), - DdeCreateStringHandle(idInst, &psz[_fstrlen(psz) + 1], NULL), + DdeCreateStringHandle(idInst, &psz[strlen(psz) + 1], NULL), FALSE); if (xact.hConv) { - psz += _fstrlen(psz) + 1; - psz += _fstrlen(psz) + 1; + psz += strlen(psz) + 1; + psz += strlen(psz) + 1; xact.ulTimeout = DefTimeout; xact.wType = XTYP_ADVSTART; xact.hDdeData = 0; @@ -588,7 +590,7 @@ DWORD id) case IDM_CONNECT: case IDM_RECONNECT: - DoDialog(MAKEINTRESOURCE(IDD_CONNECT), (WNDPROC)ConnectDlgProc, + DoDialog(MAKEINTRESOURCE(IDD_CONNECT), (DLGPROC)ConnectDlgProc, id == IDM_RECONNECT, FALSE); break; @@ -599,7 +601,7 @@ DWORD id) break; case IDM_TRANSACT: - if (DoDialog(MAKEINTRESOURCE(IDD_TRANSACT), (WNDPROC)TransactDlgProc, + if (DoDialog(MAKEINTRESOURCE(IDD_TRANSACT), (DLGPROC)TransactDlgProc, (DWORD)(LPSTR)pmci->hConv, FALSE)) SetFocus(GetWindow(hwndActive, GW_CHILD)); break; @@ -662,17 +664,17 @@ DWORD id) break; case IDM_DELAY: - DoDialog(MAKEINTRESOURCE(IDD_VALUEENTRY), (WNDPROC)DelayDlgProc, NULL, + DoDialog(MAKEINTRESOURCE(IDD_VALUEENTRY), (DLGPROC)DelayDlgProc, NULL, TRUE); break; case IDM_TIMEOUT: - DoDialog(MAKEINTRESOURCE(IDD_VALUEENTRY), (WNDPROC)TimeoutDlgProc, NULL, + DoDialog(MAKEINTRESOURCE(IDD_VALUEENTRY), (DLGPROC)TimeoutDlgProc, NULL, TRUE); break; case IDM_CONTEXT: - DoDialog(MAKEINTRESOURCE(IDD_CONTEXT), (WNDPROC)ContextDlgProc, NULL, TRUE); + DoDialog(MAKEINTRESOURCE(IDD_CONTEXT), (DLGPROC)ContextDlgProc, NULL, TRUE); break; case IDM_AUTORECONNECT: @@ -710,7 +712,7 @@ DWORD id) break; case IDM_HELPABOUT:{ - DoDialog(MAKEINTRESOURCE(IDD_ABOUT), (WNDPROC)AboutDlgProc, NULL, TRUE); + DoDialog(MAKEINTRESOURCE(IDD_ABOUT), (DLGPROC)AboutDlgProc, NULL, TRUE); break; } @@ -721,7 +723,7 @@ DWORD id) * window menu. */ DefFrameProc(hwnd, hwndMDIClient, WM_COMMAND, - GET_WM_COMMAND_MPS(id, 0, 0)); + (WPARAM)MAKELONG(id, 0), (LONG)(0)); } } @@ -1217,12 +1219,12 @@ HSZ hsz) * problems. However, this is included as an example. * ****************************************************************************/ -DWORD APIENTRY MyMsgFilterProc( -INT nCode, +LRESULT CALLBACK MyMsgFilterProc( +int nCode, WPARAM wParam, -DWORD lParam) +LPARAM lParam) { - wParam; // not used + UNREFERENCED_PARAMETER(wParam); #define lpmsg ((LPMSG)lParam) if (nCode == MSGF_DDEMGR) { @@ -1239,7 +1241,9 @@ DWORD lParam) } return(1); } + if (nCode < 0) { + CallNextHookEx(ghhk, nCode, wParam, lParam); + } return(0); #undef lpmsg } -