Programme qui montre les coordonnes de la souris par rapport a la taille de la fenetre.
Source / Exemple :
#include <windows.h>
#include <stdarg.h>
#include <stdio.h>
// PROTOTYPE
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
// WIN MAIN
int WINAPI WinMain ( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
PSTR szCmdLine,
int iCmdShow)
{
static char szAppName[] = "Programme d'essai";
HWND hwnd;
MSG msg;
WNDCLASSEX wndclass;
wndclass.cbSize = sizeof (wndclass);
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)GetStockObject (WHITE_BRUSH);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = szAppName;
wndclass.hIconSm = LoadIcon(NULL,IDI_APPLICATION);
// on enregistre la classe
RegisterClassEx (&wndclass) ;
// on cree la fenetre
hwnd = CreateWindow (szAppName,
"",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL) ;
// on dessine et met a jour la fenetre
ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;
// bouble des messages
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
}
// trace une ligne de (x,y) a (xx,yy)
void line(HDC hdc,int x,int y,int xx,int yy)
{
MoveToEx (hdc, x , y ,NULL) ;
LineTo (hdc, xx , yy ) ;
return;
}
// WND PROC
LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
static int cxClient,cyClient,cxMouse,cyMouse;
switch (iMsg)
{
// creation
case WM_CREATE:
{
cxMouse = 0;
cyMouse = 0;
return 0;
}
// on redimensionne la fenetre
case WM_SIZE:
{
cxClient = LOWORD (lParam) ;
cyClient = HIWORD (lParam) ;
return 0 ;
}
// on bouge la souris
case WM_MOUSEMOVE:
{
cxMouse = LOWORD (lParam) ;
cyMouse = HIWORD (lParam) ;
InvalidateRect(hwnd,NULL,TRUE);
return 0;
}
// on redessine
case WM_PAINT:
{
HDC hdc;
PAINTSTRUCT ps;
char buf[256],buf2[256];
int len;
hdc = BeginPaint (hwnd, &ps);
// on trace les axes
line(hdc,cxMouse,0,cxMouse,cyClient);
line(hdc,0,cyMouse,cxClient,cyMouse);
// on formate les textes
len = sprintf(buf,"( %d / %d , %d / %d )",cxMouse,cxClient,cyMouse,cyClient);
// pour le titre de la fentre
strcpy(buf2,"Coordonnees de la souris : ");
strcat(buf2,buf);
// on dessine !
TextOut(hdc,cxMouse+1,cyMouse+1,buf,len);
SetWindowText(hwnd,buf2);
EndPaint (hwnd, &ps) ;
return 0 ;
}
// on quitte le programme
case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, iMsg, wParam, lParam) ;
}