File Annotation

Not logged in
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: }