Artifact 958265cdfd657f8f1461084f5beb6efa86b8a331:
0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
0040: 2a 2a 2a 2a 2a 2a 2a 2a 5c 0a 2a 20 20 20 20 20 ********\.*
0050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0060: 20 20 20 20 20 20 20 20 20 20 20 20 64 64 65 2e dde.
0070: 64 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 d
0080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0090: 20 20 2a 0a 2a 20 20 20 20 20 20 20 20 20 20 20 *.*
00a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00d0: 20 20 20 20 20 20 20 20 20 20 20 20 2a 0a 2a 20 *.*
00e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00f0: 20 20 20 20 20 20 57 69 6e 64 6f 77 73 20 41 50 Windows AP
0100: 49 20 68 65 61 64 65 72 20 6d 6f 64 75 6c 65 20 I header module
0110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0120: 20 20 20 20 20 20 2a 0a 2a 20 20 20 20 20 20 20 *.*
0130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0170: 2a 0a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 *.*
0180: 20 20 20 20 54 72 61 6e 73 6c 61 74 65 64 20 66 Translated f
0190: 72 6f 6d 20 4d 69 6e 47 57 20 57 69 6e 64 6f 77 rom MinGW Window
01a0: 73 20 68 65 61 64 65 72 73 20 20 20 20 20 20 20 s headers
01b0: 20 20 20 20 20 20 20 20 20 20 2a 0a 2a 20 20 20 *.*
01c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01d0: 20 20 20 20 20 20 20 20 62 79 20 53 74 65 77 61 by Stewa
01e0: 72 74 20 47 6f 72 64 6f 6e 20 20 20 20 20 20 20 rt Gordon
01f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0200: 20 20 20 20 2a 0a 2a 20 20 20 20 20 20 20 20 20 *.*
0210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 0a *.
0250: 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *
0260: 20 20 20 20 20 20 20 20 50 6c 61 63 65 64 20 69 Placed i
0270: 6e 74 6f 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 nto public domai
0280: 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 n
0290: 20 20 20 20 20 20 20 20 2a 0a 5c 2a 2a 2a 2a 2a *.\*****
02a0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
02b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
02c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
02d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
02e0: 2a 2a 2f 0a 6d 6f 64 75 6c 65 20 77 69 6e 33 32 **/.module win32
02f0: 2e 64 64 65 3b 0a 70 72 61 67 6d 61 28 6c 69 62 .dde;.pragma(lib
0300: 2c 20 22 75 73 65 72 33 32 2e 6c 69 62 22 29 3b , "user32.lib");
0310: 0a 0a 70 72 69 76 61 74 65 20 69 6d 70 6f 72 74 ..private import
0320: 20 77 69 6e 33 32 2e 77 69 6e 64 65 66 3b 0a 0a win32.windef;..
0330: 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 0a 09 57 enum : uint {..W
0340: 4d 5f 44 44 45 5f 46 49 52 53 54 20 20 20 20 20 M_DDE_FIRST
0350: 3d 20 30 78 30 33 45 30 2c 0a 09 57 4d 5f 44 44 = 0x03E0,..WM_DD
0360: 45 5f 49 4e 49 54 49 41 54 45 20 20 3d 20 57 4d E_INITIATE = WM
0370: 5f 44 44 45 5f 46 49 52 53 54 2c 0a 09 57 4d 5f _DDE_FIRST,..WM_
0380: 44 44 45 5f 54 45 52 4d 49 4e 41 54 45 2c 0a 09 DDE_TERMINATE,..
0390: 57 4d 5f 44 44 45 5f 41 44 56 49 53 45 2c 0a 09 WM_DDE_ADVISE,..
03a0: 57 4d 5f 44 44 45 5f 55 4e 41 44 56 49 53 45 2c WM_DDE_UNADVISE,
03b0: 0a 09 57 4d 5f 44 44 45 5f 41 43 4b 2c 0a 09 57 ..WM_DDE_ACK,..W
03c0: 4d 5f 44 44 45 5f 44 41 54 41 2c 0a 09 57 4d 5f M_DDE_DATA,..WM_
03d0: 44 44 45 5f 52 45 51 55 45 53 54 2c 0a 09 57 4d DDE_REQUEST,..WM
03e0: 5f 44 44 45 5f 50 4f 4b 45 2c 0a 09 57 4d 5f 44 _DDE_POKE,..WM_D
03f0: 44 45 5f 45 58 45 43 55 54 45 2c 0a 09 57 4d 5f DE_EXECUTE,..WM_
0400: 44 44 45 5f 4c 41 53 54 20 20 20 20 20 20 3d 20 DDE_LAST =
0410: 57 4d 5f 44 44 45 5f 45 58 45 43 55 54 45 0a 7d WM_DDE_EXECUTE.}
0420: 0a 0a 73 74 72 75 63 74 20 44 44 45 41 43 4b 20 ..struct DDEACK
0430: 7b 0a 09 75 62 79 74 65 20 62 41 70 70 52 65 74 {..ubyte bAppRet
0440: 75 72 6e 43 6f 64 65 3b 0a 09 75 62 79 74 65 20 urnCode;..ubyte
0450: 5f 62 66 3b 0a 0a 09 75 62 79 74 65 20 72 65 73 _bf;...ubyte res
0460: 65 72 76 65 64 28 29 20 7b 20 72 65 74 75 72 6e erved() { return
0470: 20 63 61 73 74 28 75 62 79 74 65 29 20 28 5f 62 cast(ubyte) (_b
0480: 66 20 26 20 30 78 33 46 29 3b 20 7d 0a 09 62 6f f & 0x3F); }..bo
0490: 6f 6c 20 20 66 42 75 73 79 28 29 20 20 20 20 7b ol fBusy() {
04a0: 20 72 65 74 75 72 6e 20 63 61 73 74 28 62 6f 6f return cast(boo
04b0: 6c 29 20 20 28 5f 62 66 20 26 20 30 78 34 30 29 l) (_bf & 0x40)
04c0: 3b 20 7d 0a 09 62 6f 6f 6c 20 20 66 41 63 6b 28 ; }..bool fAck(
04d0: 29 20 20 20 20 20 7b 20 72 65 74 75 72 6e 20 63 ) { return c
04e0: 61 73 74 28 62 6f 6f 6c 29 20 20 28 5f 62 66 20 ast(bool) (_bf
04f0: 26 20 30 78 38 30 29 3b 20 7d 0a 0a 09 75 62 79 & 0x80); }...uby
0500: 74 65 20 72 65 73 65 72 76 65 64 28 75 62 79 74 te reserved(ubyt
0510: 65 20 72 29 20 7b 0a 09 09 5f 62 66 20 3d 20 63 e r) {..._bf = c
0520: 61 73 74 28 75 62 79 74 65 29 20 28 28 5f 62 66 ast(ubyte) ((_bf
0530: 20 26 20 7e 30 78 33 46 29 20 7c 20 28 72 20 26 & ~0x3F) | (r &
0540: 20 30 78 33 46 29 29 3b 0a 09 09 72 65 74 75 72 0x3F));...retur
0550: 6e 20 63 61 73 74 28 75 62 79 74 65 29 28 72 20 n cast(ubyte)(r
0560: 26 20 30 78 33 46 29 3b 0a 09 7d 0a 0a 09 62 6f & 0x3F);..}...bo
0570: 6f 6c 20 66 42 75 73 79 28 62 6f 6f 6c 20 66 29 ol fBusy(bool f)
0580: 20 7b 20 5f 62 66 20 3d 20 63 61 73 74 28 75 62 { _bf = cast(ub
0590: 79 74 65 29 20 28 28 5f 62 66 20 26 20 7e 30 78 yte) ((_bf & ~0x
05a0: 34 30 29 20 7c 20 28 66 20 3c 3c 20 36 29 29 3b 40) | (f << 6));
05b0: 20 72 65 74 75 72 6e 20 66 3b 20 7d 0a 09 62 6f return f; }..bo
05c0: 6f 6c 20 66 41 63 6b 28 62 6f 6f 6c 20 66 29 20 ol fAck(bool f)
05d0: 20 7b 20 5f 62 66 20 3d 20 63 61 73 74 28 75 62 { _bf = cast(ub
05e0: 79 74 65 29 20 28 28 5f 62 66 20 26 20 7e 30 78 yte) ((_bf & ~0x
05f0: 38 30 29 20 7c 20 28 66 20 3c 3c 20 37 29 29 3b 80) | (f << 7));
0600: 20 72 65 74 75 72 6e 20 66 3b 20 7d 0a 7d 0a 0a return f; }.}..
0610: 73 74 72 75 63 74 20 44 44 45 41 44 56 49 53 45 struct DDEADVISE
0620: 20 7b 0a 09 75 73 68 6f 72 74 20 5f 62 66 3b 0a {..ushort _bf;.
0630: 09 73 68 6f 72 74 20 20 63 66 46 6f 72 6d 61 74 .short cfFormat
0640: 3b 0a 0a 09 75 73 68 6f 72 74 20 72 65 73 65 72 ;...ushort reser
0650: 76 65 64 28 29 20 20 7b 20 72 65 74 75 72 6e 20 ved() { return
0660: 63 61 73 74 28 75 73 68 6f 72 74 29 20 28 5f 62 cast(ushort) (_b
0670: 66 20 26 20 30 78 33 46 46 46 29 3b 20 7d 0a 09 f & 0x3FFF); }..
0680: 62 6f 6f 6c 20 20 20 66 44 65 66 65 72 55 70 64 bool fDeferUpd
0690: 28 29 20 7b 20 72 65 74 75 72 6e 20 63 61 73 74 () { return cast
06a0: 28 62 6f 6f 6c 29 20 20 20 28 5f 62 66 20 26 20 (bool) (_bf &
06b0: 30 78 34 30 30 30 29 3b 20 7d 0a 09 62 6f 6f 6c 0x4000); }..bool
06c0: 20 20 20 66 41 63 6b 52 65 71 28 29 20 20 20 7b fAckReq() {
06d0: 20 72 65 74 75 72 6e 20 63 61 73 74 28 62 6f 6f return cast(boo
06e0: 6c 29 20 20 20 28 5f 62 66 20 26 20 30 78 38 30 l) (_bf & 0x80
06f0: 30 30 29 3b 20 7d 0a 0a 09 75 73 68 6f 72 74 20 00); }...ushort
0700: 72 65 73 65 72 76 65 64 28 75 73 68 6f 72 74 20 reserved(ushort
0710: 72 29 20 7b 0a 09 09 5f 62 66 20 3d 20 63 61 73 r) {..._bf = cas
0720: 74 28 75 73 68 6f 72 74 29 20 28 28 5f 62 66 20 t(ushort) ((_bf
0730: 26 20 7e 30 78 33 46 46 46 29 20 7c 20 28 72 20 & ~0x3FFF) | (r
0740: 26 20 30 78 33 46 46 46 29 29 3b 0a 09 09 72 65 & 0x3FFF));...re
0750: 74 75 72 6e 20 63 61 73 74 28 75 73 68 6f 72 74 turn cast(ushort
0760: 29 28 72 20 26 20 30 78 33 46 46 46 29 3b 0a 09 )(r & 0x3FFF);..
0770: 7d 0a 0a 09 62 6f 6f 6c 20 20 20 66 44 65 66 65 }...bool fDefe
0780: 72 55 70 64 28 62 6f 6f 6c 20 66 29 20 7b 20 5f rUpd(bool f) { _
0790: 62 66 20 3d 20 63 61 73 74 28 75 73 68 6f 72 74 bf = cast(ushort
07a0: 29 20 28 28 5f 62 66 20 26 20 7e 30 78 34 30 30 ) ((_bf & ~0x400
07b0: 30 29 20 7c 20 28 66 20 3c 3c 20 31 34 29 29 3b 0) | (f << 14));
07c0: 20 72 65 74 75 72 6e 20 66 3b 20 7d 0a 09 62 6f return f; }..bo
07d0: 6f 6c 20 20 20 66 41 63 6b 52 65 71 28 62 6f 6f ol fAckReq(boo
07e0: 6c 20 66 29 20 20 20 7b 20 5f 62 66 20 3d 20 63 l f) { _bf = c
07f0: 61 73 74 28 75 73 68 6f 72 74 29 20 28 28 5f 62 ast(ushort) ((_b
0800: 66 20 26 20 7e 30 78 38 30 30 30 29 20 7c 20 28 f & ~0x8000) | (
0810: 66 20 3c 3c 20 31 35 29 29 3b 20 72 65 74 75 72 f << 15)); retur
0820: 6e 20 66 3b 20 7d 0a 7d 0a 0a 73 74 72 75 63 74 n f; }.}..struct
0830: 20 44 44 45 44 41 54 41 20 7b 0a 09 75 73 68 6f DDEDATA {..usho
0840: 72 74 20 5f 62 66 3b 0a 09 73 68 6f 72 74 20 20 rt _bf;..short
0850: 63 66 46 6f 72 6d 61 74 3b 0a 09 62 79 74 65 20 cfFormat;..byte
0860: 20 20 5f 56 61 6c 75 65 3b 0a 0a 09 75 73 68 6f _Value;...usho
0870: 72 74 20 75 6e 75 73 65 64 28 29 20 20 20 20 7b rt unused() {
0880: 20 72 65 74 75 72 6e 20 63 61 73 74 28 75 73 68 return cast(ush
0890: 6f 72 74 29 20 28 5f 62 66 20 26 20 30 78 30 46 ort) (_bf & 0x0F
08a0: 46 46 29 3b 20 7d 0a 09 62 6f 6f 6c 20 20 20 66 FF); }..bool f
08b0: 52 65 73 70 6f 6e 73 65 28 29 20 7b 20 72 65 74 Response() { ret
08c0: 75 72 6e 20 63 61 73 74 28 62 6f 6f 6c 29 20 20 urn cast(bool)
08d0: 20 28 5f 62 66 20 26 20 30 78 31 30 30 30 29 3b (_bf & 0x1000);
08e0: 20 7d 0a 09 62 6f 6f 6c 20 20 20 66 52 65 6c 65 }..bool fRele
08f0: 61 73 65 28 29 20 20 7b 20 72 65 74 75 72 6e 20 ase() { return
0900: 63 61 73 74 28 62 6f 6f 6c 29 20 20 20 28 5f 62 cast(bool) (_b
0910: 66 20 26 20 30 78 32 30 30 30 29 3b 20 7d 0a 09 f & 0x2000); }..
0920: 62 6f 6f 6c 20 20 20 72 65 73 65 72 76 65 64 28 bool reserved(
0930: 29 20 20 7b 20 72 65 74 75 72 6e 20 63 61 73 74 ) { return cast
0940: 28 62 6f 6f 6c 29 20 20 20 28 5f 62 66 20 26 20 (bool) (_bf &
0950: 30 78 34 30 30 30 29 3b 20 7d 0a 09 62 6f 6f 6c 0x4000); }..bool
0960: 20 20 20 66 41 63 6b 52 65 71 28 29 20 20 20 7b fAckReq() {
0970: 20 72 65 74 75 72 6e 20 63 61 73 74 28 62 6f 6f return cast(boo
0980: 6c 29 20 20 20 28 5f 62 66 20 26 20 30 78 38 30 l) (_bf & 0x80
0990: 30 30 29 3b 20 7d 0a 0a 09 62 79 74 65 2a 20 20 00); }...byte*
09a0: 56 61 6c 75 65 28 29 20 7b 20 72 65 74 75 72 6e Value() { return
09b0: 20 26 5f 56 61 6c 75 65 3b 20 7d 0a 0a 09 75 73 &_Value; }...us
09c0: 68 6f 72 74 20 75 6e 75 73 65 64 28 75 73 68 6f hort unused(usho
09d0: 72 74 20 72 29 20 7b 0a 09 09 5f 62 66 20 3d 20 rt r) {..._bf =
09e0: 63 61 73 74 28 75 73 68 6f 72 74 29 20 28 28 5f cast(ushort) ((_
09f0: 62 66 20 26 20 7e 30 78 30 46 46 46 29 20 7c 20 bf & ~0x0FFF) |
0a00: 28 72 20 26 20 30 78 30 46 46 46 29 29 3b 0a 09 (r & 0x0FFF));..
0a10: 09 72 65 74 75 72 6e 20 63 61 73 74 28 75 73 68 .return cast(ush
0a20: 6f 72 74 29 28 72 20 26 20 30 78 30 46 46 46 29 ort)(r & 0x0FFF)
0a30: 3b 0a 09 7d 0a 0a 09 62 6f 6f 6c 20 20 20 66 52 ;..}...bool fR
0a40: 65 73 70 6f 6e 73 65 28 62 6f 6f 6c 20 66 29 20 esponse(bool f)
0a50: 7b 20 5f 62 66 20 3d 20 63 61 73 74 28 75 73 68 { _bf = cast(ush
0a60: 6f 72 74 29 20 28 28 5f 62 66 20 26 20 7e 30 78 ort) ((_bf & ~0x
0a70: 31 30 30 30 29 20 7c 20 28 66 20 3c 3c 20 31 32 1000) | (f << 12
0a80: 29 29 3b 20 72 65 74 75 72 6e 20 66 3b 20 7d 0a )); return f; }.
0a90: 09 62 6f 6f 6c 20 20 20 66 52 65 6c 65 61 73 65 .bool fRelease
0aa0: 28 62 6f 6f 6c 20 66 29 20 20 7b 20 5f 62 66 20 (bool f) { _bf
0ab0: 3d 20 63 61 73 74 28 75 73 68 6f 72 74 29 20 28 = cast(ushort) (
0ac0: 28 5f 62 66 20 26 20 7e 30 78 32 30 30 30 29 20 (_bf & ~0x2000)
0ad0: 7c 20 28 66 20 3c 3c 20 31 33 29 29 3b 20 72 65 | (f << 13)); re
0ae0: 74 75 72 6e 20 66 3b 20 7d 0a 09 62 6f 6f 6c 20 turn f; }..bool
0af0: 20 20 72 65 73 65 72 76 65 64 28 62 6f 6f 6c 20 reserved(bool
0b00: 66 29 20 20 7b 20 5f 62 66 20 3d 20 63 61 73 74 f) { _bf = cast
0b10: 28 75 73 68 6f 72 74 29 20 28 28 5f 62 66 20 26 (ushort) ((_bf &
0b20: 20 7e 30 78 34 30 30 30 29 20 7c 20 28 66 20 3c ~0x4000) | (f <
0b30: 3c 20 31 34 29 29 3b 20 72 65 74 75 72 6e 20 66 < 14)); return f
0b40: 3b 20 7d 0a 09 62 6f 6f 6c 20 20 20 66 41 63 6b ; }..bool fAck
0b50: 52 65 71 28 62 6f 6f 6c 20 66 29 20 20 20 7b 20 Req(bool f) {
0b60: 5f 62 66 20 3d 20 63 61 73 74 28 75 73 68 6f 72 _bf = cast(ushor
0b70: 74 29 20 28 28 5f 62 66 20 26 20 7e 30 78 38 30 t) ((_bf & ~0x80
0b80: 30 30 29 20 7c 20 28 66 20 3c 3c 20 31 35 29 29 00) | (f << 15))
0b90: 3b 20 72 65 74 75 72 6e 20 66 3b 20 7d 0a 7d 0a ; return f; }.}.
0ba0: 0a 73 74 72 75 63 74 20 44 44 45 50 4f 4b 45 20 .struct DDEPOKE
0bb0: 7b 0a 09 75 73 68 6f 72 74 20 5f 62 66 3b 0a 09 {..ushort _bf;..
0bc0: 73 68 6f 72 74 20 20 63 66 46 6f 72 6d 61 74 3b short cfFormat;
0bd0: 0a 09 62 79 74 65 20 20 20 5f 56 61 6c 75 65 3b ..byte _Value;
0be0: 0a 0a 09 75 73 68 6f 72 74 20 75 6e 75 73 65 64 ...ushort unused
0bf0: 28 29 20 20 20 20 7b 20 72 65 74 75 72 6e 20 63 () { return c
0c00: 61 73 74 28 75 73 68 6f 72 74 29 20 28 5f 62 66 ast(ushort) (_bf
0c10: 20 26 20 30 78 31 46 46 46 29 3b 20 7d 0a 09 62 & 0x1FFF); }..b
0c20: 6f 6f 6c 20 20 20 66 52 65 6c 65 61 73 65 28 29 ool fRelease()
0c30: 20 20 7b 20 72 65 74 75 72 6e 20 63 61 73 74 28 { return cast(
0c40: 62 6f 6f 6c 29 20 20 20 28 5f 62 66 20 26 20 30 bool) (_bf & 0
0c50: 78 32 30 30 30 29 3b 20 7d 0a 09 75 62 79 74 65 x2000); }..ubyte
0c60: 20 20 66 52 65 73 65 72 76 65 64 28 29 20 7b 20 fReserved() {
0c70: 72 65 74 75 72 6e 20 63 61 73 74 28 75 62 79 74 return cast(ubyt
0c80: 65 29 20 20 28 28 5f 62 66 20 26 20 30 78 43 30 e) ((_bf & 0xC0
0c90: 30 30 29 20 3e 3e 3e 20 31 34 29 3b 20 7d 0a 0a 00) >>> 14); }..
0ca0: 09 62 79 74 65 2a 20 20 56 61 6c 75 65 28 29 20 .byte* Value()
0cb0: 7b 20 72 65 74 75 72 6e 20 26 5f 56 61 6c 75 65 { return &_Value
0cc0: 3b 20 7d 0a 0a 09 75 73 68 6f 72 74 20 75 6e 75 ; }...ushort unu
0cd0: 73 65 64 28 75 73 68 6f 72 74 20 75 29 20 7b 0a sed(ushort u) {.
0ce0: 09 09 5f 62 66 20 3d 20 63 61 73 74 28 75 73 68 .._bf = cast(ush
0cf0: 6f 72 74 29 20 28 28 5f 62 66 20 26 20 7e 30 78 ort) ((_bf & ~0x
0d00: 31 46 46 46 29 20 7c 20 28 75 20 26 20 30 78 31 1FFF) | (u & 0x1
0d10: 46 46 46 29 29 3b 0a 09 09 72 65 74 75 72 6e 20 FFF));...return
0d20: 63 61 73 74 28 75 73 68 6f 72 74 29 28 75 20 26 cast(ushort)(u &
0d30: 20 30 78 31 46 46 46 29 3b 0a 09 7d 0a 0a 09 62 0x1FFF);..}...b
0d40: 6f 6f 6c 20 20 20 66 52 65 6c 65 61 73 65 28 62 ool fRelease(b
0d50: 6f 6f 6c 20 66 29 20 20 20 7b 20 5f 62 66 20 3d ool f) { _bf =
0d60: 20 63 61 73 74 28 75 73 68 6f 72 74 29 20 28 28 cast(ushort) ((
0d70: 5f 62 66 20 26 20 7e 30 78 32 30 30 30 29 20 7c _bf & ~0x2000) |
0d80: 20 28 66 20 3c 3c 20 31 33 29 29 3b 20 72 65 74 (f << 13)); ret
0d90: 75 72 6e 20 66 3b 20 7d 0a 09 75 62 79 74 65 20 urn f; }..ubyte
0da0: 20 66 52 65 73 65 72 76 65 64 28 75 62 79 74 65 fReserved(ubyte
0db0: 20 72 29 20 7b 20 5f 62 66 20 3d 20 63 61 73 74 r) { _bf = cast
0dc0: 28 75 73 68 6f 72 74 29 20 28 28 5f 62 66 20 26 (ushort) ((_bf &
0dd0: 20 7e 30 78 43 30 30 30 29 20 7c 20 28 72 20 3c ~0xC000) | (r <
0de0: 3c 20 31 34 29 29 3b 20 72 65 74 75 72 6e 20 72 < 14)); return r
0df0: 3b 20 7d 0a 7d 0a 0a 64 65 70 72 65 63 61 74 65 ; }.}..deprecate
0e00: 64 20 73 74 72 75 63 74 20 44 44 45 4c 4e 20 7b d struct DDELN {
0e10: 0a 09 75 73 68 6f 72 74 20 5f 62 66 3b 0a 09 73 ..ushort _bf;..s
0e20: 68 6f 72 74 20 20 63 66 46 6f 72 6d 61 74 3b 0a hort cfFormat;.
0e30: 0a 09 75 73 68 6f 72 74 20 75 6e 75 73 65 64 28 ..ushort unused(
0e40: 29 20 20 20 20 7b 20 72 65 74 75 72 6e 20 63 61 ) { return ca
0e50: 73 74 28 75 73 68 6f 72 74 29 20 28 5f 62 66 20 st(ushort) (_bf
0e60: 26 20 30 78 31 46 46 46 29 3b 20 7d 0a 09 62 6f & 0x1FFF); }..bo
0e70: 6f 6c 20 20 20 66 52 65 6c 65 61 73 65 28 29 20 ol fRelease()
0e80: 20 7b 20 72 65 74 75 72 6e 20 63 61 73 74 28 62 { return cast(b
0e90: 6f 6f 6c 29 20 20 20 28 5f 62 66 20 26 20 30 78 ool) (_bf & 0x
0ea0: 32 30 30 30 29 3b 20 7d 0a 09 62 6f 6f 6c 20 20 2000); }..bool
0eb0: 20 66 44 65 66 65 72 55 70 64 28 29 20 7b 20 72 fDeferUpd() { r
0ec0: 65 74 75 72 6e 20 63 61 73 74 28 62 6f 6f 6c 29 eturn cast(bool)
0ed0: 20 20 20 28 5f 62 66 20 26 20 30 78 34 30 30 30 (_bf & 0x4000
0ee0: 29 3b 20 7d 0a 09 62 6f 6f 6c 20 20 20 66 41 63 ); }..bool fAc
0ef0: 6b 52 65 71 28 29 20 20 20 7b 20 72 65 74 75 72 kReq() { retur
0f00: 6e 20 63 61 73 74 28 62 6f 6f 6c 29 20 20 20 28 n cast(bool) (
0f10: 5f 62 66 20 26 20 30 78 38 30 30 30 29 3b 20 7d _bf & 0x8000); }
0f20: 0a 0a 09 75 73 68 6f 72 74 20 75 6e 75 73 65 64 ...ushort unused
0f30: 28 75 73 68 6f 72 74 20 75 29 20 7b 0a 09 09 5f (ushort u) {..._
0f40: 62 66 20 3d 20 63 61 73 74 28 75 73 68 6f 72 74 bf = cast(ushort
0f50: 29 28 28 5f 62 66 20 26 20 7e 30 78 31 46 46 46 )((_bf & ~0x1FFF
0f60: 29 20 7c 20 28 75 20 26 20 30 78 31 46 46 46 29 ) | (u & 0x1FFF)
0f70: 29 3b 0a 09 09 72 65 74 75 72 6e 20 63 61 73 74 );...return cast
0f80: 28 75 73 68 6f 72 74 29 28 75 20 26 20 30 78 31 (ushort)(u & 0x1
0f90: 46 46 46 29 3b 0a 09 7d 0a 0a 09 62 6f 6f 6c 20 FFF);..}...bool
0fa0: 20 20 66 52 65 6c 65 61 73 65 28 62 6f 6f 6c 20 fRelease(bool
0fb0: 66 29 20 20 7b 20 5f 62 66 20 3d 20 63 61 73 74 f) { _bf = cast
0fc0: 28 75 73 68 6f 72 74 29 20 28 28 5f 62 66 20 26 (ushort) ((_bf &
0fd0: 20 7e 30 78 32 30 30 30 29 20 7c 20 28 66 20 3c ~0x2000) | (f <
0fe0: 3c 20 31 33 29 29 3b 20 72 65 74 75 72 6e 20 66 < 13)); return f
0ff0: 3b 20 7d 0a 09 62 6f 6f 6c 20 20 20 66 44 65 66 ; }..bool fDef
1000: 65 72 55 70 64 28 62 6f 6f 6c 20 66 29 20 7b 20 erUpd(bool f) {
1010: 5f 62 66 20 3d 20 63 61 73 74 28 75 73 68 6f 72 _bf = cast(ushor
1020: 74 29 20 28 28 5f 62 66 20 26 20 7e 30 78 34 30 t) ((_bf & ~0x40
1030: 30 30 29 20 7c 20 28 66 20 3c 3c 20 31 34 29 29 00) | (f << 14))
1040: 3b 20 72 65 74 75 72 6e 20 66 3b 20 7d 0a 09 62 ; return f; }..b
1050: 6f 6f 6c 20 20 20 66 41 63 6b 52 65 71 28 62 6f ool fAckReq(bo
1060: 6f 6c 20 66 29 20 20 20 7b 20 5f 62 66 20 3d 20 ol f) { _bf =
1070: 63 61 73 74 28 75 73 68 6f 72 74 29 20 28 28 5f cast(ushort) ((_
1080: 62 66 20 26 20 7e 30 78 38 30 30 30 29 20 7c 20 bf & ~0x8000) |
1090: 28 66 20 3c 3c 20 31 35 29 29 3b 20 72 65 74 75 (f << 15)); retu
10a0: 72 6e 20 66 3b 20 7d 0a 7d 0a 0a 64 65 70 72 65 rn f; }.}..depre
10b0: 63 61 74 65 64 20 73 74 72 75 63 74 20 44 44 45 cated struct DDE
10c0: 55 50 20 7b 0a 09 75 73 68 6f 72 74 20 5f 62 66 UP {..ushort _bf
10d0: 3b 0a 09 73 68 6f 72 74 20 20 63 66 46 6f 72 6d ;..short cfForm
10e0: 61 74 3b 0a 09 62 79 74 65 20 20 20 5f 72 67 62 at;..byte _rgb
10f0: 3b 0a 0a 09 75 73 68 6f 72 74 20 75 6e 75 73 65 ;...ushort unuse
1100: 64 28 29 20 20 20 20 7b 20 72 65 74 75 72 6e 20 d() { return
1110: 63 61 73 74 28 75 73 68 6f 72 74 29 20 28 5f 62 cast(ushort) (_b
1120: 66 20 26 20 30 78 30 46 46 46 29 3b 20 7d 0a 09 f & 0x0FFF); }..
1130: 62 6f 6f 6c 20 20 20 66 41 63 6b 28 29 20 20 20 bool fAck()
1140: 20 20 20 7b 20 72 65 74 75 72 6e 20 63 61 73 74 { return cast
1150: 28 62 6f 6f 6c 29 20 20 20 28 5f 62 66 20 26 20 (bool) (_bf &
1160: 30 78 31 30 30 30 29 3b 20 7d 0a 09 62 6f 6f 6c 0x1000); }..bool
1170: 20 20 20 66 52 65 6c 65 61 73 65 28 29 20 20 7b fRelease() {
1180: 20 72 65 74 75 72 6e 20 63 61 73 74 28 62 6f 6f return cast(boo
1190: 6c 29 20 20 20 28 5f 62 66 20 26 20 30 78 32 30 l) (_bf & 0x20
11a0: 30 30 29 3b 20 7d 0a 09 62 6f 6f 6c 20 20 20 66 00); }..bool f
11b0: 52 65 73 65 72 76 65 64 28 29 20 7b 20 72 65 74 Reserved() { ret
11c0: 75 72 6e 20 63 61 73 74 28 62 6f 6f 6c 29 20 20 urn cast(bool)
11d0: 20 28 5f 62 66 20 26 20 30 78 34 30 30 30 29 3b (_bf & 0x4000);
11e0: 20 7d 0a 09 62 6f 6f 6c 20 20 20 66 41 63 6b 52 }..bool fAckR
11f0: 65 71 28 29 20 20 20 7b 20 72 65 74 75 72 6e 20 eq() { return
1200: 63 61 73 74 28 62 6f 6f 6c 29 20 20 20 28 5f 62 cast(bool) (_b
1210: 66 20 26 20 30 78 38 30 30 30 29 3b 20 7d 0a 0a f & 0x8000); }..
1220: 09 62 79 74 65 2a 20 20 72 67 62 28 29 20 7b 20 .byte* rgb() {
1230: 72 65 74 75 72 6e 20 26 5f 72 67 62 3b 20 7d 0a return &_rgb; }.
1240: 0a 09 75 73 68 6f 72 74 20 75 6e 75 73 65 64 28 ..ushort unused(
1250: 75 73 68 6f 72 74 20 72 29 20 7b 0a 09 09 5f 62 ushort r) {..._b
1260: 66 20 3d 20 63 61 73 74 28 75 73 68 6f 72 74 29 f = cast(ushort)
1270: 20 28 28 5f 62 66 20 26 20 7e 30 78 30 46 46 46 ((_bf & ~0x0FFF
1280: 29 20 7c 20 28 72 20 26 20 30 78 30 46 46 46 29 ) | (r & 0x0FFF)
1290: 29 3b 0a 09 09 72 65 74 75 72 6e 20 63 61 73 74 );...return cast
12a0: 28 75 73 68 6f 72 74 29 28 72 20 26 20 30 78 30 (ushort)(r & 0x0
12b0: 46 46 46 29 3b 0a 09 7d 0a 0a 09 62 6f 6f 6c 20 FFF);..}...bool
12c0: 20 20 66 41 63 6b 28 62 6f 6f 6c 20 66 29 20 20 fAck(bool f)
12d0: 20 20 20 20 7b 20 5f 62 66 20 3d 20 63 61 73 74 { _bf = cast
12e0: 28 75 73 68 6f 72 74 29 20 28 28 5f 62 66 20 26 (ushort) ((_bf &
12f0: 20 7e 30 78 31 30 30 30 29 20 7c 20 28 66 20 3c ~0x1000) | (f <
1300: 3c 20 31 32 29 29 3b 20 72 65 74 75 72 6e 20 66 < 12)); return f
1310: 3b 20 7d 0a 09 62 6f 6f 6c 20 20 20 66 52 65 6c ; }..bool fRel
1320: 65 61 73 65 28 62 6f 6f 6c 20 66 29 20 20 7b 20 ease(bool f) {
1330: 5f 62 66 20 3d 20 63 61 73 74 28 75 73 68 6f 72 _bf = cast(ushor
1340: 74 29 20 28 28 5f 62 66 20 26 20 7e 30 78 32 30 t) ((_bf & ~0x20
1350: 30 30 29 20 7c 20 28 66 20 3c 3c 20 31 33 29 29 00) | (f << 13))
1360: 3b 20 72 65 74 75 72 6e 20 66 3b 20 7d 0a 09 62 ; return f; }..b
1370: 6f 6f 6c 20 20 20 66 52 65 73 65 72 76 65 64 28 ool fReserved(
1380: 62 6f 6f 6c 20 66 29 20 7b 20 5f 62 66 20 3d 20 bool f) { _bf =
1390: 63 61 73 74 28 75 73 68 6f 72 74 29 20 28 28 5f cast(ushort) ((_
13a0: 62 66 20 26 20 7e 30 78 34 30 30 30 29 20 7c 20 bf & ~0x4000) |
13b0: 28 66 20 3c 3c 20 31 34 29 29 3b 20 72 65 74 75 (f << 14)); retu
13c0: 72 6e 20 66 3b 20 7d 0a 09 62 6f 6f 6c 20 20 20 rn f; }..bool
13d0: 66 41 63 6b 52 65 71 28 62 6f 6f 6c 20 66 29 20 fAckReq(bool f)
13e0: 20 20 7b 20 5f 62 66 20 3d 20 63 61 73 74 28 75 { _bf = cast(u
13f0: 73 68 6f 72 74 29 20 28 28 5f 62 66 20 26 20 7e short) ((_bf & ~
1400: 30 78 38 30 30 30 29 20 7c 20 28 66 20 3c 3c 20 0x8000) | (f <<
1410: 31 35 29 29 3b 20 72 65 74 75 72 6e 20 66 3b 20 15)); return f;
1420: 7d 0a 7d 0a 0a 65 78 74 65 72 6e 20 28 57 69 6e }.}..extern (Win
1430: 64 6f 77 73 29 20 7b 0a 09 42 4f 4f 4c 20 44 64 dows) {..BOOL Dd
1440: 65 53 65 74 51 75 61 6c 69 74 79 4f 66 53 65 72 eSetQualityOfSer
1450: 76 69 63 65 28 48 57 4e 44 2c 20 43 50 74 72 21 vice(HWND, CPtr!
1460: 28 53 45 43 55 52 49 54 59 5f 51 55 41 4c 49 54 (SECURITY_QUALIT
1470: 59 5f 4f 46 5f 53 45 52 56 49 43 45 29 2c 0a 09 Y_OF_SERVICE),..
1480: 20 20 50 53 45 43 55 52 49 54 59 5f 51 55 41 4c PSECURITY_QUAL
1490: 49 54 59 5f 4f 46 5f 53 45 52 56 49 43 45 29 3b ITY_OF_SERVICE);
14a0: 0a 09 42 4f 4f 4c 20 49 6d 70 65 72 73 6f 6e 61 ..BOOL Impersona
14b0: 74 65 44 64 65 43 6c 69 65 6e 74 57 69 6e 64 6f teDdeClientWindo
14c0: 77 28 48 57 4e 44 2c 20 48 57 4e 44 29 3b 0a 09 w(HWND, HWND);..
14d0: 4c 50 41 52 41 4d 20 50 61 63 6b 44 44 45 6c 50 LPARAM PackDDElP
14e0: 61 72 61 6d 28 55 49 4e 54 2c 20 55 49 4e 54 5f aram(UINT, UINT_
14f0: 50 54 52 2c 20 55 49 4e 54 5f 50 54 52 29 3b 0a PTR, UINT_PTR);.
1500: 09 42 4f 4f 4c 20 55 6e 70 61 63 6b 44 44 45 6c .BOOL UnpackDDEl
1510: 50 61 72 61 6d 28 55 49 4e 54 2c 20 4c 50 41 52 Param(UINT, LPAR
1520: 41 4d 2c 20 50 55 49 4e 54 5f 50 54 52 2c 20 50 AM, PUINT_PTR, P
1530: 55 49 4e 54 5f 50 54 52 29 3b 0a 09 42 4f 4f 4c UINT_PTR);..BOOL
1540: 20 46 72 65 65 44 44 45 6c 50 61 72 61 6d 28 55 FreeDDElParam(U
1550: 49 4e 54 2c 20 4c 50 41 52 41 4d 29 3b 0a 09 4c INT, LPARAM);..L
1560: 50 41 52 41 4d 20 52 65 75 73 65 44 44 45 6c 50 PARAM ReuseDDElP
1570: 61 72 61 6d 28 4c 50 41 52 41 4d 2c 20 55 49 4e aram(LPARAM, UIN
1580: 54 2c 20 55 49 4e 54 2c 20 55 49 4e 54 5f 50 54 T, UINT, UINT_PT
1590: 52 2c 20 55 49 4e 54 5f 50 54 52 29 3b 0a 7d 0a R, UINT_PTR);.}.
15a0: 0a 64 65 62 75 67 20 28 57 69 6e 64 6f 77 73 55 .debug (WindowsU
15b0: 6e 69 74 54 65 73 74 29 20 7b 0a 09 75 6e 69 74 nitTest) {..unit
15c0: 74 65 73 74 20 7b 0a 09 09 44 44 45 41 43 4b 20 test {...DDEACK
15d0: 64 64 65 61 63 6b 3b 0a 0a 09 09 77 69 74 68 20 ddeack;....with
15e0: 28 64 64 65 61 63 6b 29 20 7b 0a 09 09 09 72 65 (ddeack) {....re
15f0: 73 65 72 76 65 64 20 3d 20 31 30 3b 0a 09 09 09 served = 10;....
1600: 61 73 73 65 72 74 20 28 5f 62 66 20 3d 3d 20 30 assert (_bf == 0
1610: 78 30 41 29 3b 0a 09 09 09 66 42 75 73 79 20 3d x0A);....fBusy =
1620: 20 74 72 75 65 3b 0a 09 09 09 61 73 73 65 72 74 true;....assert
1630: 20 28 5f 62 66 20 3d 3d 20 30 78 34 41 29 3b 0a (_bf == 0x4A);.
1640: 09 09 09 66 41 63 6b 20 3d 20 74 72 75 65 3b 0a ...fAck = true;.
1650: 09 09 09 61 73 73 65 72 74 20 28 5f 62 66 20 3d ...assert (_bf =
1660: 3d 20 30 78 43 41 29 3b 0a 0a 09 09 09 61 73 73 = 0xCA);.....ass
1670: 65 72 74 20 28 72 65 73 65 72 76 65 64 20 3d 3d ert (reserved ==
1680: 20 31 30 29 3b 0a 09 09 09 61 73 73 65 72 74 20 10);....assert
1690: 28 66 42 75 73 79 20 3d 3d 20 74 72 75 65 29 3b (fBusy == true);
16a0: 0a 09 09 09 61 73 73 65 72 74 20 28 66 41 63 6b ....assert (fAck
16b0: 20 3d 3d 20 74 72 75 65 29 3b 0a 0a 09 09 09 72 == true);.....r
16c0: 65 73 65 72 76 65 64 20 3d 20 34 33 3b 0a 09 09 eserved = 43;...
16d0: 09 61 73 73 65 72 74 20 28 5f 62 66 20 3d 3d 20 .assert (_bf ==
16e0: 30 78 45 42 29 3b 0a 09 09 09 66 42 75 73 79 20 0xEB);....fBusy
16f0: 3d 20 66 61 6c 73 65 3b 0a 09 09 09 61 73 73 65 = false;....asse
1700: 72 74 20 28 5f 62 66 20 3d 3d 20 30 78 41 42 29 rt (_bf == 0xAB)
1710: 3b 0a 09 09 09 66 41 63 6b 20 3d 20 66 61 6c 73 ;....fAck = fals
1720: 65 3b 0a 09 09 09 61 73 73 65 72 74 20 28 5f 62 e;....assert (_b
1730: 66 20 3d 3d 20 30 78 32 42 29 3b 0a 0a 09 09 09 f == 0x2B);.....
1740: 61 73 73 65 72 74 20 28 72 65 73 65 72 76 65 64 assert (reserved
1750: 20 3d 3d 20 34 33 29 3b 0a 09 09 09 61 73 73 65 == 43);....asse
1760: 72 74 20 28 66 42 75 73 79 20 3d 3d 20 66 61 6c rt (fBusy == fal
1770: 73 65 29 3b 0a 09 09 09 61 73 73 65 72 74 20 28 se);....assert (
1780: 66 41 63 6b 20 3d 3d 20 66 61 6c 73 65 29 3b 0a fAck == false);.
1790: 09 09 7d 0a 0a 09 09 44 44 45 50 4f 4b 45 20 64 ..}....DDEPOKE d
17a0: 64 65 70 6f 6b 65 3b 0a 0a 09 09 77 69 74 68 20 depoke;....with
17b0: 28 64 64 65 70 6f 6b 65 29 20 7b 0a 09 09 09 75 (ddepoke) {....u
17c0: 6e 75 73 65 64 20 3d 20 33 34 35 36 3b 0a 09 09 nused = 3456;...
17d0: 09 61 73 73 65 72 74 20 28 5f 62 66 20 3d 3d 20 .assert (_bf ==
17e0: 30 78 30 44 38 30 29 3b 0a 09 09 09 66 52 65 6c 0x0D80);....fRel
17f0: 65 61 73 65 20 3d 20 74 72 75 65 3b 0a 09 09 09 ease = true;....
1800: 61 73 73 65 72 74 20 28 5f 62 66 20 3d 3d 20 30 assert (_bf == 0
1810: 78 32 44 38 30 29 3b 0a 09 09 09 66 52 65 73 65 x2D80);....fRese
1820: 72 76 65 64 20 3d 20 32 3b 0a 09 09 09 61 73 73 rved = 2;....ass
1830: 65 72 74 20 28 5f 62 66 20 3d 3d 20 30 78 41 44 ert (_bf == 0xAD
1840: 38 30 29 3b 0a 0a 09 09 09 61 73 73 65 72 74 20 80);.....assert
1850: 28 75 6e 75 73 65 64 20 3d 3d 20 33 34 35 36 29 (unused == 3456)
1860: 3b 0a 09 09 09 61 73 73 65 72 74 20 28 66 52 65 ;....assert (fRe
1870: 6c 65 61 73 65 20 3d 3d 20 74 72 75 65 29 3b 0a lease == true);.
1880: 09 09 09 61 73 73 65 72 74 20 28 66 52 65 73 65 ...assert (fRese
1890: 72 76 65 64 20 3d 3d 20 32 29 3b 0a 0a 09 09 09 rved == 2);.....
18a0: 75 6e 75 73 65 64 20 3d 20 32 31 30 39 3b 0a 09 unused = 2109;..
18b0: 09 09 61 73 73 65 72 74 20 28 5f 62 66 20 3d 3d ..assert (_bf ==
18c0: 20 30 78 61 38 33 64 29 3b 0a 09 09 09 66 52 65 0xa83d);....fRe
18d0: 6c 65 61 73 65 20 3d 20 66 61 6c 73 65 3b 0a 09 lease = false;..
18e0: 09 09 61 73 73 65 72 74 20 28 5f 62 66 20 3d 3d ..assert (_bf ==
18f0: 20 30 78 38 38 33 64 29 3b 0a 09 09 09 66 52 65 0x883d);....fRe
1900: 73 65 72 76 65 64 20 3d 20 31 3b 0a 09 09 09 61 served = 1;....a
1910: 73 73 65 72 74 20 28 5f 62 66 20 3d 3d 20 30 78 ssert (_bf == 0x
1920: 34 38 33 64 29 3b 0a 0a 09 09 09 61 73 73 65 72 483d);.....asser
1930: 74 20 28 75 6e 75 73 65 64 20 3d 3d 20 32 31 30 t (unused == 210
1940: 39 29 3b 0a 09 09 09 61 73 73 65 72 74 20 28 66 9);....assert (f
1950: 52 65 6c 65 61 73 65 20 3d 3d 20 66 61 6c 73 65 Release == false
1960: 29 3b 0a 09 09 09 61 73 73 65 72 74 20 28 66 52 );....assert (fR
1970: 65 73 65 72 76 65 64 20 3d 3d 20 31 29 3b 0a 09 eserved == 1);..
1980: 09 7d 0a 09 7d 0a 7d 0a .}..}.}.