diff win32/dde.d @ 1:4a9dcbd9e54f

-files of 0.13 beta -fixes so that it now compiles with the current dmd version
author marton@basel.hu
date Tue, 05 Apr 2011 20:44:01 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/win32/dde.d	Tue Apr 05 20:44:01 2011 +0200
@@ -0,0 +1,215 @@
+/***********************************************************************\
+*                                 dde.d                                 *
+*                                                                       *
+*                       Windows API header module                       *
+*                                                                       *
+*                 Translated from MinGW Windows headers                 *
+*                           by Stewart Gordon                           *
+*                                                                       *
+*                       Placed into public domain                       *
+\***********************************************************************/
+module win32.dde;
+pragma(lib, "user32.lib");
+
+private import win32.windef;
+
+enum : uint {
+	WM_DDE_FIRST     = 0x03E0,
+	WM_DDE_INITIATE  = WM_DDE_FIRST,
+	WM_DDE_TERMINATE,
+	WM_DDE_ADVISE,
+	WM_DDE_UNADVISE,
+	WM_DDE_ACK,
+	WM_DDE_DATA,
+	WM_DDE_REQUEST,
+	WM_DDE_POKE,
+	WM_DDE_EXECUTE,
+	WM_DDE_LAST      = WM_DDE_EXECUTE
+}
+
+struct DDEACK {
+	ubyte bAppReturnCode;
+	ubyte _bf;
+
+	ubyte reserved() { return cast(ubyte) (_bf & 0x3F); }
+	bool  fBusy()    { return cast(bool)  (_bf & 0x40); }
+	bool  fAck()     { return cast(bool)  (_bf & 0x80); }
+
+	ubyte reserved(ubyte r) {
+		_bf = cast(ubyte) ((_bf & ~0x3F) | (r & 0x3F));
+		return cast(ubyte)(r & 0x3F);
+	}
+
+	bool fBusy(bool f) { _bf = cast(ubyte) ((_bf & ~0x40) | (f << 6)); return f; }
+	bool fAck(bool f)  { _bf = cast(ubyte) ((_bf & ~0x80) | (f << 7)); return f; }
+}
+
+struct DDEADVISE {
+	ushort _bf;
+	short  cfFormat;
+
+	ushort reserved()  { return cast(ushort) (_bf & 0x3FFF); }
+	bool   fDeferUpd() { return cast(bool)   (_bf & 0x4000); }
+	bool   fAckReq()   { return cast(bool)   (_bf & 0x8000); }
+
+	ushort reserved(ushort r) {
+		_bf = cast(ushort) ((_bf & ~0x3FFF) | (r & 0x3FFF));
+		return cast(ushort)(r & 0x3FFF);
+	}
+
+	bool   fDeferUpd(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; }
+	bool   fAckReq(bool f)   { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; }
+}
+
+struct DDEDATA {
+	ushort _bf;
+	short  cfFormat;
+	byte   _Value;
+
+	ushort unused()    { return cast(ushort) (_bf & 0x0FFF); }
+	bool   fResponse() { return cast(bool)   (_bf & 0x1000); }
+	bool   fRelease()  { return cast(bool)   (_bf & 0x2000); }
+	bool   reserved()  { return cast(bool)   (_bf & 0x4000); }
+	bool   fAckReq()   { return cast(bool)   (_bf & 0x8000); }
+
+	byte*  Value() { return &_Value; }
+
+	ushort unused(ushort r) {
+		_bf = cast(ushort) ((_bf & ~0x0FFF) | (r & 0x0FFF));
+		return cast(ushort)(r & 0x0FFF);
+	}
+
+	bool   fResponse(bool f) { _bf = cast(ushort) ((_bf & ~0x1000) | (f << 12)); return f; }
+	bool   fRelease(bool f)  { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; }
+	bool   reserved(bool f)  { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; }
+	bool   fAckReq(bool f)   { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; }
+}
+
+struct DDEPOKE {
+	ushort _bf;
+	short  cfFormat;
+	byte   _Value;
+
+	ushort unused()    { return cast(ushort) (_bf & 0x1FFF); }
+	bool   fRelease()  { return cast(bool)   (_bf & 0x2000); }
+	ubyte  fReserved() { return cast(ubyte)  ((_bf & 0xC000) >>> 14); }
+
+	byte*  Value() { return &_Value; }
+
+	ushort unused(ushort u) {
+		_bf = cast(ushort) ((_bf & ~0x1FFF) | (u & 0x1FFF));
+		return cast(ushort)(u & 0x1FFF);
+	}
+
+	bool   fRelease(bool f)   { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; }
+	ubyte  fReserved(ubyte r) { _bf = cast(ushort) ((_bf & ~0xC000) | (r << 14)); return r; }
+}
+
+deprecated struct DDELN {
+	ushort _bf;
+	short  cfFormat;
+
+	ushort unused()    { return cast(ushort) (_bf & 0x1FFF); }
+	bool   fRelease()  { return cast(bool)   (_bf & 0x2000); }
+	bool   fDeferUpd() { return cast(bool)   (_bf & 0x4000); }
+	bool   fAckReq()   { return cast(bool)   (_bf & 0x8000); }
+
+	ushort unused(ushort u) {
+		_bf = cast(ushort)((_bf & ~0x1FFF) | (u & 0x1FFF));
+		return cast(ushort)(u & 0x1FFF);
+	}
+
+	bool   fRelease(bool f)  { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; }
+	bool   fDeferUpd(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; }
+	bool   fAckReq(bool f)   { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; }
+}
+
+deprecated struct DDEUP {
+	ushort _bf;
+	short  cfFormat;
+	byte   _rgb;
+
+	ushort unused()    { return cast(ushort) (_bf & 0x0FFF); }
+	bool   fAck()      { return cast(bool)   (_bf & 0x1000); }
+	bool   fRelease()  { return cast(bool)   (_bf & 0x2000); }
+	bool   fReserved() { return cast(bool)   (_bf & 0x4000); }
+	bool   fAckReq()   { return cast(bool)   (_bf & 0x8000); }
+
+	byte*  rgb() { return &_rgb; }
+
+	ushort unused(ushort r) {
+		_bf = cast(ushort) ((_bf & ~0x0FFF) | (r & 0x0FFF));
+		return cast(ushort)(r & 0x0FFF);
+	}
+
+	bool   fAck(bool f)      { _bf = cast(ushort) ((_bf & ~0x1000) | (f << 12)); return f; }
+	bool   fRelease(bool f)  { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; }
+	bool   fReserved(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; }
+	bool   fAckReq(bool f)   { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; }
+}
+
+extern (Windows) {
+	BOOL DdeSetQualityOfService(HWND, SECURITY_QUALITY_OF_SERVICE*,
+	  PSECURITY_QUALITY_OF_SERVICE);
+	BOOL ImpersonateDdeClientWindow(HWND, HWND);
+	LPARAM PackDDElParam(UINT, UINT_PTR, UINT_PTR);
+	BOOL UnpackDDElParam(UINT, LPARAM, PUINT_PTR, PUINT_PTR);
+	BOOL FreeDDElParam(UINT, LPARAM);
+	LPARAM ReuseDDElParam(LPARAM, UINT, UINT, UINT_PTR, UINT_PTR);
+}
+
+debug (WindowsUnitTest) {
+	unittest {
+		DDEACK ddeack;
+
+		with (ddeack) {
+			reserved = 10;
+			assert (_bf == 0x0A);
+			fBusy = true;
+			assert (_bf == 0x4A);
+			fAck = true;
+			assert (_bf == 0xCA);
+
+			assert (reserved == 10);
+			assert (fBusy == true);
+			assert (fAck == true);
+
+			reserved = 43;
+			assert (_bf == 0xEB);
+			fBusy = false;
+			assert (_bf == 0xAB);
+			fAck = false;
+			assert (_bf == 0x2B);
+
+			assert (reserved == 43);
+			assert (fBusy == false);
+			assert (fAck == false);
+		}
+
+		DDEPOKE ddepoke;
+
+		with (ddepoke) {
+			unused = 3456;
+			assert (_bf == 0x0D80);
+			fRelease = true;
+			assert (_bf == 0x2D80);
+			fReserved = 2;
+			assert (_bf == 0xAD80);
+
+			assert (unused == 3456);
+			assert (fRelease == true);
+			assert (fReserved == 2);
+
+			unused = 2109;
+			assert (_bf == 0xa83d);
+			fRelease = false;
+			assert (_bf == 0x883d);
+			fReserved = 1;
+			assert (_bf == 0x483d);
+
+			assert (unused == 2109);
+			assert (fRelease == false);
+			assert (fReserved == 1);
+		}
+	}
+}