Dessin sur écran (très simple)

Description

Source en C, fonctionne tel quel en C++. Uitlise l'API Windows.
Mis à jour (1.0.1). Merci vecchio56 !
______________________________

Programme très simple qui dessine une trait noir et continu sur l'écran.

IMPORTANT !!! NOTEZ BIEN : Appuyez sur ECHAP pour terminer !
______________________________

L'utilisateur peut, lorsque le programme tourne, continuer son travail, et ce, sans empêcher les clics de souris !
N'oubliez pas d'ajouter -mwindows à l'éditeur de liens avant compilation.

Source / Exemple :


/******************************************************************************
 *

  • Dessin sur écran
  • Version : 1.0.1.0
  • Auteur : ordiman85
  • Utilisation : libre et OpenSource
*
*
  • Description : Dessine sur l'écran avec la souris
  • Appuyez sur Echap pour terminer le programme
  • Editeur de liens : -mwindows
*
                                                                                                                                                            • /
// Fonctions de l'API Windows #include <windows.h> // Détecte si la souris a bougé, retourne 1 si vrai 0 si faux char DetecteMouvement(POINT Position1) { // Soulage le processeur (placé ici, Sleep sera appelé à chaque tour de boucle) Sleep(2); // Initialise une variable temporaire pour récupérer des nouvelles coordonnées POINT Position2; // Récupère les nouvelles coordonnées du curseur GetCursorPos(&Position2); // Teste la différence avec les coordonnées précédentes if (Position1.x != Position2.x || Position1.y != Position2.y) return 1; // Vrai // Si la condition n'est pas réalisée, retourne faux return 0; } // Procédure principale int main() { // Contient les coordonnées x et y du curseur POINT CurseurPosition; // Variable qui détermine si l'utilisateur a appuyé sur Echap char Quitter = 0; // Récupère le Handle du bureau HWND Bureau = GetDesktopWindow(); // Récupère la zone de dessin du bureau HDC Dessin = GetWindowDC(Bureau); // Prend les premières coordonnées de curseur GetCursorPos(&CurseurPosition); // Début de boucle do { // Détermine le point de départ courant MoveToEx(Dessin, CurseurPosition.x, CurseurPosition.y, NULL); // Stoppe le dessin jusqu'à ce que la souris bouge while (!DetecteMouvement(CurseurPosition) && !Quitter) // Détecte si la touche Echap est appuyée if (GetAsyncKeyState(VK_ESCAPE)) Quitter = 1; // Met à jour les coordonnées du curseur GetCursorPos(&CurseurPosition); // Relie par une ligne le point de départ et le point d'arrivée LineTo(Dessin, CurseurPosition.x, CurseurPosition.y); // Continue jusqu'à ce que Quitter soit différent de 0 (touche Echap appuyée) } while (Quitter == 0); // Libère le contexte de périphérique du bureau ReleaseDC(Bureau, Dessin); // Efface le dessin InvalidateRect(0, 0, 0); // Quitte le programme return 0; }

Conclusion :


Bug connu : Si on peut considérer ça comme un "bug", lorsqu'on dessine le trait sur un objet qui se redessine, un morceau du trait est automatiquement effacé. Exemple, lorsque vous agrandissez une fenêtre.

Code modifié pour ne plus monopoliser le CPU.

Bonne compilation !
@+

Codes Sources

A voir également

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.