summaryrefslogtreecommitdiff
path: root/Bus/IvyCursor/IvyCursor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Bus/IvyCursor/IvyCursor.cpp')
-rw-r--r--Bus/IvyCursor/IvyCursor.cpp325
1 files changed, 0 insertions, 325 deletions
diff --git a/Bus/IvyCursor/IvyCursor.cpp b/Bus/IvyCursor/IvyCursor.cpp
deleted file mode 100644
index 8b5e48e..0000000
--- a/Bus/IvyCursor/IvyCursor.cpp
+++ /dev/null
@@ -1,325 +0,0 @@
-// IvyCursor.cpp : définit le point d'entrée pour l'application.
-//
-
-#include "stdafx.h"
-#include <winuser.h>
-#include <crtdbg.h>
-#include <shellapi.h>
-#include "Ivy.h"
-#include "IvyCursor.h"
-#define MAX_LOADSTRING 100
-
-#define WM_ICONTRAY_NOTIFY (WM_USER+150)
-// Variables globales :
-HINSTANCE hInst; // instance actuelle
-TCHAR szTitle[MAX_LOADSTRING]; // Le texte de la barre de titre
-TCHAR szWindowClass[MAX_LOADSTRING]; // le nom de la classe de fenêtre principale
-HMENU hMenu; // handle menu icontray
-HMENU hmenuTrackPopup;
-
-// Ivy
-Ivy* ivy;
-
-// Pré-déclarations des fonctions incluses dans ce module de code :
-ATOM MyRegisterClass(HINSTANCE hInstance);
-BOOL InitInstance(HINSTANCE, int);
-LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
-LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM);
-
-
-void ivyCursorMouve(IvyApplication *app, void *user_data, int argc, const char **argv)
-{
- UINT nb;
- INPUT Inputs;
- int x,y;
- double xf = atof( *argv++ );
- double yf = atof( *argv++ );
- x = (int)(65535 * xf / 100.0 + 0.5);
- y = (int)(65535 * yf / 100.0 + 0.5);
- Inputs.type = INPUT_MOUSE;
- Inputs.mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE;
- Inputs.mi.time = 0; // system provide it
- Inputs.mi.dx = x;
- Inputs.mi.dy = y;
- nb = SendInput( 1, &Inputs, sizeof(INPUT));
-
- if ( nb != 1 )
- {
- _RPT3(_CRT_WARN,"ivyCursorMouve can move to x=%d y=%d error=%d\n",x,y,GetLastError());
- }
-}
-void ivyCursorClick(IvyApplication *app, void *user_data, int argc, const char **argv)
-{
- UINT nb;
- INPUT Inputs[2];
- int x,y;
- double xf = atof( *argv++ );
- double yf = atof( *argv++ );
- x = (int)(65535 * xf / 100.0 + 0.5);
- y = (int)(65535 * yf / 100.0 + 0.5);
- Inputs[0].type = INPUT_MOUSE;
- Inputs[0].mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_ABSOLUTE;
- Inputs[0].mi.time = 0; // system provide it
- Inputs[0].mi.dx = x;
- Inputs[0].mi.dy = y;
- Inputs[1].type = INPUT_MOUSE;
- Inputs[1].mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_LEFTUP | MOUSEEVENTF_ABSOLUTE;
- Inputs[1].mi.time = 0; // system provide it
- Inputs[1].mi.dx = x;
- Inputs[1].mi.dy = y;
- nb = SendInput( 2, Inputs, sizeof(INPUT));
-
- if ( nb != 2 )
- {
- _RPT3(_CRT_WARN,"ivyCursorClick can click to x=%d y=%d error=%d\n",x,y,GetLastError());
- }
-}
-int APIENTRY _tWinMain(HINSTANCE hInstance,
- HINSTANCE hPrevInstance,
- LPTSTR lpCmdLine,
- int nCmdShow)
-{
- MSG msg;
- // Initialise les chaînes globales
- LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
- LoadString(hInstance, IDC_IVYCURSOR, szWindowClass, MAX_LOADSTRING);
- hMenu = LoadMenu(hInstance, MAKEINTRESOURCE( IDR_MENU1 ) );
-
- // TrackPopupMenu cannot display the menu bar so get
- // a handle to the first shortcut menu.
-
- hmenuTrackPopup = GetSubMenu(hMenu, 0);
-
- if ( hmenuTrackPopup == NULL )
- {
- return FALSE;
- }
- MyRegisterClass(hInstance);
-
- // Effectue l'initialisation de l'application :
- if (!InitInstance (hInstance, nCmdShow))
- {
- return FALSE;
- }
- // Initoiailize ivy
- ivy = new Ivy("IvyCursor", "IvyCursor Ready", 0, FALSE );
- ivy->BindMsg(BUS_CALLBACK(ivyCursorMouve,0),"Cigale SetCursorPosition x=([0-9.]+) y=([0-9.]+)");
- ivy->BindMsg(BUS_CALLBACK(ivyCursorClick,0),"Cigale CursorSelectEvent x=([0-9.]+) y=([0-9.]+)");
- ivy->start( 0 );
-
- // Boucle de messages principale :
- while (GetMessage(&msg, NULL, 0, 0))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
-
- return (int) msg.wParam;
-}
-
-
-
-//
-// FONCTION : MyRegisterClass()
-//
-// BUT : inscrit la classe de fenêtre.
-//
-// COMMENTAIRES :
-//
-// Cette fonction et son utilisation sont nécessaires uniquement si vous souhaitez que ce code
-// soit compatible avec les systèmes Win32 avant la fonction 'RegisterClassEx'
-// qui a été ajoutée à Windows 95. Il est important d'appeler cette fonction
-// afin que l'application dispose des petites icônes correctes qui lui sont
-// associées.
-//
-ATOM MyRegisterClass(HINSTANCE hInstance)
-{
- WNDCLASSEX wcex;
-
- wcex.cbSize = sizeof(WNDCLASSEX);
-
- wcex.style = CS_HREDRAW | CS_VREDRAW;
- wcex.lpfnWndProc = (WNDPROC)WndProc;
- wcex.cbClsExtra = 0;
- wcex.cbWndExtra = 0;
- wcex.hInstance = hInstance;
- wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_IVYCURSOR);
- wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
- wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
- wcex.lpszMenuName = NULL;
- wcex.lpszClassName = szWindowClass;
- wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);
-
- return RegisterClassEx(&wcex);
-}
-
-//
-// FONCTION : InitInstance(HANDLE, int)
-//
-// BUT : enregistre le handle de l'instance et crée une fenêtre principale
-//
-// COMMENTAIRES :
-//
-// Dans cette fonction, nous enregistrons le handle de l'instance dans une variable globale, puis
-// créons et affichons la fenêtre principale du programme.
-//
-BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
-{
- HWND hWnd;
- NOTIFYICONDATA icodata;
-
-
- hInst = hInstance; // Stocke le handle d'instance dans la variable globale
-
- hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
- CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, HWND_MESSAGE, NULL, hInstance, NULL);
-
- if (!hWnd)
- {
- return FALSE;
- }
-
- ShowWindow(hWnd, nCmdShow);
- UpdateWindow(hWnd);
-
- icodata.cbSize = sizeof(NOTIFYICONDATA);
- icodata.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP ;
- icodata.hWnd = hWnd;
- icodata.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_IVYCURSOR);
- icodata.uID = 0;
- icodata.uVersion = NOTIFYICON_VERSION;
- icodata.uCallbackMessage = WM_ICONTRAY_NOTIFY;
- strcpy ( icodata.szTip, "IvyCursor Event redirector");
-
- if (! Shell_NotifyIcon( NIM_ADD, &icodata) )
- {
- return FALSE;
- }
- if (! Shell_NotifyIcon( NIM_SETVERSION, &icodata) )
- {
- return FALSE;
- }
- icodata.uFlags = NIF_INFO;
- // Info
- icodata.dwInfoFlags = NIIF_INFO;
- strcpy ( icodata.szInfoTitle, "IvyCursor Event redirector");
- strcpy (icodata.szInfo , "IvyCursor Event redirector" );
- icodata.uTimeout = 10000; // 10 seconds
- if (! Shell_NotifyIcon( NIM_MODIFY, &icodata) )
- {
- return FALSE;
- }
-
- return TRUE;
-}
-void RemoveTrayIcon(HWND hWnd)
-{
- NOTIFYICONDATA icodata;
- icodata.cbSize = sizeof( icodata );
- icodata.uFlags = 0;
- icodata.hWnd = hWnd;
- icodata.uID = 0;
- Shell_NotifyIcon( NIM_DELETE, &icodata);
-}
-void ReturnFocus(HWND hWnd)
-{
- NOTIFYICONDATA icodata;
- icodata.cbSize = sizeof( icodata );
- icodata.uFlags = 0;
- icodata.hWnd = hWnd;
- icodata.uID = 0;
- Shell_NotifyIcon( NIM_SETFOCUS, &icodata);
-}
-void Quitting( HWND hWnd )
-{
- RemoveTrayIcon(hWnd);
- DestroyMenu(hMenu);
- DestroyWindow(hWnd);
- ivy->stop();
-}
-//
-// FONCTION : WndProc(HWND, unsigned, WORD, LONG)
-//
-// BUT : traite les messages pour la fenêtre principale.
-//
-// WM_COMMAND - traite le menu de l'application
-// WM_PAINT - dessine la fenêtre principale
-// WM_DESTROY - génère un message d'arrêt et retourne
-//
-//
-LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
-{
- int wmId, wmEvent;
- int xPos,yPos;
- POINT point;
-
- switch (message)
- {
- case WM_COMMAND:
- wmId = LOWORD(wParam);
- wmEvent = HIWORD(wParam);
- // Analyse les sélections de menu :
- switch (wmId)
- {
- case IDM_ABOUT:
- //DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
- break;
- case IDM_EXIT:
- case ID_QUIT:
- Quitting(hWnd);
- break;
- default:
- return DefWindowProc(hWnd, message, wParam, lParam);
- }
- break;
- case WM_CONTEXTMENU:
- // Display the shortcut menu. Track the right mouse
- // button.
- xPos = LOWORD(lParam);
- yPos = HIWORD(lParam);
-
- TrackPopupMenu(hmenuTrackPopup, TPM_LEFTALIGN | TPM_RIGHTBUTTON,
- xPos, yPos, 0, hWnd, NULL);
- PostMessage(hWnd, WM_NULL, 0, 0);
-
- break;
- case WM_ICONTRAY_NOTIFY:
- switch ( lParam )
- {
- case WM_LBUTTONDOWN:
- break;
- case WM_RBUTTONDOWN:
- GetCursorPos(&point);
- TrackPopupMenu(hmenuTrackPopup, TPM_LEFTALIGN | TPM_RIGHTBUTTON,
- point.x, point.y, 0, hWnd, NULL);
- PostMessage(hWnd, WM_NULL, 0, 0);
- break;
- }
- break;
- case WM_DESTROY:
- PostQuitMessage(0);
- break;
- default:
- return DefWindowProc(hWnd, message, wParam, lParam);
- }
- return 0;
-}
-
-// Gestionnaire de messages pour la boîte de dialogue À propos de.
-LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
- switch (message)
- {
- case WM_INITDIALOG:
- return TRUE;
-
- case WM_COMMAND:
- if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
- {
- EndDialog(hDlg, LOWORD(wParam));
- return TRUE;
- }
- break;
- }
- return FALSE;
-}