bonjour, je suis a la recherche de personnes pouvant m'aider a sortir d'un problème.. en effet, je doit réaliser une interface graphique sous VISUAL C++ 6.0 qui crée un tableau de N lignes et M colonnes (dont N et M sont définit par l'utilisateur), puis ensuite il faut pouvoir colorier chaque cases du tableau en vert ou rouge, et enfin pouvoir zoomer sur le tableau.

tout d'abord, j'ai réussi à réaliser le code permettant de générer le tableau de cases. voici le code :

#include <windows.h>
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>

int x=10; // x correspond aux abscisses (nb de colonne)
int y=10; // y correspond à l'ordonnée (nb de ligne)
int j=20;
int h=20;
int i;
int k=0;
int l=0;

LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM); // cration d'une fenêtre windows

int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
// équivalent d'un int main() en C sauf
//qu'il s'agit de l'API de windows
{
//déclaration des variables

HWND hwnd;
MSG msg;
WNDCLASS wc;

//configuration paramètres de windows (fond de couleur, barre de menu.. pour la fenêtre)
wc.style = 0;
wc.lpfnWndProc = MainWndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hinstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(1 + COLOR_BTNFACE);
wc.lpszMenuName = NULL;
wc.lpszClassName = "MaWinClass";


// enregistrement de la classe configurée précédemment pour windows
if(!RegisterClass(&wc)) return FALSE;

// création fenêtre d'interface lors de l'exécution, (avec titre,taille..)
hwnd = CreateWindow("MaWinClass", "Cases mémoires", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 460, 300,
NULL, NULL, hinstance, NULL);

// Vérifier s'il n'y a pas de problème à créer la fenêtre sinon pas d'execution
if (!hwnd) return FALSE;

ShowWindow(hwnd, nCmdShow); // permet de faire apparaitre la fenêtre
UpdateWindow(hwnd); // permet de rafraichir la fenêtre


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

// éviter que la fenêtre freeze comme si elle bug on peut plus la faire bouger,
// ou la fermer... à cause des réceptions et transmissions de messages de la procédure de la fenêtre et du processeur.
{
TranslateMessage(&msg); //traduction des messages
DispatchMessage(&msg); // expédie les messages
}

return msg.wParam;
}

LRESULT CALLBACK MainWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{

switch (uMsg)
{



case WM_PAINT : // WM_PAINT est nécessaire pour faire du dessin
{

HPEN hp2px, hpOld; // declaration des variables

PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps); // tracer des dessins


hp2px = CreatePen(PS_SOLID, 2, 0x00FF0000);

// créer un crayon avec ses parametre(type de trait, largeur du trait en
// pixel, sa couleur ici bleu)

hpOld = SelectObject(hdc,hp2px); // utilisation dans ce cas du crayon
k=x+1;
l=y+1;
if (x==y) // si on a le nb de ligne = nb de colonne
{
for(i=0;i<=x;i++) // on aura une matrice carré
{
MoveToEx(hdc, 20, j, NULL);
LineTo(hdc, k*20, j);
MoveToEx(hdc, h, 20, NULL);
LineTo(hdc, h, k*20);
j=j+20;
h=h+20;
}
}
else // sinon si on a le nb de ligne!= nb de colonne
{
for(i=0;i<=y;i++) //matrice rectangle
{
MoveToEx(hdc, 20, j, NULL);
LineTo(hdc, k*20, j);
j=j+20;
}
for(i=0;i<=x;i++)
{
MoveToEx(hdc, h, 20, NULL);
LineTo(hdc, h, l*20);


h=h+20;
}
}

/*MoveToEx(hdc, 20, 150, NULL);
LineTo(hdc, 400, 150);
MoveToEx(hdc, 20, 200, NULL);
LineTo(hdc, 400, 200);
MoveToEx(hdc, 20, 100, NULL);
LineTo(hdc, 20, 200);
MoveToEx(hdc, 200, 100, NULL);
LineTo(hdc, 200, 200);
MoveToEx(hdc, 400, 100, NULL);
LineTo(hdc, 400, 200);*/



EndPaint(hwnd, &ps); // libère le handle de beginpaint (handle est une sorte de référence qu'on donne à certaines objets)
return 0;
}

case WM_DESTROY: // nécessaire lorsqu'on ferme l'application et aussi la fenêtre, un message sera envoyé pour dire
//que la fenêtre sera détruite.

PostQuitMessage(0); // permet de fermer la fenêtre avec la croix rouge ou autrement
return 0;

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

//traite par défaut tous les messages envoyés à une fenetre
}
}



Ensuite je doit réaliser la suite du programme en coloriant chaque cases du tableau et pouvoir zoomer dessus dans le cas ou il y aurait plus de cases..
Je n'y arrive pas du tout!! je suis débutant...

S'il vous plait, si quelqu'un peut maider!! je suis a bout...

je laisse mon mail pour plus de contact : piero_509@msn.com.

merci.