comparison dynamin/gui/windows_window.d @ 12:7a7e5f9bd1ae

Implement invoke() and invokeNow() on Windows.
author Jordan Miner <jminer7@gmail.com>
date Sat, 18 Jul 2009 01:37:06 -0500
parents aa4efef0f0b1
children ef81af74a306
comparison
equal deleted inserted replaced
11:df1c8e659b75 12:7a7e5f9bd1ae
32 public import dynamin.all_gui; 32 public import dynamin.all_gui;
33 public import dynamin.gui.window; 33 public import dynamin.gui.window;
34 public import dynamin.gui.key; 34 public import dynamin.gui.key;
35 public import dynamin.all_painting; 35 public import dynamin.all_painting;
36 public import tango.io.Stdout; 36 public import tango.io.Stdout;
37 public import tango.core.sync.Semaphore;
37 38
38 /// 39 ///
39 enum WindowsVersion { 40 enum WindowsVersion {
40 /// 41 ///
41 Windows95, /// 42 Windows95, ///
115 Stdout("GetMessage() failed!").newline; 116 Stdout("GetMessage() failed!").newline;
116 TranslateMessage(&msg); 117 TranslateMessage(&msg);
117 DispatchMessage(&msg); 118 DispatchMessage(&msg);
118 } 119 }
119 } 120 }
120 } 121 void backend_invoke(void delegate() dg) {
121 122 PostMessage(msgWnd, WM_USER + 7,
123 cast(word)dg.ptr, cast(word)dg.funcptr);
124 }
125 void backend_invokeNow(void delegate() dg) {
126 SendMessage(msgWnd, WM_USER + 7,
127 cast(word)dg.ptr, cast(word)dg.funcptr);
128 }
129
130 }
122 /* 131 /*
123 * The reason backends use the backend_ prefix and: 132 * The reason backends use the backend_ prefix and:
124 * mixin Backend(); 133 * mixin Backend();
125 * instead of using just the method name and 134 * instead of using just the method name and
126 * mixin Backend() backend; 135 * mixin Backend() backend;
964 return 0; 973 return 0;
965 case WM_POWERBROADCAST: 974 case WM_POWERBROADCAST:
966 if(wParam == PBT_APMRESUMESUSPEND || wParam == PBT_APMRESUMECRITICAL) 975 if(wParam == PBT_APMRESUMESUSPEND || wParam == PBT_APMRESUMECRITICAL)
967 Environment.backend_increaseTimerRes(); 976 Environment.backend_increaseTimerRes();
968 return 0; 977 return 0;
978 case WM_USER + 7:
979 void delegate() dg;
980 dg.ptr = cast(void*)wParam;
981 dg.funcptr = cast(void function())lParam;
982 dg();
983 return 0;
969 case WM_TIMER: 984 case WM_TIMER:
970 case WM_CHANGECBCHAIN: 985 case WM_CHANGECBCHAIN:
971 case WM_DRAWCLIPBOARD: 986 case WM_DRAWCLIPBOARD:
972 case WM_TIMECHANGE: //?? 987 case WM_TIMECHANGE: //??
973 default: 988 default: