|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
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 ! @+
Fichier Zip
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
Télécharger le zip
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
Sources en rapport avec celle ci
Commentaires et avis
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|