Accueil > > > DESSIN SUR ÉCRAN (TRÈS SIMPLE)
DESSIN SUR ÉCRAN (TRÈS SIMPLE)
Information sur la source
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
- /******************************************************************************
- *
- * 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;
- }
/******************************************************************************
*
* 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 ! @+
Historique
- 06 août 2006 11:30:13 :
- Gain de performances, ajout de la commande sleep et d'une fonction détectant les mouvements de la souris.
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : WIN APIRE : WIN API par racpp
Cliquez pour lire la suite par racpp WIN APIWIN API par omarino_007
Cliquez pour lire la suite par omarino_007
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|