4e2933c620 2015-04-21 kinaba: /***********************************************************************\ 4e2933c620 2015-04-21 kinaba: * dde.d * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Windows API header module * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Translated from MinGW Windows headers * 4e2933c620 2015-04-21 kinaba: * by Stewart Gordon * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Placed into public domain * 4e2933c620 2015-04-21 kinaba: \***********************************************************************/ c2b7a98c21 2011-02-23 kinaba: module win32.dde; 4e2933c620 2015-04-21 kinaba: pragma(lib, "user32.lib"); 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: private import win32.windef; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum : uint { 4e2933c620 2015-04-21 kinaba: WM_DDE_FIRST = 0x03E0, 4e2933c620 2015-04-21 kinaba: WM_DDE_INITIATE = WM_DDE_FIRST, 4e2933c620 2015-04-21 kinaba: WM_DDE_TERMINATE, 4e2933c620 2015-04-21 kinaba: WM_DDE_ADVISE, 4e2933c620 2015-04-21 kinaba: WM_DDE_UNADVISE, 4e2933c620 2015-04-21 kinaba: WM_DDE_ACK, 4e2933c620 2015-04-21 kinaba: WM_DDE_DATA, 4e2933c620 2015-04-21 kinaba: WM_DDE_REQUEST, 4e2933c620 2015-04-21 kinaba: WM_DDE_POKE, 4e2933c620 2015-04-21 kinaba: WM_DDE_EXECUTE, 4e2933c620 2015-04-21 kinaba: WM_DDE_LAST = WM_DDE_EXECUTE 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct DDEACK { 4e2933c620 2015-04-21 kinaba: ubyte bAppReturnCode; 4e2933c620 2015-04-21 kinaba: ubyte _bf; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: ubyte reserved() { return cast(ubyte) (_bf & 0x3F); } 4e2933c620 2015-04-21 kinaba: bool fBusy() { return cast(bool) (_bf & 0x40); } 4e2933c620 2015-04-21 kinaba: bool fAck() { return cast(bool) (_bf & 0x80); } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: ubyte reserved(ubyte r) { 4e2933c620 2015-04-21 kinaba: _bf = cast(ubyte) ((_bf & ~0x3F) | (r & 0x3F)); 4e2933c620 2015-04-21 kinaba: return cast(ubyte)(r & 0x3F); 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: bool fBusy(bool f) { _bf = cast(ubyte) ((_bf & ~0x40) | (f << 6)); return f; } 4e2933c620 2015-04-21 kinaba: bool fAck(bool f) { _bf = cast(ubyte) ((_bf & ~0x80) | (f << 7)); return f; } 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct DDEADVISE { 4e2933c620 2015-04-21 kinaba: ushort _bf; 4e2933c620 2015-04-21 kinaba: short cfFormat; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: ushort reserved() { return cast(ushort) (_bf & 0x3FFF); } 4e2933c620 2015-04-21 kinaba: bool fDeferUpd() { return cast(bool) (_bf & 0x4000); } 4e2933c620 2015-04-21 kinaba: bool fAckReq() { return cast(bool) (_bf & 0x8000); } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: ushort reserved(ushort r) { 4e2933c620 2015-04-21 kinaba: _bf = cast(ushort) ((_bf & ~0x3FFF) | (r & 0x3FFF)); 4e2933c620 2015-04-21 kinaba: return cast(ushort)(r & 0x3FFF); 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: bool fDeferUpd(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } 4e2933c620 2015-04-21 kinaba: bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct DDEDATA { 4e2933c620 2015-04-21 kinaba: ushort _bf; 4e2933c620 2015-04-21 kinaba: short cfFormat; 4e2933c620 2015-04-21 kinaba: byte _Value; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: ushort unused() { return cast(ushort) (_bf & 0x0FFF); } 4e2933c620 2015-04-21 kinaba: bool fResponse() { return cast(bool) (_bf & 0x1000); } 4e2933c620 2015-04-21 kinaba: bool fRelease() { return cast(bool) (_bf & 0x2000); } 4e2933c620 2015-04-21 kinaba: bool reserved() { return cast(bool) (_bf & 0x4000); } 4e2933c620 2015-04-21 kinaba: bool fAckReq() { return cast(bool) (_bf & 0x8000); } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: byte* Value() { return &_Value; } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: ushort unused(ushort r) { 4e2933c620 2015-04-21 kinaba: _bf = cast(ushort) ((_bf & ~0x0FFF) | (r & 0x0FFF)); 4e2933c620 2015-04-21 kinaba: return cast(ushort)(r & 0x0FFF); 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: bool fResponse(bool f) { _bf = cast(ushort) ((_bf & ~0x1000) | (f << 12)); return f; } 4e2933c620 2015-04-21 kinaba: bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } 4e2933c620 2015-04-21 kinaba: bool reserved(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } 4e2933c620 2015-04-21 kinaba: bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct DDEPOKE { 4e2933c620 2015-04-21 kinaba: ushort _bf; 4e2933c620 2015-04-21 kinaba: short cfFormat; 4e2933c620 2015-04-21 kinaba: byte _Value; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: ushort unused() { return cast(ushort) (_bf & 0x1FFF); } 4e2933c620 2015-04-21 kinaba: bool fRelease() { return cast(bool) (_bf & 0x2000); } 4e2933c620 2015-04-21 kinaba: ubyte fReserved() { return cast(ubyte) ((_bf & 0xC000) >>> 14); } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: byte* Value() { return &_Value; } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: ushort unused(ushort u) { 4e2933c620 2015-04-21 kinaba: _bf = cast(ushort) ((_bf & ~0x1FFF) | (u & 0x1FFF)); 4e2933c620 2015-04-21 kinaba: return cast(ushort)(u & 0x1FFF); 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } 4e2933c620 2015-04-21 kinaba: ubyte fReserved(ubyte r) { _bf = cast(ushort) ((_bf & ~0xC000) | (r << 14)); return r; } 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: deprecated struct DDELN { 4e2933c620 2015-04-21 kinaba: ushort _bf; 4e2933c620 2015-04-21 kinaba: short cfFormat; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: ushort unused() { return cast(ushort) (_bf & 0x1FFF); } 4e2933c620 2015-04-21 kinaba: bool fRelease() { return cast(bool) (_bf & 0x2000); } 4e2933c620 2015-04-21 kinaba: bool fDeferUpd() { return cast(bool) (_bf & 0x4000); } 4e2933c620 2015-04-21 kinaba: bool fAckReq() { return cast(bool) (_bf & 0x8000); } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: ushort unused(ushort u) { 4e2933c620 2015-04-21 kinaba: _bf = cast(ushort)((_bf & ~0x1FFF) | (u & 0x1FFF)); 4e2933c620 2015-04-21 kinaba: return cast(ushort)(u & 0x1FFF); 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } 4e2933c620 2015-04-21 kinaba: bool fDeferUpd(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } 4e2933c620 2015-04-21 kinaba: bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } c2b7a98c21 2011-02-23 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: deprecated struct DDEUP { 4e2933c620 2015-04-21 kinaba: ushort _bf; 4e2933c620 2015-04-21 kinaba: short cfFormat; 4e2933c620 2015-04-21 kinaba: byte _rgb; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: ushort unused() { return cast(ushort) (_bf & 0x0FFF); } 4e2933c620 2015-04-21 kinaba: bool fAck() { return cast(bool) (_bf & 0x1000); } 4e2933c620 2015-04-21 kinaba: bool fRelease() { return cast(bool) (_bf & 0x2000); } 4e2933c620 2015-04-21 kinaba: bool fReserved() { return cast(bool) (_bf & 0x4000); } 4e2933c620 2015-04-21 kinaba: bool fAckReq() { return cast(bool) (_bf & 0x8000); } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: byte* rgb() { return &_rgb; } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: ushort unused(ushort r) { 4e2933c620 2015-04-21 kinaba: _bf = cast(ushort) ((_bf & ~0x0FFF) | (r & 0x0FFF)); 4e2933c620 2015-04-21 kinaba: return cast(ushort)(r & 0x0FFF); 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: bool fAck(bool f) { _bf = cast(ushort) ((_bf & ~0x1000) | (f << 12)); return f; } 4e2933c620 2015-04-21 kinaba: bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } 4e2933c620 2015-04-21 kinaba: bool fReserved(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } 4e2933c620 2015-04-21 kinaba: bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } c2b7a98c21 2011-02-23 kinaba: } c2b7a98c21 2011-02-23 kinaba: 4e2933c620 2015-04-21 kinaba: extern (Windows) { 4e2933c620 2015-04-21 kinaba: BOOL DdeSetQualityOfService(HWND, CPtr!(SECURITY_QUALITY_OF_SERVICE), 4e2933c620 2015-04-21 kinaba: PSECURITY_QUALITY_OF_SERVICE); 4e2933c620 2015-04-21 kinaba: BOOL ImpersonateDdeClientWindow(HWND, HWND); 4e2933c620 2015-04-21 kinaba: LPARAM PackDDElParam(UINT, UINT_PTR, UINT_PTR); 4e2933c620 2015-04-21 kinaba: BOOL UnpackDDElParam(UINT, LPARAM, PUINT_PTR, PUINT_PTR); 4e2933c620 2015-04-21 kinaba: BOOL FreeDDElParam(UINT, LPARAM); 4e2933c620 2015-04-21 kinaba: LPARAM ReuseDDElParam(LPARAM, UINT, UINT, UINT_PTR, UINT_PTR); c2b7a98c21 2011-02-23 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: debug (WindowsUnitTest) { 4e2933c620 2015-04-21 kinaba: unittest { 4e2933c620 2015-04-21 kinaba: DDEACK ddeack; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: with (ddeack) { 4e2933c620 2015-04-21 kinaba: reserved = 10; 4e2933c620 2015-04-21 kinaba: assert (_bf == 0x0A); 4e2933c620 2015-04-21 kinaba: fBusy = true; 4e2933c620 2015-04-21 kinaba: assert (_bf == 0x4A); 4e2933c620 2015-04-21 kinaba: fAck = true; 4e2933c620 2015-04-21 kinaba: assert (_bf == 0xCA); 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: assert (reserved == 10); 4e2933c620 2015-04-21 kinaba: assert (fBusy == true); 4e2933c620 2015-04-21 kinaba: assert (fAck == true); 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: reserved = 43; 4e2933c620 2015-04-21 kinaba: assert (_bf == 0xEB); 4e2933c620 2015-04-21 kinaba: fBusy = false; 4e2933c620 2015-04-21 kinaba: assert (_bf == 0xAB); 4e2933c620 2015-04-21 kinaba: fAck = false; 4e2933c620 2015-04-21 kinaba: assert (_bf == 0x2B); 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: assert (reserved == 43); 4e2933c620 2015-04-21 kinaba: assert (fBusy == false); 4e2933c620 2015-04-21 kinaba: assert (fAck == false); 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: DDEPOKE ddepoke; c2b7a98c21 2011-02-23 kinaba: 4e2933c620 2015-04-21 kinaba: with (ddepoke) { 4e2933c620 2015-04-21 kinaba: unused = 3456; 4e2933c620 2015-04-21 kinaba: assert (_bf == 0x0D80); 4e2933c620 2015-04-21 kinaba: fRelease = true; 4e2933c620 2015-04-21 kinaba: assert (_bf == 0x2D80); 4e2933c620 2015-04-21 kinaba: fReserved = 2; 4e2933c620 2015-04-21 kinaba: assert (_bf == 0xAD80); c2b7a98c21 2011-02-23 kinaba: 4e2933c620 2015-04-21 kinaba: assert (unused == 3456); 4e2933c620 2015-04-21 kinaba: assert (fRelease == true); 4e2933c620 2015-04-21 kinaba: assert (fReserved == 2); c2b7a98c21 2011-02-23 kinaba: 4e2933c620 2015-04-21 kinaba: unused = 2109; 4e2933c620 2015-04-21 kinaba: assert (_bf == 0xa83d); 4e2933c620 2015-04-21 kinaba: fRelease = false; 4e2933c620 2015-04-21 kinaba: assert (_bf == 0x883d); 4e2933c620 2015-04-21 kinaba: fReserved = 1; 4e2933c620 2015-04-21 kinaba: assert (_bf == 0x483d); c2b7a98c21 2011-02-23 kinaba: 4e2933c620 2015-04-21 kinaba: assert (unused == 2109); 4e2933c620 2015-04-21 kinaba: assert (fRelease == false); 4e2933c620 2015-04-21 kinaba: assert (fReserved == 1); 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: }