Section courante

A propos

Section administrative du site

La géométrie s'est également s'amuser à faire des dessins à l'apparence mathématique. Un des classiques dans ce genre, c'est bien sûre dessiner un «Treillis». Voici le code C pour OS/2 (MinGW) :

  1. #define INCL_WIN
  2. #define INCL_GPI
  3. #include "os2.h"
  4.  
  5. MRESULT EXPENTRY CrtWinProc( HWND Window, USHORT message, MPARAM wParameter, MPARAM lParameter) {
  6.     POINTL  ptl;
  7.     HPS      ps;
  8.     RECTL   rcl;
  9.     int       X,Y,T,I;
  10.     switch(message) {
  11.     case WM_PAINT:
  12.         ps = WinBeginPaint(Window, NULL, NULL);
  13.         WinQueryWindowRect(Window, &rcl);
  14.         WinFillRect(ps, &rcl, CLR_WHITE);
  15.         X = 30;
  16.         Y = 40;
  17.         T = 240;
  18.         I = 0;
  19.         while(I < T) {
  20.           ptl.x = X;
  21.           ptl.y = 300 - (Y + I);          
  22.           GpiMove(ps,&ptl);
  23.           ptl.x = X + I;
  24.           ptl.y = 300 - (Y + T);
  25.           GpiLine(ps,&ptl);
  26.           I+=5;
  27.         }
  28.         WinEndPaint(ps);
  29.         return(0);
  30.     }
  31.     return WinDefWindowProc(Window, message, wParameter, lParameter);
  32. }
  33.  
  34. int main(void) {
  35.     HWND     hWind;
  36.     HMQ      hMessageQueue;
  37.     HAB       AnchorBlock;
  38.     ULONG    style = FCF_TITLEBAR | FCF_SYSMENU | FCF_SIZEBORDER | FCF_MINMAX | FCF_SHELLPOSITION | FCF_TASKLIST;
  39.     QMSG     message;
  40.     HWND     WinHandle;
  41.     AnchorBlock = WinInitialize(0);
  42.     if(AnchorBlock == 0) return 0;
  43.     hMessageQueue = WinCreateMsgQueue( AnchorBlock, 0);
  44.     if(hMessageQueue == 0) return 0;
  45.     if( !WinRegisterClass( AnchorBlock, "SimpleTreillis", (PFNWP)CrtWinProc, CS_SIZEREDRAW, 0 ) ) return( 0 );
  46.     hWind = WinCreateStdWindow( HWND_DESKTOP, WS_VISIBLE, &style, "SimpleTreillis", "Treillis", 0, NULL, 0, &WinHandle);
  47.     if(hWind == 0) return 0;
  48.     while(WinGetMsg(AnchorBlock, &message, NULL, 0, 0)) WinDispatchMsg(AnchorBlock, &message);
  49.     WinDestroyWindow(hWind);
  50.     WinDestroyMsgQueue(hMessageQueue);
  51.     WinTerminate(AnchorBlock);
  52.     return(1);
  53. }

Voici en terminant un exemple du résultat de se petit programme :


Voir également

Langage de programmation - C pour Windows - API Windows (Win32) - Géométrie - Treillis
Langage de programmation - Turbo Pascal pour Windows (Windows 3.1) - Géométrie - Treillis
Système d'exploitation - OS/2 - Introduction

Dernière mise à jour : Vendredi, le 3 avril 2015