begin process at 2012 05 28 12:59:56
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

api window


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

api window

mardi 15 août 2006 à 11:42:21 | api window

ropars

Bonjour

Je voudrais coder un programme avec Dev-c++ qui, apres ouverture d'une fenetre, a chaque clic de la souris dessine sur la fenetre un point et unpetit rectangle l'entourant places aux coordonnees du point cliqué.voici mon code:

#include <windows.h>
#include <iostream>

using namespace std;

HINSTANCE hinst;
POINT pt;

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

int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
HWND hwnd;
MSG msg;
WNDCLASS wc;

hinst = hinstance;

wc.style = 0 ;
wc.lpfnWndProc = MainWndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = NULL;
wc.hIcon = NULL;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = "MaWinClass";

if(!RegisterClass(&wc)) return FALSE;

hwnd = CreateWindow("MaWinClass", "Titre", WS_OVERLAPPEDWINDOW,
100,100, 400, 300,
NULL, NULL, hinstance, NULL);
if (!hwnd) return FALSE;

ShowWindow(hwnd, nCmdShow);

while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}

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

LRESULT CALLBACK MainWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
static HWND hEdit;
static int x,y;

switch (uMsg)
{

case WM_PAINT :

{
cout<<"PAINT x = "<<x<<" y = "<<y<<endl;//verification des coordonnees
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
SetPixel(hdc,x,y,RGB(0,0,0));
cout<<"TRACE CENTRE x = "<<x<<" y = "<<y<<endl;//verification trace
Rectangle(hdc,x-4,y-4,x+4,y+4);
cout<<"FIN TRACE x = "<<x<<" y = "<<y<<endl;//verification trace
EndPaint(hwnd,&ps);

return 0;
}


case WM_LBUTTONDOWN:
{
x=(int)LOWORD(lParam);
y=(int)HIWORD(lParam);
Sleep (500);
PostMessage(hwnd,WM_PAINT,wParam, lParam);
return 0;
}
case WM_DESTROY:
PostQuitMessage(0);
return 0;

default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
}

L'execution me donne la fenetre et 1/4 de rectangle aux coordonnees 0,0. Puis plus rien,comme s'il était impossible de redessiner sur la fenetre apres la premiere execution de WM_PAINT.Pourtant les points de controle que j'ai places donnent de bonx resultats.

Merci de m'aider.
ropars est en ligne�D;�A;  
mardi 15 août 2006 à 14:03:06 | Re : api window

Joky

Membre Club
iostream et compagnie ( cout... ) n'ont rien à faire dans un prog Win32
Si tu veux écrire du texte, utilise DrawText ou TextOut qui vont écrire sur un Device Context

ULARGE_INTEGERJokyQi=QI("Joky"

mardi 15 août 2006 à 14:48:21 | Re : api window

ropars

Reponse a Joky
Les cout qui figurent dans mon programme n'ont pas pour but d'ecrire dans la fenetre, mais d'obtenir une information sur le deroulement du programme. Ils seront retires lorsque ça marchera. Mon probleme est qu'un seul carre est dessine, alors que je cherche a un tracer un a chaque clic.
mardi 15 août 2006 à 14:55:08 | Re : api window

aardman

Membre Club
Réponse acceptée !
Salut,
Un message WM_PAINT ne s'envoie pas explicitement à une fenêtre. Il faut utiliser la fonction InvalidateRect() pour invalider la zone à redessiner, et UpdateWindow() pour forcer l'envois d'un WM_PAINT.
Remplace:
Sleep (500);
PostMessage(hwnd,WM_PAINT,wParam, lParam); 
par:
InvalidateRect(hwnd, NULL, TRUE);
UpdateWindow(hwnd);

mardi 15 août 2006 à 16:15:16 | Re : api window

ropars

Reponse a aardman

OK ça marche

Merci


Cette discussion est classée dans : hwnd, return, wc, hinstance, lparam


Répondre à ce message

Sujets en rapport avec ce message

interface en c [ par Med2009 ] salut je suis Mohamed un petit développeur en c et qui désire etre le plus grand développeur dans le monde... Je trouve pas le bon code [ par vah bi ] Bonjour à tous , voilà je débute en c et comme editeur j'ai le visual c++.Je  fais actuellement une application avec l'api de visual c++  mais en lang WIN32 : Editbox non editable avec une boite de dialogue CHILD [ par Pistol_Pete ] BonjourVoila mon problème: J'ai créé une fenêtre et dans cette fenêtre j'ai une boite de dialogue avec le style WS_CHILD. Tous mes contrôles de cette Problème graphique avec C [ par le1scorpion1noir ] salut a tous je peux savoir c'est quoi le meilleur logiciel pour programmer en C puis y t il une différence entre le C et le C++ ? je débute et j ess Pb sur un ptit bout de prog en DirectX.... [ par Haldwin ] Salut a tous....Voila j'ai deux ptits pbs quand je lance cette appli ci-dessous... (VC++)La première est q'une fois sur deux ma variable hWnd apres le Problème de linker dans programme de base. [ par vith17 ] Bonjour,J'ai tapé le code suivant sous Dev-C++. Lorsque je lance la compilation, il me revoie l'erreur suivante :    [Linker error] undefined referenc Application MDI dans une classe [ par PLUiK ] Salut!Je voudrais savoir s'il est possible de coder uneapplication MDI en C++ (en mettant presque tout le codedans la classe):#include //Code de la cl Exe reste en mémoire (WIN32) [ par Urgo ] Bonsoir à tous, j'ai encore un soucis lié à la suppression de l'utilisation de la CRT, en indiquant un point d'entrée perso au linker. Je travaille s


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 : 3,494 sec (3)

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