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) ;
}
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.