begin process at 2012 05 30 02:46:08
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Divers

 > 

keyboard


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

keyboard

samedi 8 mai 2004 à 11:21:42 | keyboard

ToToL

Membre Club
J'ai créé un programme sauf que mon probleme est la vitesse de repetition des touche que je voudrai faire instantanné car sinon j'ai il y a un "blanc" de 0.5sec au debut.

Merci et aurevoire

Voici mon code



#include <windows.h>

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

#define NOM_FENETRE_1 "fenetre 1"

HINSTANCE hinst;

struct cercle {int x1;int y1; int x2; int y2;}mon_cercle;



int WINAPI WinMain (HINSTANCE hInstance, //numero definissant notre programme
HINSTANCE hPrevInstance, //plus utilisé (à NULL°
PSTR szCmdLine, //ligne de commande avec l'appel du programme
int iCmdShow) //état du programme au démarrage

{
//variable devant contenir un numero identifiant la fenetre que nous allons creer
HWND hwnd;
//structure contenant les données d'un message
MSG msg ;
//classe de fenetre
WNDCLASS wndclass;
//Instance du programme
hinst = hInstance;
//place du cercle
mon_cercle.x1=50;
mon_cercle.x2=70;
mon_cercle.y1=50;
mon_cercle.y2=70;

wndclass.style = CS_HREDRAW | CS_VREDRAW ; //demande à Windows de rafraichir la fenetre si sa largeur ou sa hauteur changent
wndclass.lpfnWndProc = WndProc ; //donne l'adresse de la procédure de fenêtre
wndclass.cbClsExtra = 0 ; //permet de reserver de l'espace mémoire interne...
wndclass.cbWndExtra = 0 ; //...a windows pour notre appli (non neccessaire)
wndclass.hInstance = hinst ; //a quel programme est destiné cette fenêtre (le notre)
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;//definit l'icône de notre programme (icône par defaut)...
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; //...le curseur (par defaut)
wndclass.hbrBackground = CreateSolidBrush(RGB(255, 0,0));//...la couleur de fond (ici GRAY_BRUSH, mais il y'en a d'autres (WHITE_BRUSH, BLACK_BRUSH..)
wndclass.lpszMenuName = NULL ; //permet de donner le nom d'une ressource menu (nous verrons cela plus tard)
wndclass.lpszClassName = NOM_FENETRE_1 ; //nom que nous attribuons a la classe de fenêtre

//créer la classe de fenêtre et la sauvegarder sous ce nom

RegisterClass (&wndclass);

//creer la fenêtre a partir de notre classe de fenêtre

hwnd = CreateWindow (NOM_FENETRE_1, // nom de la classe de fenêtre pour créer notre fenêtre
"Mon premiere programme Win32 !", // titre de la fenêtre
WS_CAPTION|WS_MINIMIZEBOX|WS_SYSMENU, // style de la fenêtre (ici superposable)
100, // position initiale coin superieur gauche en X
100, // position initiale coin superieur gauche en y
320, // largeur de départ
240, // hauteur de départ
NULL, // pas de fenêtre parente
NULL, // pas de menu
hinst, // a quel programme est relié notre fenêtre
NULL) ; // données de création
//affiche la fenetre
ShowWindow (hwnd, iCmdShow);
//mettre son contenu à jour
UpdateWindow (hwnd);

while (GetMessage (&msg,NULL,0,0))

{
//traduire les données du message pour qu'elles soient lisible
TranslateMessage (&msg) ;
//envoyer le message à Windows qui le transmettra à WINDOWPROC
DispatchMessage (&msg) ;
}

return msg.wParam ;

}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

{

//handle sur un device context
HDC hdc ;
//structure de dessin
PAINTSTRUCT ps ;
//structure contenant les coordonnées et la taille d'un rectangle
RECT rect ;

switch (message)

{
//Si une touche est enfoncée
case WM_KEYDOWN:

if (HIWORD(GetKeyState(VK_UP)))
{
mon_cercle.y1 = mon_cercle.y1-5;
mon_cercle.y2 = mon_cercle.y2-5;
InvalidateRect(hwnd, NULL, TRUE);
}
if (HIWORD(GetKeyState(VK_DOWN)))
{
mon_cercle.y1 = mon_cercle.y1+5;
mon_cercle.y2 = mon_cercle.y2+5;
InvalidateRect(hwnd, NULL, TRUE);
}
if (HIWORD(GetKeyState(VK_RIGHT)))
{
mon_cercle.x1 = mon_cercle.x1+5;
mon_cercle.x2 = mon_cercle.x2+5;
InvalidateRect(hwnd, NULL, TRUE);
}
if (HIWORD(GetKeyState(VK_LEFT)))
{
mon_cercle.x1 = mon_cercle.x1-5;
mon_cercle.x2 = mon_cercle.x2-5;
InvalidateRect(hwnd, NULL, TRUE);
}
return 0;

//s'il faut redessiner le contenu de la fenetre
case WM_PAINT:
//obtenir les données graphique de la fenêtre
hdc = BeginPaint (hwnd, &ps) ;
//Selectionne le pinceau
SelectObject(hdc, CreateSolidBrush(RGB(255, 0,0)));
//faire en sorte que le fond du texte soit transparent (sinon le tour du texte
//serait blanc sur nue fenêtre grise...)
SetBkMode( hdc, TRANSPARENT);
//obtenir la taille cliente de la fenêtre
GetClientRect (hwnd, &rect);
//Dessine un rectangle qui sera notre fond
Rectangle(hdc, rect.left,rect.top,rect.right,rect.bottom);
SelectObject(hdc, CreateSolidBrush(RGB(255, 255,0)));
Ellipse(hdc, mon_cercle.x1, mon_cercle.y1, mon_cercle.x2, mon_cercle.y2);
//fin de la procédure de dessinage
EndPaint (hwnd, &ps) ;
return 0 ;

//si faut quitter
case WM_DESTROY:
//alors mettre un message "WM_QUIT" dans la file d'attente
PostQuitMessage (0) ;
return 0 ;

}

//tous les messages dont nous ne nons servons pas sont renvoyés au système
return DefWindowProc (hwnd, message, wParam, lParam) ;

}

samedi 8 mai 2004 à 11:45:00 | Re : keyboard

MoDDiB


gere le key up c'est mieux que gerer un temps ! et si la touche reste enfoncé plus de 0.5s sans keyup alors fo ecrire kan meme :)
samedi 8 mai 2004 à 11:56:35 | Re : keyboard

ToToL

Membre Club
Meme si je fait avec le key up il y aura tjr un acou au depart puisque que sa vien d'un blanc fait par windows donc il y a un blanc de message pendant peut de temps et meme en mettant SystemParametersInfo(SPI_SETKEYBOARDDELAY,0,NULL,NULL); la répétition clavier ne s'enleve pas.

Ya aucun moyen d'enlever ce fichu truc ?

++


Cette discussion est classée dans : programme, fenêtre, hwnd, cercle, wndclass


Répondre à ce message

Sujets en rapport avec ce message

Affichage avec API Windows [ par PunkDude424 ] Bon j'ai un problème avec l'affichage à l'aide de L'api win32Je suis débutant en la matière et j'ai le problème suivant.J'ai une application client se Traduction en FR programme en fenetre devc++ [ par toto6311 ] [code=cpp]#include /* Declare Windows procedure */ LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM); /* Faites le nom de la class Winbgim pitié de l'aide [ par jimmy30 ] Voila bonjour en tous :D . j'ai UN gros probleme qui se dresse devant moi alors que je commencez a maitriser la sdl mes profs me demande d'utiliser w trouver le HWND depuis un createProcess [ par curenor ] Bonjour,je cherche à trouver le Hwnd de la fenêtre qui est créé par l'application lancée par un CreateProcessW.(je pense qu'il y a possibilité de fai hook souris [ par ndubien ] Bonjour,Je cherhe à faire un hook sur souris qui envoi à une fenêtre précédement déclarée (HWND hwndPrinc) tous les messages reçus...Je veux que ma fe WSAAsyncselect pour client TCP [ par daviid00 ] Bonjour, Je suis entrain de développer un client TCP qui se connecte de manière asynchrone à un serveur. Pour ce faire j'utilise la fonction WSAAsync Langage C++ [ par Tom56340 ] je me présente tom voila je suis pas non plus implacable sur l'informatique cependant je touche a tout et est un niveau satisfaisant qui me vaut de m souci C++ [ par Tom56340 ] je me présente tom voila je suis pas non plus implacable sur l'informatique cependant je touche a tout et est un niveau satisfaisant qui me vaut de m Help for change a program in C++ for AVI file [ par mr_log ] please how to change this program for read all size for AVI file? Ce programme permet d'aficher un fichier AVI bien précis width= 48 and lenght=80, so


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,967 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales