diff options
Diffstat (limited to 'plugins/!Deprecated/MagneticWindows/src/MagneticWindows.cpp')
-rw-r--r-- | plugins/!Deprecated/MagneticWindows/src/MagneticWindows.cpp | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/plugins/!Deprecated/MagneticWindows/src/MagneticWindows.cpp b/plugins/!Deprecated/MagneticWindows/src/MagneticWindows.cpp new file mode 100644 index 0000000000..bcf38c3036 --- /dev/null +++ b/plugins/!Deprecated/MagneticWindows/src/MagneticWindows.cpp @@ -0,0 +1,143 @@ +#include "MagneticWindowsCore.h"
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// Magnetic Windows
+//
+// Autor: Michael Kunz
+// EMail: Michael.Kunz@s2005.tu-chemnitz.de
+//
+//
+// thanks to: pescuma
+//
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// Variables
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+PLUGININFOEX pluginInfo = {
+ sizeof(PLUGININFOEX),
+ __PLUGIN_NAME,
+ PLUGIN_MAKE_VERSION(__MAJOR_VERSION, __MINOR_VERSION, __RELEASE_NUM, __BUILD_NUM),
+ __DESCRIPTION,
+ __AUTHOR,
+ __AUTHOREMAIL,
+ __COPYRIGHT,
+ __AUTHORWEB,
+ UNICODE_AWARE,
+ // {08C01613-24C8-486F-BDAE-2C3DDCAF9347}
+ {0x8c01613, 0x24c8, 0x486f, { 0xbd, 0xae, 0x2c, 0x3d, 0xdc, 0xaf, 0x93, 0x47 }}
+};
+
+HINSTANCE hInst;
+int hLangpack;
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// Plugin Functions
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+//For other Plugins to start snapping for other Windows
+INT_PTR SnapPluginWindowStart(WPARAM wParam, LPARAM)
+{
+ if (!WindowOpen((HWND)wParam)) return 1;
+ return 0;
+}
+
+//For other Plugins to stop snapping for other Windows
+INT_PTR SnapPluginWindowStop(WPARAM wParam, LPARAM)
+{
+ if (!WindowClose((HWND)wParam)) return 1;
+ return 0;
+}
+
+int PluginMessageWindowEvent(WPARAM, LPARAM lParam)
+{
+ MessageWindowEventData *Data = (MessageWindowEventData*) lParam;
+
+ switch (Data->uType) {
+ case MSG_WINDOW_EVT_OPEN:
+ {
+ HWND hWnd = Data->hwndWindow;
+ HWND hWndParent = GetParent(hWnd);
+ while ((hWndParent != 0) && (hWndParent != GetDesktopWindow()) && (IsWindowVisible(hWndParent))) {
+ hWnd = hWndParent;
+ hWndParent = GetParent(hWnd);
+ }
+
+ WindowOpen(hWnd);
+ }
+ break;
+
+ case MSG_WINDOW_EVT_CLOSING:
+ WindowClose(Data->hwndWindow);
+ break;
+ }
+
+ return 0;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// Main Functions
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+int SnapPluginStart(WPARAM, LPARAM)
+{
+ LoadOptions();
+
+ HookEvent(ME_MSG_WINDOWEVENT, PluginMessageWindowEvent);
+
+ WindowOpen((HWND)CallService(MS_CLUI_GETHWND,0,0));
+ return 0;
+}
+
+int SnapPluginShutDown(WPARAM, LPARAM)
+{
+ WindowCloseAll();
+ return 0;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// Exportet Functions
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD)
+{
+ return &pluginInfo;
+}
+
+extern "C" int __declspec(dllexport) Load()
+{
+ mir_getLP(&pluginInfo);
+
+ HookEvent(ME_SYSTEM_MODULESLOADED, SnapPluginStart);
+ HookEvent(ME_SYSTEM_PRESHUTDOWN, SnapPluginShutDown);
+ HookEvent(ME_OPT_INITIALISE, InitOptions);
+
+ CreateServiceFunction(MS_MW_ADDWINDOW, SnapPluginWindowStart);
+ CreateServiceFunction(MS_MW_REMWINDOW, SnapPluginWindowStop);
+ CreateServiceFunction(MS_MW_SNAPTOLIST, SnapToList);
+
+ WindowStart();
+ return 0;
+}
+
+extern "C" int __declspec(dllexport) Unload()
+{
+ return 0;
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// DLL MAIN
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
+{
+ hInst = hinstDLL;
+ return TRUE;
+}
|