IPB

Bienvenue invité ( Connexion | Inscription )


3 Pages V   1 2 3 >  
Reply to this topicStart new topic
> Programmation Windows, Win32 natif versus .NET WinForms! :P
gizmo27
posté 17 November 2009 à 16:28
Message #1


Membre Appliqué
*****

Groupe : Membres
Messages : 793
Inscrit : 10 11 2006
Lieu : ici et ailleurs
Membre no 77459



hello smile.gif

je viens de rentrer manuellement 1479 nombres pour un programme (nombres à 2 ou 3 chiffres) !!

1479... vous vous rendez compte ?

pas contre je tiens à préciser : je ne fais pas un programme qui donne les combinaisons gagnantes du LOTO
ah si seulement... (soupir)

bon vent à vous

Go to the top of the page
 
+Quote Post
The Uploader
posté 17 November 2009 à 19:14
Message #2


Radical Dreamer
******

Groupe : Modérateurs
Messages : 6093
Inscrit : 10 06 2003
Lieu : L'Antre des Rêves...
Membre no 25271



yo

Tu pouvais pas les générer ? huh.gif

Sois fainéant, c'est ça la bonne manière de programmer. biggrin.gif


--------------------
Go to the top of the page
 
+Quote Post
gizmo27
posté 17 November 2009 à 23:21
Message #3


Membre Appliqué
*****

Groupe : Membres
Messages : 793
Inscrit : 10 11 2006
Lieu : ici et ailleurs
Membre no 77459



ben en fait c'est un peu compliqué... mais si tu veux que je t'en dise un bout... tu veux ? ok... faut pas me le dire 2 fois à moi

imagines qu'il y a 500 valeurs : qui partent de 500 pour aller jusqu'à 100

ces valeurs peuvent se répéter mais toujours suivant un ordre décroissant : je m'explique :

500, 499, 499, 498, 497, 496, 495, 495, 494, etc... et ce jusqu'à 100

chaque valeur ne se répète qu'une fois maxi

maintenant regardes bien les valeurs

j'ai un an de c++ dans les pattes : certes je ne suis pas expert en progra avancée mais je connais quelques trucs. bref...

à moins d'une progra avancée et compliquée que je ne maîtrise pas du tout, voilà ce que j'ai appris : quand il y a plusieurs valeurs on les stocke dans un tableau (le truc de base bien bourrin mais qui marche) : ensuite tu récupères les valeurs à partir de ce tableau (en incrémentant les valeurs de l'indice)

2 solutions à partir de là :

=> soit les valeurs du nombre changent mais de manière constante

: ex : 500, 499, 498, 497,... : là c'est facile : une petite boucle for : grosso modo
Code
for (i=0, i=499, i=i+1)
tab[i]=tab[i]-1;

et là ça marche

=> soit les valeurs sont irrégulières (mon cas) : et là à par connaître la progra c++ avancée ou alors plus dingue que ça : inventer une suite mathématique pour voir si les nombres se répètent suivant une certaine règle (enfin bref : la galère)... je ne vois pas d'autre solution que de les rentrer
à la main comme un gros bourrin

mais après tout peut-être que je ne m'y connais pas. Peut-être vas-tu me dire un truc auquel je n'avais pas pensé

PS : ne lis pas ce post la nuit ou sinon prend un bon café, relis le post 50 fois et déprimes un coup : et ensuite tu auras compris mes explications ci-dessus
buena notte
Go to the top of the page
 
+Quote Post
gizmo27
posté 19 November 2009 à 12:01
Message #4


Membre Appliqué
*****

Groupe : Membres
Messages : 793
Inscrit : 10 11 2006
Lieu : ici et ailleurs
Membre no 77459



ça laisse sans voix non ?... smile.gif
Go to the top of the page
 
+Quote Post
The Uploader
posté 19 November 2009 à 19:03
Message #5


Radical Dreamer
******

Groupe : Modérateurs
Messages : 6093
Inscrit : 10 06 2003
Lieu : L'Antre des Rêves...
Membre no 25271



J'avoue ne pas avoir trouvé de solution. laugh.gif

J'étais en train d'en concocter une avec % (modulo), mais ça coince pour la non-répétition.


--------------------
Go to the top of the page
 
+Quote Post
gizmo27
posté 19 November 2009 à 23:49
Message #6


Membre Appliqué
*****

Groupe : Membres
Messages : 793
Inscrit : 10 11 2006
Lieu : ici et ailleurs
Membre no 77459



en fait les chiffres que j'ai rentré c'est en rapport avec le calculateur de bpf
niveau résol ça suit le standard ITUB6 machin chouette : un bon petit tableau et ensuite incrémenter les indices du tableau pour récupérer chaque valeur : tout de même c'est magique l'informatique

pour la partie api windows j'étais complètement largé : jamais fait et c'est pas de la tarte : d'ailleurs je ne fais que commencer à comprendre
après au niveau progra c++ même si je suis pas une lumière j'ai pu un peu me dépatouiller : les instructions 'case' et les tableaux

et toi tu as déjà programmé en api windows ? tu m'as dit que tu as fait du c# aussi ? niveau c# débutant, débrouillard ou expert ?
Go to the top of the page
 
+Quote Post
The Uploader
posté 20 November 2009 à 08:22
Message #7


Radical Dreamer
******

Groupe : Modérateurs
Messages : 6093
Inscrit : 10 06 2003
Lieu : L'Antre des Rêves...
Membre no 25271



l'API Win32 (écrite en C) est truffée d'inconsistances, et est très difficile à commander en C/C++ (Je n'ai pas d'exemple mais c'est ce que _tout le monde_ ayant essayé dit. Et tu le confirmes).

Pour faire une interface graphique Win32, c'est bien plus facile en .NET avec Windows Forms (wrapper .NET pour tout ce qui est graphique dans win32. Le reste est wrappé dans d'autres namespaces). En plus, tu n'as pas la mémoire à gérer (le garbage collector s'en charge.)(*).
Tu peux récuperer Visual C# Express 2008 / Visual VB .NET Express 2008 ici : http://www.microsoft.com/express/product/
(des deux, c'est le C# qui ressemble bien plus au C/C++, d'où le nom)

À force, je suis devenu assez bon en C# / POO. Je dirais niveau intermédiaire. smile.gif

(*) Faut quand même faire attention aux variables inutiles (particulièrement celles instanciées avec le mot clé "new". On peut utiliser autant de fois qu'on veut new sur ce genre de variable, alors faut faire gaffe à pas faire de "new" inutiles, surtout), et aux instructions "using" (=include en C/C++) présentes dans chaque fichier source de ton programme .NET.

Tu peux éviter d'utiliser des instructions using dans un fichier source si tu fais des appels explicites aux éléments des namespaces.
Exemple : "System.WindowsForms.MessageBox(paramètres)" évite un "using System.WindowsForms" en début de code si tu n'utilise que la MessageBox. Mais bon, le faire tout le temps peut-être lourd. Néanmoins, plus il y a d'instructions using, plus ton programme prendra du temps à se lancer.

Dans le même ordre d'idée que les instructions using, tu as les références aux namespaces.
Dans mon programme, j'ai limité le nombre de références (répertoriés dans un dossier virtuel de la solution de ton projet Visual) à :
System
System.Core
System.Data
System.Drawing
System.Windows.Forms
System.Xml <-- ça c'est pour utiliser le XmlSerializer pour sauvegarder/charger l'état de mes objets (mes données) grâce à un fichier XML.

Visual Studio peut trier et supprimer automatiquement (click droit) tes instructions using (individuellement pour chaque fichier source) selon le code que tu as fait (si tu n'as encore rien fait dans le fichier source courant, il va plus rester grand chose en instructions using biggrin.gif ), mais pour les références c'est à la main (en faisant gaffe que ton projet compile toujours après chaque suppression d'une référence). Tu peux aussi rajouter des références.

flowers.gif
PS: Ça fait jamais seulement 8 ans que le .NET Framework et WinForms existent. tongue.gif biggrin.gif
PPS : Si tu veux rester en C/C++ mais arrêter de t'arracher les cheveux, tu as Win32++ : http://sourceforge.net/projects/win32-framework/ (jamais utilisé, mais ça me semble mieux que dealer avec Win32 directement. Et surtout le forum et le développement sont très actifs smile.gif )

Ce message a été modifié par The Uploader - 20 November 2009 à 10:19.


--------------------
Go to the top of the page
 
+Quote Post
gizmo27
posté 20 November 2009 à 12:31
Message #8


Membre Appliqué
*****

Groupe : Membres
Messages : 793
Inscrit : 10 11 2006
Lieu : ici et ailleurs
Membre no 77459



ok merci pour tout ça je vais regarder le win32++

parce que j'ai compilé mais le souci c'est que mes push button 'U' et 'D' ne réagissent qu'à un seul clic : alors que j'aimerais que les valeurs de la résolution continuent d'augmenter ou diminuer quand on laisse le clic gauche enfoncé, ce qui n'est pas forcément gênant en mod 16 mais qui l'est déjà énorlélent en mod 1

je ne sais pas : j'ai eu l'idée de ce freeware car j'avais besoin d'un truc pour choisir la bonne résol direct plutôt que de faire 50 essais. ici je l'ai mis on verra bien : si ça ne sert pas aux autres ça servira au moins à moi.
Go to the top of the page
 
+Quote Post
The Uploader
posté 20 November 2009 à 12:38
Message #9


Radical Dreamer
******

Groupe : Modérateurs
Messages : 6093
Inscrit : 10 06 2003
Lieu : L'Antre des Rêves...
Membre no 25271



Tu peux donner les sources de ton freeware ? unsure.gif

Je pourrais aisément te le réécrire en C# en utilisant les Windows Forms. smile.gif

GKMod serait intéressant aussi à refaire en C#/WinForms.

;-)


--------------------
Go to the top of the page
 
+Quote Post
gizmo27
posté 20 November 2009 à 12:45
Message #10


Membre Appliqué
*****

Groupe : Membres
Messages : 793
Inscrit : 10 11 2006
Lieu : ici et ailleurs
Membre no 77459



haha...

je veux bien mais est-ce que le c# nécessite des frameworks .NET de windows ?

tu as l'intention de reprogrammer GK entièrement ? ohmy.gif chouet !

dommage que je ne m'y connaisse pas en c#, j'aurais bien filé un coup de main

pour ce qui est du source voili :
Code
#include <windows.h>
#include <stdio.h>
#include <commctrl.h>
#include <tchar.h>

#define ID_PUSHBUTTON_1     110
#define ID_PUSHBUTTON_2     111
#define ID_PUSHBUTTON_3     112
#define ID_PUSHBUTTON_4     113
#define ID_PUSHBUTTON_5     114
#define ID_CHECKBOX_1       115
#define ID_RADIOBUTTON_11   117
#define ID_RADIOBUTTON_12   118
#define ID_RADIOBUTTON_13   119
#define ID_RADIOBUTTON_21   120
#define ID_RADIOBUTTON_22   121
#define ID_EDITBOX_1        1200
#define ID_EDITBOX_2        1201
#define ID_EDITBOX_3        1202
#define ID_EDITBOX_4        1203
#define ID_EDITBOX_5        1204
// #define ID_UPDOWN           2000
#define ID_STATIC_1         500
#define ID_STATIC_2         501
#define ID_STATIC_3         502
#define ID_STATIC_4         503

//variables globales
HINSTANCE instance;
HWND hEdit;
HWND hGroup;
HWND hControle;
HWND hupdown;
HWND hCtl;
UINT bitrate;
double fps;
int width, height, lpnmud,

/* 1er tableau déclaré stockant les valeurs de height en 16:9 mod 16
    le tableau contient 45 éléments => indice i variant de 0 à 44 */
tableau1_mod16[] = {400,384,384,368,352,352,336,336,320,320,304,304,288,288,272,256,
                    256,240,240,224,224,208,208,192,192,176,160,160,144,144,128,128,
                    112,112,96,80,80,64,64,48,48,32,32,16,16},

/* 2ème tableau déclaré stockant les valeurs de height en 16:9 mod 1
    le tableau contient 692 éléments => indice i variant de 0 à 691 */
tableau2_mod1[] =  {395,394,394,393,393,392,392,391,390,390,389,389,388,388,387,387,
                    386,386,385,384,384,383,383,382,382,381,381,380,380,379,378,378,
                    377,377,376,376,375,375,374,373,373,372,372,371,371,370,370,369,
                    369,368,367,367,366,366,365,365,364,364,363,363,362,361,361,360,
                    360,359,359,358,358,357,356,356,355,355,354,354,353,353,352,352,
                    351,350,350,349,349,348,348,347,347,346,346,345,344,344,343,343,
                    342,342,341,341,340,339,339,338,338,337,337,336,336,335,335,334,
                    333,333,332,332,331,331,330,330,329,329,328,327,327,326,326,325,
                    325,324,324,323,322,322,321,321,320,320,319,319,318,318,317,316,
                    316,315,315,314,314,313,313,312,312,311,310,310,309,309,308,308,
                    307,307,306,305,305,304,304,303,303,302,302,301,301,300,299,299,
                    298,298,297,297,296,296,295,295,294,293,293,292,292,291,291,290,
                    290,289,288,288,287,287,286,286,285,285,284,284,283,282,282,281,
                    281,280,280,279,279,278,278,277,276,276,275,275,274,274,273,273,
                    272,271,271,270,270,269,269,268,268,267,267,266,265,265,264,264,
                    263,263,262,262,261,261,260,259,259,258,258,257,257,256,256,255,
                    254,254,253,253,252,252,251,251,250,250,249,248,248,247,247,246,
                    246,245,245,244,244,243,242,242,241,241,240,240,239,239,238,237,
                    237,236,236,235,235,234,234,233,233,232,231,231,230,230,229,229,
                    228,228,227,227,226,225,225,224,224,223,223,222,222,221,220,220,
                    219,219,218,218,217,217,216,216,215,214,214,213,213,212,212,211,
                    211,210,210,209,208,208,207,207,206,206,205,205,204,203,203,202,
                    202,201,201,200,200,199,199,198,197,197,196,196,195,195,194,194,
                    193,193,192,191,191,190,190,189,189,188,188,187,186,186,185,185,
                    184,184,183,183,182,182,181,180,180,179,179,178,178,177,177,176,
                    176,175,174,174,173,173,172,172,171,171,170,169,169,168,168,167,
                    167,166,166,165,165,164,163,163,162,162,161,161,160,160,159,158,
                    158,157,157,156,156,155,155,154,154,153,152,152,151,151,150,150,
                    149,149,148,148,147,146,146,145,145,144,144,143,143,142,141,141,
                    140,140,139,139,138,138,137,137,136,135,135,134,134,133,133,132,
                    132,131,131,130,129,129,128,128,127,127,126,126,125,124,124,123,
                    123,122,122,121,121,120,120,119,118,118,117,117,116,116,115,115,
                    114,114,113,112,112,111,111,110,110,109,109,108,107,107,106,106,
                    105,105,104,104,103,103,102,101,101,100,100,
                    99,99,98,98,97,97,96,95,95,94,94,93,93,92,92,91,90,90,89,89,88,
                    88,87,87,86,86,85,84,84,83,83,82,82,81,81,80,80,79,78,78,77,77,
                    76,76,75,75,74,73,73,72,72,71,71,70,70,69,69,68,67,67,66,66,65,
                    65,64,64,63,63,62,61,61,60,60,59,59,58,58,57,56,56,55,55,54,54,
                    53,53,52,52,51,50,50,49,49,48,48,47,47,46,46,45,44,44,43,43,42,
                    42,41,41,40,39,39,38,38,37,37,36,36,35,35,34,33,33,32,32,31,31,
                    30,30,29,29,28,27,27,26,26,25,25,24,24,23,22,22,21,21,20,20,19,
                    19,18,18,17,16,16},

/* 3ème tableau déclaré stockant les valeurs de height en 4:3 mod 16
    le tableau contient 45 éléments => indice i variant de 0 à 44 */
tableau3_mod16[] = {528,512,496,496,480,464,464,448,432,416,416,400,384,368,368,352,
                    336,320,320,304,288,288,272,256,240,240,224,208,192,192,176,160,
                    160,144,128,112,112,96,80,64,64,48,32,16,16},

/* 4ème tableau déclaré stockant les valeurs de height en 4:3 mod 1
    le tableau contient 697 éléments => indice i variant de 0 à 696 */
tableau4_mod1[] =  {526,526,525,524,524,523,522,521,521,520,519,518,518,517,516,516,
                    515,514,513,513,512,511,510,510,509,508,507,507,506,505,505,504,
                    503,502,502,501,500,499,499,498,497,497,496,495,494,494,493,492,
                    491,491,490,489,488,487,486,486,485,484,483,483,482,481,480,480,
                    479,478,478,477,476,475,475,474,473,472,472,471,470,469,469,468,
                    467,467,466,465,464,464,463,462,461,461,460,459,458,458,457,456,
                    456,455,454,453,453,452,451,450,450,449,448,448,447,446,445,445,
                    444,443,442,442,441,440,439,439,438,437,437,436,435,434,434,433,
                    432,431,431,430,429,429,428,427,426,426,425,424,423,423,422,421,
                    420,420,419,418,418,417,416,415,415,414,413,412,412,411,410,410,
                    409,408,407,407,406,405,404,404,403,402,401,401,400,399,399,398,
                    397,396,396,395,394,393,393,392,391,390,390,389,388,388,387,386,
                    385,385,384,383,382,382,381,380,380,379,378,377,377,376,375,374,
                    374,373,372,371,371,370,369,369,368,367,366,366,365,364,363,363,
                    362,361,361,360,359,358,358,357,356,355,355,354,353,352,352,351,
                    350,350,349,348,347,347,346,345,344,344,343,342,341,340,339,339,
                    338,337,336,336,335,334,333,333,332,331,331,330,329,328,328,327,
                    326,325,325,324,323,322,322,321,320,320,319,318,317,317,316,315,
                    314,314,313,312,312,311,310,309,309,308,307,306,306,305,304,303,
                    303,302,301,301,300,299,298,298,297,296,295,295,294,293,292,292,
                    291,290,290,289,288,287,287,286,285,284,284,283,282,282,281,280,
                    279,279,278,277,276,276,275,274,273,273,272,271,271,270,269,268,
                    268,267,266,265,265,264,263,263,262,261,260,260,259,258,257,257,
                    256,255,254,254,253,252,252,251,250,249,249,248,247,246,246,245,
                    244,244,243,242,241,241,240,239,238,238,237,236,235,235,234,233,
                    233,232,231,230,230,229,228,227,227,226,225,224,224,223,222,222,
                    221,220,219,219,218,217,216,216,215,214,214,213,212,211,211,210,
                    209,208,208,207,206,205,205,204,203,203,202,201,200,200,199,198,
                    197,197,196,195,195,194,193,192,192,191,190,189,189,188,187,186,
                    186,185,184,184,183,182,181,181,180,179,178,178,177,176,176,175,
                    174,173,173,172,171,170,170,169,168,167,167,166,165,165,164,163,
                    162,162,161,160,159,159,158,157,156,156,155,154,154,153,152,151,
                    151,150,149,148,148,147,146,146,145,144,143,143,142,141,140,140,
                    139,138,137,137,136,135,135,134,133,132,132,131,130,129,129,128,
                    127,127,126,125,124,124,123,122,121,121,120,119,118,118,117,116,
                    116,115,114,113,113,112,111,110,110,109,108,107,107,106,105,105,
                    104,103,102,102,101,100,
                    99,99,98,97,97,96,95,94,94,93,92,91,91,90,89,88,88,87,86,86,85,
                    84,83,83,82,81,80,80,79,78,78,77,76,75,75,74,73,72,72,71,70,69,
                    69,68,67,67,66,65,64,64,63,62,61,61,60,59,58,58,57,56,56,55,54,
                    53,53,52,51,50,50,49,48,48,47,46,45,45,44,43,42,42,41,40,39,39,
                    38,37,37,36,35,34,34,33,32,31,31,30,29,29,28,27,26,26,25,24,23,
                    23,22,21,20,20,19,18,18,17,16},
i;
                    
TCHAR bufw[3], bufh[3];

VOID RemplieFenetrePrincipale(HWND fenetrePrincipale)
{    
    UINT bool_3;
        // On le remplit avec un premier push button tout bête        
        hControle=CreateWindow(
            "BUTTON",
            "Stock please",
            WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
            10+260,10+4,
            90,20,
            fenetrePrincipale,
            (HMENU)ID_PUSHBUTTON_1,
            instance,
            NULL);
            
        hControle=CreateWindow(
            "BUTTON",
            "ENTER",
            WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
            10+168,10+119,
            50,20,
            fenetrePrincipale,
            (HMENU)ID_PUSHBUTTON_2,
            instance,
            NULL);
            
        // un second avec quelques flags : plat et plusieurs lignes
        hControle=CreateWindow(
            "BUTTON",
            "See you later",
            WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|BS_FLAT|BS_MULTILINE,
            10,10+217,
            100,20,
            fenetrePrincipale,
            (HMENU)ID_PUSHBUTTON_5,
            instance,
            NULL);                
        
        // une check box automatique deux états
        hControle=CreateWindow(
            "BUTTON",
            "Resolution Mod 16",
            WS_CHILD|WS_VISIBLE|BS_AUTOCHECKBOX|BS_FLAT,
            10+230,10+218,
            140,20,
            fenetrePrincipale,
            (HMENU)ID_CHECKBOX_1,
            instance,
            NULL);
            
        CheckDlgButton(      
        fenetrePrincipale,
        ID_CHECKBOX_1,
        BST_CHECKED);
    
    // troisième groupe : les radio button
    hGroup=CreateWindow(
        "BUTTON",
        "Select FPS or enter one",
        WS_CHILD|WS_VISIBLE|BS_GROUPBOX,
        10,10+40,
        225,110,
        fenetrePrincipale,
        NULL,
        instance,
        NULL);
    {
        HWND hControle;
        // trois radio button
        hControle=CreateWindow(
            "BUTTON",
            "25 FPS (PAL)",
            WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON|WS_GROUP|BS_FLAT,
            10+10,10+60,
            150,20,
            fenetrePrincipale,
            (HMENU)ID_RADIOBUTTON_11,
            instance,
            NULL);        

        hControle=CreateWindow(
            "BUTTON",
            "23.97 FPS (NTSC)",
            WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON|BS_FLAT,
            10+10,10+90,
            150,20,
            fenetrePrincipale,
            (HMENU)ID_RADIOBUTTON_12,
            instance,
            NULL);

        hControle=CreateWindow(
            "BUTTON",
            "Other",
            WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON|BS_FLAT,
            10+10,10+120,
            60,20,
            fenetrePrincipale,
            (HMENU)ID_RADIOBUTTON_13,
            instance,
            NULL);
            
    CheckDlgButton(      
    fenetrePrincipale,
    ID_RADIOBUTTON_11,
    BST_CHECKED);
    bool_3=IsDlgButtonChecked(fenetrePrincipale, ID_RADIOBUTTON_11);
    if (bool_3 == 1)
        fps=25;
    }
    
    hCtl=CreateWindow(
        "STATIC",
        "Enter average bitrate (kbits/s) :",
        WS_CHILD|WS_VISIBLE|SS_CENTER|SS_NOTIFY,
        10,10+5,
        200,20,
        fenetrePrincipale,
        (HMENU)ID_STATIC_1,
        instance,
        NULL);
    
    hCtl=CreateWindow(
        "STATIC",
        "+ click",
        WS_CHILD|WS_VISIBLE|SS_CENTER|SS_NOTIFY,
        10+118,10+121,
        50,20,
        fenetrePrincipale,
        (HMENU)ID_STATIC_2,
        instance,
        NULL);
        
    hCtl=CreateWindow(
        "STATIC",
        "BPF nearest 0.3 for Xvid",
        WS_CHILD|WS_VISIBLE|SS_CENTER|SS_NOTIFY,
        10,10+170,
        160,20,
        fenetrePrincipale,
        (HMENU)ID_STATIC_3,
        instance,
        NULL);
        
    hCtl=CreateWindow(
        "STATIC",
        "BPF is :",
        WS_CHILD|WS_VISIBLE|SS_CENTER|SS_NOTIFY,
        10+120,10+199,
        60,20,
        fenetrePrincipale,
        (HMENU)ID_STATIC_4,
        instance,
        NULL);    
        
    hEdit=CreateWindow( "EDIT",
                        "",
                         WS_VISIBLE|WS_CHILD|WS_BORDER|ES_CENTER|ES_NUMBER ,
                         10+205,10+3,50,20,fenetrePrincipale,(HMENU)ID_EDITBOX_1,instance,NULL);
    
    hEdit=CreateWindow( "EDIT",
                        "",
                         WS_VISIBLE|WS_CHILD|WS_BORDER|ES_CENTER ,
                         10+70,10+119,50,20,fenetrePrincipale,(HMENU)ID_EDITBOX_2,instance,NULL);
    
    width=720;    
    _stprintf(bufw, TEXT("%d"), width);
    hEdit=CreateWindow( "EDIT",
                        bufw,
                        WS_VISIBLE|WS_CHILD|WS_BORDER|ES_CENTER|ES_READONLY ,
                         10+248,10+172,40,20,fenetrePrincipale,(HMENU)ID_EDITBOX_3,instance,NULL);
    
    i=0;
    height=tableau1_mod16[i];    
    _stprintf(bufh, TEXT("%d"), height);
    hEdit=CreateWindow( "EDIT",
                        bufh,
                        WS_VISIBLE|WS_CHILD|WS_BORDER|ES_CENTER|ES_READONLY ,
                         10+313,10+172,40,20,fenetrePrincipale,(HMENU)ID_EDITBOX_4,instance,NULL);
                        
    hEdit=CreateWindow( "EDIT",
                        "",
                        WS_VISIBLE|WS_CHILD|WS_BORDER|ES_CENTER|ES_READONLY ,
                         10+180,10+197,40,20,fenetrePrincipale,(HMENU)ID_EDITBOX_5,instance,NULL);
        
    hGroup=CreateWindow(
        "BUTTON",
        "Select input PAR",
        WS_CHILD|WS_VISIBLE|BS_GROUPBOX,
        10+249,10+40,
        125,110,
        fenetrePrincipale,
        NULL,
        instance,
        NULL);
    {
        HWND hControle;
        // trois radio button
        hControle=CreateWindow(
            "BUTTON",
            "16:9",
            WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON|WS_GROUP|BS_FLAT,
            10+259,10+60,
            50,20,
            fenetrePrincipale,
            (HMENU)ID_RADIOBUTTON_21,
            instance,
            NULL);

        hControle=CreateWindow(
            "BUTTON",
            "4:3",
            WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON|BS_FLAT,
            10+259,10+90,
            50,20,
            fenetrePrincipale,
            (HMENU)ID_RADIOBUTTON_22,
            instance,
            NULL);
            
    CheckDlgButton(      
    fenetrePrincipale,
    ID_RADIOBUTTON_21,
    BST_CHECKED);
    }
    
    hControle=CreateWindow(
            "BUTTON",
            "U",
            WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
            10+290,10+165,
            22,17,
            fenetrePrincipale,
            (HMENU)ID_PUSHBUTTON_3,
            instance,
            NULL);
    
    hControle=CreateWindow(
            "BUTTON",
            "D",
            WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
            10+290,10+182,
            22,17,
            fenetrePrincipale,
            (HMENU)ID_PUSHBUTTON_4,
            instance,
            NULL);    
}

VOID DemandeActionCheckBox4(HWND hCtl,HWND fenetrePrincipale)
{
    // test si la check box est cochée, non cochée ou inderterminée.
    LRESULT lRes=SendMessage(hCtl,BM_GETCHECK,0,0);
    PCHAR lpProchainEtat;
    UINT iProchainEtat;
    UINT iChoix;
    CHAR lpMessage[128];

    if(lRes==BST_CHECKED)
    {        
        lpProchainEtat="décochée";
        iProchainEtat=BST_UNCHECKED;        
    }    
    else if (lRes==BST_UNCHECKED)
    {        
        lpProchainEtat="cochée";
        iProchainEtat=BST_CHECKED;    
    }    
        SendMessage(hCtl,BM_SETCHECK,(WPARAM)iProchainEtat,0);
}

VOID calculaffichresbpf(HWND fenetrePrincipale)
{    
    TCHAR bpfstr[5];
    double bpf;
    
    bpf=(bitrate*1000)/(width*height*fps);
    sprintf(bpfstr, "%.3f", bpf);
    SetDlgItemText(fenetrePrincipale, ID_EDITBOX_5, bpfstr);
}

VOID NotificationControle(HWND fenetrePrincipale,UINT message, WPARAM wParam, LPARAM lParam)
{    
    UINT iId=LOWORD(wParam), freefps, mon_booleen, bool_2, bool_4;
    HWND hCtl=(HWND)lParam;
    CHAR lpMessage[128];
    TCHAR buf[7], buflpnmud[3];    
    
    switch(iId)
    {    
        case ID_PUSHBUTTON_1:            
            bitrate=GetDlgItemInt(fenetrePrincipale, ID_EDITBOX_1, NULL, FALSE);
            calculaffichresbpf(fenetrePrincipale);
            break;
            
        case ID_PUSHBUTTON_2:
            mon_booleen=IsDlgButtonChecked(fenetrePrincipale, ID_RADIOBUTTON_13);
            if (mon_booleen == 1)
            {            
            freefps=GetDlgItemText(fenetrePrincipale, ID_EDITBOX_2, buf, 7);
            fps=strtod(buf, NULL);            
            }
            calculaffichresbpf(fenetrePrincipale);
            break;        
        
        case ID_PUSHBUTTON_3:            
            bool_2=IsDlgButtonChecked(fenetrePrincipale, ID_CHECKBOX_1);
            bool_4=IsDlgButtonChecked(fenetrePrincipale, ID_RADIOBUTTON_21);            
            if (bool_4 == 1) // 16:9
                {
                if (bool_2 == 1) // 16:9 mod 16
                    {
                    if (width<720 && i>0)
                        {
                        width = width + 16;
                        i=i-1;
                        height=tableau1_mod16[i];
                        }
                    }                
                else // 16:9 mod 1
                    {
                    if (width<720 && i>0)
                        {
                        width = width + 1;
                        i=i-1;
                        height=tableau2_mod1[i];
                        }
                    }
                }
            else // 4:3
                {
                if (bool_2 == 1) // 4:3 mod 16
                    {
                    if (width<720 && i>0)
                        {
                        width = width + 16;
                        i=i-1;
                        height=tableau3_mod16[i];
                        }
                    }                
                else // 4:3 mod 1
                    {
                    if (width<720 && i>0)
                        {
                        width = width + 1;
                        i=i-1;
                        height=tableau4_mod1[i];
                        }
                    }
                }                            
            sprintf(bufw, "%d", width);
            SetDlgItemText(fenetrePrincipale, ID_EDITBOX_3, bufw);
            sprintf(bufh, "%d", height);
            SetDlgItemText(fenetrePrincipale, ID_EDITBOX_4, bufh);            
            calculaffichresbpf(fenetrePrincipale);
            break;
        
        case ID_PUSHBUTTON_4:
            bool_2=IsDlgButtonChecked(fenetrePrincipale, ID_CHECKBOX_1);            
            bool_4=IsDlgButtonChecked(fenetrePrincipale, ID_RADIOBUTTON_21);            
            if (bool_4 == 1) // 16:9
                {
                if (bool_2 == 1) // 16:9 mod 16
                    {
                    if (width>16 && i<44)
                        {
                        width = width - 16;
                        i=i+1;
                        height=tableau1_mod16[i];
                        }
                    }                
                else // 16:9 mod 1
                    {
                    if (width>16 && i<691)
                        {
                        width = width - 1;
                        i=i+1;
                        height=tableau2_mod1[i];
                        }
                    }
                }
            else // 4:3
                {
                if (bool_2 == 1) // 4:3 mod 16
                    {
                    if (width>16 && i<44)
                        {
                        width = width - 16;
                        i=i+1;
                        height=tableau3_mod16[i];
                        }
                    }                
                else // 4:3 mod 1
                    {
                    if (width>16 && i<696)
                        {
                        width = width - 1;
                        i=i+1;
                        height=tableau4_mod1[i];
                        }
                    }
                }
            sprintf(bufw, "%d", width);
            SetDlgItemText(fenetrePrincipale, ID_EDITBOX_3, bufw);
            sprintf(bufh, "%d", height);
            SetDlgItemText(fenetrePrincipale, ID_EDITBOX_4, bufh);            
            calculaffichresbpf(fenetrePrincipale);
            break;
        
        case ID_PUSHBUTTON_5:
            DestroyWindow(fenetrePrincipale);
            break;
            
        case ID_RADIOBUTTON_11:                                    
            fps=25;
            calculaffichresbpf(fenetrePrincipale);
            break;
            
        case ID_RADIOBUTTON_12:                        
            fps=23.9765;
            calculaffichresbpf(fenetrePrincipale);
            break;
            
        case ID_RADIOBUTTON_21:
            width = 720;
            sprintf(bufw, "%d", width);
            SetDlgItemText(fenetrePrincipale, ID_EDITBOX_3, bufw);
            i=0;
            bool_2=IsDlgButtonChecked(fenetrePrincipale, ID_CHECKBOX_1);            
            if (bool_2 == 1)            
                height=tableau1_mod16[i];
            else
                height=tableau2_mod1[i];            
            sprintf(bufh, "%d", height);
            SetDlgItemText(fenetrePrincipale, ID_EDITBOX_4, bufh);
            calculaffichresbpf(fenetrePrincipale);
            break;
            
        case ID_RADIOBUTTON_22:
            width = 720;
            sprintf(bufw, "%d", width);
            SetDlgItemText(fenetrePrincipale, ID_EDITBOX_3, bufw);
            i=0;
            bool_2=IsDlgButtonChecked(fenetrePrincipale, ID_CHECKBOX_1);                
            if (bool_2 == 1)
                height=tableau3_mod16[i];
            else
                height=tableau4_mod1[i];                
            sprintf(bufh, "%d", height);
            SetDlgItemText(fenetrePrincipale, ID_EDITBOX_4, bufh);
            calculaffichresbpf(fenetrePrincipale);
            break;
            
        case ID_CHECKBOX_1:
            width = 720;
            sprintf(bufw, "%d", width);
            SetDlgItemText(fenetrePrincipale, ID_EDITBOX_3, bufw);
            i=0;
            bool_2=IsDlgButtonChecked(fenetrePrincipale, ID_CHECKBOX_1);
            bool_4=IsDlgButtonChecked(fenetrePrincipale, ID_RADIOBUTTON_21);            
            if (bool_4 == 1) // 16:9
                {
                if (bool_2 == 1) // 16:9 mod 16            
                    height=tableau1_mod16[i];
                else // 16:9 mod 1
                    height=tableau2_mod1[i];
                }
            else // 4:3
                {
                if (bool_2 == 1) // 4:3 mod 16
                    height=tableau3_mod16[i];
                else // 4:3 mod 1
                    height=tableau4_mod1[i];
                }
            sprintf(bufh, "%d", height);
            SetDlgItemText(fenetrePrincipale, ID_EDITBOX_4, bufh);
            calculaffichresbpf(fenetrePrincipale);
            break;        
    }    
}

LRESULT CALLBACK procedureFenetrePrincipale(HWND fenetrePrincipale, UINT message, WPARAM wParam, LPARAM lParam)
{
    static HWND boutons[2] = {NULL};    

    switch (message)
    {
        case WM_CREATE:
            RemplieFenetrePrincipale(fenetrePrincipale);            
            return 0;
        case WM_COMMAND:
            NotificationControle(fenetrePrincipale,message,wParam,lParam);            
            return 0;
        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;
        default:
            return DefWindowProc(fenetrePrincipale,message,wParam,lParam);
    }
}


int WINAPI WinMain (HINSTANCE cetteInstance, HINSTANCE precedenteInstance,
             LPSTR lignesDeCommande, int modeDAffichage)
{
    HWND fenetrePrincipale;
    MSG message;
    WNDCLASS classeFenetre;

    instance = cetteInstance;

    classeFenetre.style = 0;
    classeFenetre.lpfnWndProc = procedureFenetrePrincipale;
    classeFenetre.cbClsExtra = 0;
    classeFenetre.cbWndExtra = 0;
    classeFenetre.hInstance = NULL;
    classeFenetre.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    classeFenetre.hCursor = LoadCursor(NULL, IDC_ARROW);
    classeFenetre.hbrBackground = (HBRUSH)(1 + COLOR_BTNFACE);
    classeFenetre.lpszMenuName = NULL;
    classeFenetre.lpszClassName = "classeF";

// On prévoit quand même le cas où ça échoue
    if(!RegisterClass(&classeFenetre))
        return FALSE;

    fenetrePrincipale=CreateWindow(
        "classeF",
        "Boombaka calcula",
        WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX,
        CW_USEDEFAULT,CW_USEDEFAULT,
        400,300,
        NULL,
        NULL,
        cetteInstance,
        NULL);

    if (!fenetrePrincipale)
        return FALSE;

    ShowWindow(fenetrePrincipale,modeDAffichage);
    UpdateWindow(fenetrePrincipale);


    while(GetMessage(&message,NULL,0,0))
    {
        TranslateMessage(&message);
        DispatchMessage(&message);
    }

    return message.wParam;
}

j'ai tout mis dans un seul fichier, ce qui n'est pas très courant mais je m'en fiche
Go to the top of the page
 
+Quote Post
The Uploader
posté 20 November 2009 à 12:49
Message #11


Radical Dreamer
******

Groupe : Modérateurs
Messages : 6093
Inscrit : 10 06 2003
Lieu : L'Antre des Rêves...
Membre no 25271



ouééé un nouveau jouet! ohmy.gif

Euh, pardon. blush.gif

Je vais remettre ça en C# illico. smile.gif

flowers.gif


--------------------
Go to the top of the page
 
+Quote Post
gizmo27
posté 20 November 2009 à 12:53
Message #12


Membre Appliqué
*****

Groupe : Membres
Messages : 793
Inscrit : 10 11 2006
Lieu : ici et ailleurs
Membre no 77459



par contre la progra en c# requiert des frameworks .NET windows ?

tu vas me trouver un peu vieux jeu mais GK marchait sans aucun besoin de framework et ça serait cool si le nouveau fonctionnait même avec le plus rustique des windows et sans la moindre framework

pourquoi cette motivation soudaine de vouloir programmer GK en c# ? mon freeware t'a fait saut au plafond ? biggrin.gif

Ce message a été modifié par gizmo27 - 20 November 2009 à 12:54.
Go to the top of the page
 
+Quote Post
gizmo27
posté 20 November 2009 à 13:01
Message #13


Membre Appliqué
*****

Groupe : Membres
Messages : 793
Inscrit : 10 11 2006
Lieu : ici et ailleurs
Membre no 77459



merci de vouloir réecrire mon programme c'est sympa à toi : je pourrais te demander un tout petit service ?

Ce message a été modifié par gizmo27 - 20 November 2009 à 13:03.
Go to the top of the page
 
+Quote Post
The Uploader
posté 20 November 2009 à 13:07
Message #14


Radical Dreamer
******

Groupe : Modérateurs
Messages : 6093
Inscrit : 10 06 2003
Lieu : L'Antre des Rêves...
Membre no 25271



Euh pour GK l'orignal est en Delphi, c'est un code qu'on reprend. Le refaire serait peut-être plus sain. D'autant qu'en .NET on garde notre santé mentale par rapport à l'API Win32.

Pour la présence du .NET Framework sur le système, les machines Vista/Seven/Serveur 2008 l'ont de toute façon (en version 3.5 c'est à dire la dernière à ce jour). Les machines XP (depuis le SP1) ont le Framework 1.1 sur le CD OEM d'install (dans DOTNETFX - mais il n'est pas automatiquement installé). Le .NET Framework est une mise à jour Windows Update depuis longtemps pour XP (je suis à 75% sûr là dessus) (seuls les patchs de sécurité des différentes versions du .NET Framework le sont).

Et puis, il est quasi sur toutes les machines XP de nos jours (d'autant que plein de produits MS l'installe s'il n'est pas là). Si par malheur il n'y est pas, l'appli .NET renvoie vers une URL de download, et quitte. Une seule version du Framework est requise. Si l'application utilise des fonctions .NET Framework 3.5 alors que celui installé est le 2.0 (le dernier Framework contient toutes les anciennes versions), l'application donne un lien de téléchargement et quitte.

En conclusion, à part les machines Windows 98SE (qui se comptent sur le doigt de la main, et sur lesquelles ont peut mettre le .NET Framework 2.0), il y a peu de chances de se "couper" une partie de l'audience utilisateur Windows.

D'autant que si ton application est en WinForms, le .NET Framework 2.0 suffit. Et ça fonctionne sous GNU/Linux si les libraires Mono (réimplémentation libre de la CLR de .NET) sont installées.

flowers.gif
PS : Oui, quel service ? ^^

Ce message a été modifié par The Uploader - 20 November 2009 à 13:14.


--------------------
Go to the top of the page
 
+Quote Post
gizmo27
posté 20 November 2009 à 13:11
Message #15


Membre Appliqué
*****

Groupe : Membres
Messages : 793
Inscrit : 10 11 2006
Lieu : ici et ailleurs
Membre no 77459



ok cool
si t'es toujours là j'aurais voulu te demander si ça ne te dérange pas : si tu peux faire un updown control pour le réglage des résolutions : actuellement ça n'est qu'avec de simples push button

j'aimerais voir les résol défiler quand on laisse le clic gauche enfoncé

ne donnes pas de version ni d'auteur au programme : je l'ai décidé ainsi : les choses doivent être simples

si tu peux faire ça alors un très grand merci d'avance

PS : l'updown control ressemble bien sûr à celui de GK wink.gif mais en aussi gros que la taille de mes 2 push button si cela ne te dérange pas et si tu peux aussi garder la taille de la fenêtre principale

merci beaucoup d'avance

Ce message a été modifié par gizmo27 - 20 November 2009 à 13:14.
Go to the top of the page
 
+Quote Post
The Uploader
posté 20 November 2009 à 13:15
Message #16


Radical Dreamer
******

Groupe : Modérateurs
Messages : 6093
Inscrit : 10 06 2003
Lieu : L'Antre des Rêves...
Membre no 25271



OK, chef, je verrais ça. smile.gif


--------------------
Go to the top of the page
 
+Quote Post
gizmo27
posté 20 November 2009 à 13:22
Message #17


Membre Appliqué
*****

Groupe : Membres
Messages : 793
Inscrit : 10 11 2006
Lieu : ici et ailleurs
Membre no 77459



non ne m'appelles pas chef j'aimes pas : je ne suis le chef de personne, pas même chef de moi-même

écoutes c'est vraiment super sympa de ta part de t'occuper de refaire ce soft : je suis très content. je ne sais pas comment te remercier : c'est vraiment trop chouet. Vraiment merci beaucoup encore.

EDIT (le 20/10/2009 21h) : tu sais pour ce que j'ai dit sur le fait de ne pas mettre d'auteur eh ben j'ai peut-être un peu exagéré : tu peux mettre ton pseudo si tu veux mais par pitié ne mets jamais le mien... biggrin.gif (non sérieux)

ah c'est vraiment trop cool ce que tu fais pour moi : tu ne peux t'imaginer à quel point je suis content... toi tu veux me réclamer de l'argent mmmmhhhhh ?... je te préviens j'ai que des petites coupures biggrin.gif

Ce message a été modifié par gizmo27 - 20 November 2009 à 21:47.
Go to the top of the page
 
+Quote Post
gizmo27
posté 21 November 2009 à 10:57
Message #18


Membre Appliqué
*****

Groupe : Membres
Messages : 793
Inscrit : 10 11 2006
Lieu : ici et ailleurs
Membre no 77459



salut TheUp smile.gif

ça va ? tu n'as sûrement pas commencé à programmer mais si je t'ai dit pour l'updown control c'est je n'ai pas réussi à le faire marcher : mon idée c'était de créer un seul control updown qui agit sur les 2 editbox en même temps (une pour width et une autre pour height) : MeGUI propose 1 updown par editbox : quand tu décoches mod 16 les 2 sont indépendants : je trouve ça un peu déroutant alors que ça n'était pas le cas dans GK

j'espère que tu t'en sortiras bon courage
Go to the top of the page
 
+Quote Post
The Uploader
posté 21 November 2009 à 13:51
Message #19


Radical Dreamer
******

Groupe : Modérateurs
Messages : 6093
Inscrit : 10 06 2003
Lieu : L'Antre des Rêves...
Membre no 25271



salut

Le updown control n'existe pas dans WinForms. Parcontre, il existe le numericUpDown, qui est une textBox avec un ascenseur (ce que utilise MeGUI qui est aussi fait en C# et en WinForms). Par contre, rien n'empêche de réduire le numericUpDown uniquement à la partie ascenseur (et VisualStudio y aide - quand on réduit un numericUpDown vite pour enlever la partie textBox, au bout d'un moment il réduit "tout seul" le reste. Ça et l'aide MSDN sur la classe du contrôle permet de comprendre que Microsoft prévoit qu'on utilise ce contrôle aussi de cette manière).

J'ai presque fini, j'ai juste un peu de mal à comprendre ce que tu fais avec i. En fait où dans le code tu le fais varier (moi au départ il est égale à 0). Il ne me reste plus qu'à coder le numericUpDown (j'ai reperé le code où tu as codé le numericUpDown et le resize quand on l'utilise (le switch-case)).

Visuellement, voilà ce que ça donne :

Pas de boutons, tout est modifié automatiquement dans les évènements "TextChanged" (pour les textBox) et "CheckedChanged" (pour les checkbox et boutons radio). (c'est plus simple, plus rapide, aucun click, comme une "vraie" calculette Windows).

Tu as essayé VS C# 2008 Express ?

flowers.gif


--------------------
Go to the top of the page
 
+Quote Post
gizmo27
posté 21 November 2009 à 20:20
Message #20


Membre Appliqué
*****

Groupe : Membres
Messages : 793
Inscrit : 10 11 2006
Lieu : ici et ailleurs
Membre no 77459



salut non pas eu le temps pour visual c# : les editbox de la résol et du bpf sont un peu grande il me semble, pareil pour le bitrate moyen : mieux vaudrait les racourcir tu ne penses pas ? en fin c'est toi qui vois. sinon ton truc ça a l'air de bien marcher

le i est l'indice du tableau : en effet : que ce soit en mode 16 ou en mode 1 quand width diminue de 16 ou de 1 il arrive que height reste la même

le i est l'indice du tableau que j'incrémente ou que je décrémente suivant le cas

PS : ton programme fonctionne sur tous les windows, dont windows 95 ?

Ce message a été modifié par gizmo27 - 21 November 2009 à 20:22.
Go to the top of the page
 
+Quote Post
The Uploader
posté 21 November 2009 à 20:34
Message #21


Radical Dreamer
******

Groupe : Modérateurs
Messages : 6093
Inscrit : 10 06 2003
Lieu : L'Antre des Rêves...
Membre no 25271



La version minimale exigée par le programme est le .NET Framework 2.0. Ce dernier s'installe sur Windows98 et suivants. Pas Windows95.

Enfin, je peux toujours vérifier, j'ai toujours en CD mon Win95 OSR 2.5 C (novembre 1997) avec support FAT32, IE 4, Active Desktop, DirectX 5, et prise en charge des ports USB 1 (le dernier Win95 en fait). biggrin.gif


--------------------
Go to the top of the page
 
+Quote Post
gizmo27
posté 21 November 2009 à 21:46
Message #22


Membre Appliqué
*****

Groupe : Membres
Messages : 793
Inscrit : 10 11 2006
Lieu : ici et ailleurs
Membre no 77459



ok no problemo

c'est cool que tu aies voulu reprendre mon programme, en tout cas c'est très cool de ta part j'apprécie

qu'est-ce qui a motivé ton geste ?
Go to the top of the page
 
+Quote Post
The Uploader
posté 22 November 2009 à 08:10
Message #23


Radical Dreamer
******

Groupe : Modérateurs
Messages : 6093
Inscrit : 10 06 2003
Lieu : L'Antre des Rêves...
Membre no 25271



Le code Win32 natif me paraissait bien compliqué.

En WinForms, ce sera beaucoup plus maintenable. Et puis la fenêtre bien plus jolie. Et la version Express de VS 2008 C# / VB .NET est gratuite (et suffisante pour une telle application).
Et en .NET 2.0 WinForms, ça tourne sous (à la fois en 32 bits et 64 bits) Win98, Win98SE, WinME, Win2000, WinXP, Win2003, WinServeur2003, WinVista, WinServeur2008, WinSeven, WinServeur2008R2, et Nunux (voire autre systèmes UNIX - like) avec les librairies Mono. Ça fait du peuple. Tu aurais encore plus de peuple en Java (on pourrait utiliser la libraire graphique SWING qui va avec l'IDE NetBeans) mais bon... C# et Java se ressemblent beaucoup (et les deux ressemblent beaucoup au C++), mais je suis pas encore très fort en Java.

Et même, je pourrais te le traduire en VB .NET si tu préfères au C#. wink.gif


--------------------
Go to the top of the page
 
+Quote Post
gizmo27
posté 22 November 2009 à 10:17
Message #24


Membre Appliqué
*****

Groupe : Membres
Messages : 793
Inscrit : 10 11 2006
Lieu : ici et ailleurs
Membre no 77459



te fatigues pas c'est très bien comme ça : le vs c# 2008 il est gratuit ? faut dl en + une librairie msdn pour que ça fonctionne ?

bon merci beaucoup en tout cas c'est très gentil à toi

merci 1000 fois

Ce message a été modifié par gizmo27 - 22 November 2009 à 10:20.
Go to the top of the page
 
+Quote Post
The Uploader
posté 22 November 2009 à 11:14
Message #25


Radical Dreamer
******

Groupe : Modérateurs
Messages : 6093
Inscrit : 10 06 2003
Lieu : L'Antre des Rêves...
Membre no 25271



Tu peux dl le Visual Studio C# Express 2008 sur le lien que je t'ai donné en début de topic. Il est gratos. Une fois installé, je te conseille de mettre le Service Pack 1 pour VS 2008 (téléchargeable ici : http://www.microsoft.com/downloads/details...;displaylang=fr )

Pour l'aide MSDN, perso j'ai téléchargé l'édition hors-ligne de MSDN (édition de de 2 Go qui date de décembre 2008) pour VS 2008 SP1. Mais l'intérêt est d'avoir l'aide en locale (et pas forcément à jour), donc c'est un peu limité. De toute façon l'aide sera consulté en ligne par défaut par MS Document Explorer (le truc d'aide).

D'ailleurs, le plus souvent j'appelle l'aide avec F1 lorsque je suis sur une propriété/évènement d'un contrôle qui m'est inconnue, ou lorsque je met le curseur à côté d'un mot clé du langage que j'ai du mal à utiliser). Ça permet d'ouvrir MS Doc' Explorer directement sur le truc en question.

flowers.gif


--------------------
Go to the top of the page
 
+Quote Post
gizmo27
posté 22 November 2009 à 11:21
Message #26


Membre Appliqué
*****

Groupe : Membres
Messages : 793
Inscrit : 10 11 2006
Lieu : ici et ailleurs
Membre no 77459



quand ton programme sera prêt j'irai sur megaupload pour dire d'effacer l'ancien

tu dis que le c# est voisin du c++ ? tu pourras envoyer le source de ce que tu as fait quand tu auras fini s'il te plaît ? ça m'intéresse. merci à toi
Go to the top of the page
 
+Quote Post
gizmo27
posté 24 November 2009 à 02:08
Message #27


Membre Appliqué
*****

Groupe : Membres
Messages : 793
Inscrit : 10 11 2006
Lieu : ici et ailleurs
Membre no 77459



ayé ! nouvelle version de boombaka ! avec le control updown qui marche à merveille maintenant !!!!!!!

voici le nouvel exe : http://www.megaupload.com/?d=MD5381SM

@TheUp
mais je compte toujours sur ton logiciel... disons que j'avais envie de "finir" celui-là rien que pour le sport, même si ça n'est pas moi qui l'ai fini, ça n'a pas été sans l'aide précieuse des gars de D9 et de developpez.com je dois dire

ceci étant dit j'attire ton attention sur le fait que j'aimerais savoir sur quels windows "mon" ("mon" entre guillemets bien sûr wink.gif) freeware est compatible : quels moyens de le vérifier ?
Go to the top of the page
 
+Quote Post
The Uploader
posté 24 November 2009 à 08:18
Message #28


Radical Dreamer
******

Groupe : Modérateurs
Messages : 6093
Inscrit : 10 06 2003
Lieu : L'Antre des Rêves...
Membre no 25271



Citation
Quels moyens de le vérifier ?
J'ai Win95, Win98SE, et WinXP en virtuel. Une compatibilité Win98SE prouvera de même une compatibilité WinME. Une compatibilité WinXP prouvera aussi une compatibilité Win2000 et Win2003. Et j'ai Seven en vrai, et si ça tourne sous Seven, ça tourne sous Vista, WinServeur2008, et WinServeur2008R2.

Pour le .NET Framework, j'ai tenté de le mettre sous Win95 (après l'avoir mis à jour) : refus catégorique (une fonction du kernel manque pour l'installeur).

Pour la version .NET que je suis en train de faire, j'ai un peu de mal avec mon contrôle UpDown. En fait, il n'est pas prévu de l'utiliser sans sa TextBox (et il n'y a pas d'évènements du style "OnUpClick" ou "OnDownClick"). Mais vu que la TextBox de ce contrôle a au départ 0 en valeur, et qu'elle varie de toute façon (sans programmation de ma part), je vais utiliser l'évènement "TextChanged" du numericUpDown contrôle pour faire varier les deux textBox : si ça baisse c'est que l'utilisateur a appuyé sur le bouton "bas", et dans le cas inverse le bouton "haut" (on ruse un peu shifty.gif ).

flowers.gif
PS :
Citation
le i est l'indice du tableau que j'incrémente ou que je décrémente suivant le cas

Ouais mais ? Je suis myope, je vois pas. online2long.gif


--------------------
Go to the top of the page
 
+Quote Post
gizmo27
posté 24 November 2009 à 22:32
Message #29


Membre Appliqué
*****

Groupe : Membres
Messages : 793
Inscrit : 10 11 2006
Lieu : ici et ailleurs
Membre no 77459



mes 4 tableaux du height, je les initialise au début en les déclarant en variable globale
Code
int (...),
tableau1_mod16[] = {400,...}

tu sais ?... le truc où tu vois des tonnes de chiffres comme une matrice géante : eh ben c'est ça laugh.gif

j'attend ta version avec impatience

sinon as-tu eu le temps de tester mon appli sur win 95 ? et les autres win ?

au fait : j'ai compilé avec mingw+visual-mingw : sur visual-mingw il y a une option "convert" => "mac", "unix"... peut-être que ça peut tourner sur Linux aussi...

ton visual c# il utilise l'api windows pour progra ou autre chose ? c'est pas les mêmes instructions ?

PS : et puis tu sais j'ai peut-être un peu exagéré l'autre jour : le programme tu peux lui donner un nom plus explicite que le "Harry Potter style" wink.gif... et aussi une version si ça te dis
bonne chance pour ton souci d'updown

PS2 : j'ai regardé les fonctions windows que j'utilise et d'après ce que dit MSDN mon programme devrait être compatible au minimum pour win 95 et winNT 3.51... à vérifier...
je me demande s'il n'existe pas de programme pour tester la compatibilité os d'un freeware comme boombaka

Ce message a été modifié par gizmo27 - 25 November 2009 à 22:17.
Go to the top of the page
 
+Quote Post
The Uploader
posté 26 November 2009 à 00:46
Message #30


Radical Dreamer
******

Groupe : Modérateurs
Messages : 6093
Inscrit : 10 06 2003
Lieu : L'Antre des Rêves...
Membre no 25271



J'ai presque fini, j'ai plus que le numerciUpDown à faire fonctionner. Tout le reste fonctionne. wink.gif

Je pense que j'aurais fini demain.

Citation
sinon as-tu eu le temps de tester mon appli sur win 95 ? et les autres win ?

Marche sur tous ton appli en C (testé à l'instant). smile.gif

Citation
au fait : j'ai compilé avec mingw+visual-mingw : sur visual-mingw il y a une option "convert" => "mac", "unix"... peut-être que ça peut tourner sur Linux aussi...

À partir du moment où tu utilise l'API Windows, ce n'est pas multiplateforme (l'API Windows ne l'est pas). Je crois que ce 'convert' c'est pour convertir les line endings (CRLF sous Windows et DOS, LF sous Unix/GNU-Linux, CR sous MacOS ! wacko.gif )

Citation
ton visual c# il utilise l'api windows pour progra ou autre chose ? c'est pas les mêmes instructions ?

Ce ne sont pas du tout les mêmes instructions. Bien que tu vas retrouver pas mal de mots clés, nécessairement (int, void, if, for, try, catch, do, while, char ...).

Mais c'est bien plus simple. On ne deal pas avec les messages Windows ni l'API Win32 directement (ni la gestion de la mémoire : le garbage collector s'en occupe. Bien qu'il faut faire attention (cf. message plus haut)). Le C que tu as écrit c'est du "bas niveau" (rien de péjoratif, hein smile.gif ), c'est pour les hardcore. En .NET, on s'occupe que de l'aspect "porcelaine" (haut niveau). Quoique, on est peu limité (et on peut faire des appels natifs si y'a vraiment besoin, mais c'est très rare, et déconseillé).

Windows Forms appelle Win32 tout seul (pour l'aspect graphique, parce que Win32 ce n'est pas que les fenêtres et contrôles Windows) quand on lance le programme.
Nous en .NET, on s'occupe que de ce qui nous intéresse : coder notre programme en lui-même.

Je vais te donner le code de la fenêtre en tant qu'exemple, ça s'explique tout seul :
[préambule : en .NET tout est objet. Le type de base de la hiérarchie des types est System.Object. La classe Object implémente plusieurs méthodes (= fonctions), héritées par tous les autres types, dont la fonction "ToString()"]
[le code C# qui décrit la fenêtre est ailleurs, dans Main.Designer.cs. On le modifie via l'éditeur de fenêtre graphique, rarement directement]
Code
//usings insérés par défaut à la création d'un WinForm. Y'en a un peu plus que le nécessaire pour le code qui suit.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Boombaka_Calcula
{
    public partial class MainForm : Form //notre fenêtre hérité nécessairement de la classe Form
    {
        private double _fps=0;
        private int _height=0;
        private int _width=0;
        private int _kbps=0;
        private int[] tab1_mod16= {400,384,384,368,352,352,336,336,320,320,304,304,288,288,272,256,
                    256,240,240,224,224,208,208,192,192,176,160,160,144,144,128,128,
                    112,112,96,80,80,64,64,48,48,32,32,16,16};
        private int[] tab2_mod1 ={395,394,394,393,393,392,392,391,390,390,389,389,388,388,387,387,
                    386,386,385,384,384,383,383,382,382,381,381,380,380,379,378,378,
                    377,377,376,376,375,375,374,373,373,372,372,371,371,370,370,369,
                    369,368,367,367,366,366,365,365,364,364,363,363,362,361,361,360,
                    360,359,359,358,358,357,356,356,355,355,354,354,353,353,352,352,
                    351,350,350,349,349,348,348,347,347,346,346,345,344,344,343,343,
                    342,342,341,341,340,339,339,338,338,337,337,336,336,335,335,334,
                    333,333,332,332,331,331,330,330,329,329,328,327,327,326,326,325,
                    325,324,324,323,322,322,321,321,320,320,319,319,318,318,317,316,
                    316,315,315,314,314,313,313,312,312,311,310,310,309,309,308,308,
                    307,307,306,305,305,304,304,303,303,302,302,301,301,300,299,299,
                    298,298,297,297,296,296,295,295,294,293,293,292,292,291,291,290,
                    290,289,288,288,287,287,286,286,285,285,284,284,283,282,282,281,
                    281,280,280,279,279,278,278,277,276,276,275,275,274,274,273,273,
                    272,271,271,270,270,269,269,268,268,267,267,266,265,265,264,264,
                    263,263,262,262,261,261,260,259,259,258,258,257,257,256,256,255,
                    254,254,253,253,252,252,251,251,250,250,249,248,248,247,247,246,
                    246,245,245,244,244,243,242,242,241,241,240,240,239,239,238,237,
                    237,236,236,235,235,234,234,233,233,232,231,231,230,230,229,229,
                    228,228,227,227,226,225,225,224,224,223,223,222,222,221,220,220,
                    219,219,218,218,217,217,216,216,215,214,214,213,213,212,212,211,
                    211,210,210,209,208,208,207,207,206,206,205,205,204,203,203,202,
                    202,201,201,200,200,199,199,198,197,197,196,196,195,195,194,194,
                    193,193,192,191,191,190,190,189,189,188,188,187,186,186,185,185,
                    184,184,183,183,182,182,181,180,180,179,179,178,178,177,177,176,
                    176,175,174,174,173,173,172,172,171,171,170,169,169,168,168,167,
                    167,166,166,165,165,164,163,163,162,162,161,161,160,160,159,158,
                    158,157,157,156,156,155,155,154,154,153,152,152,151,151,150,150,
                    149,149,148,148,147,146,146,145,145,144,144,143,143,142,141,141,
                    140,140,139,139,138,138,137,137,136,135,135,134,134,133,133,132,
                    132,131,131,130,129,129,128,128,127,127,126,126,125,124,124,123,
                    123,122,122,121,121,120,120,119,118,118,117,117,116,116,115,115,
                    114,114,113,112,112,111,111,110,110,109,109,108,107,107,106,106,
                    105,105,104,104,103,103,102,101,101,100,100,
                    99,99,98,98,97,97,96,95,95,94,94,93,93,92,92,91,90,90,89,89,88,
                    88,87,87,86,86,85,84,84,83,83,82,82,81,81,80,80,79,78,78,77,77,
                    76,76,75,75,74,73,73,72,72,71,71,70,70,69,69,68,67,67,66,66,65,
                    65,64,64,63,63,62,61,61,60,60,59,59,58,58,57,56,56,55,55,54,54,
                    53,53,52,52,51,50,50,49,49,48,48,47,47,46,46,45,44,44,43,43,42,
                    42,41,41,40,39,39,38,38,37,37,36,36,35,35,34,33,33,32,32,31,31,
                    30,30,29,29,28,27,27,26,26,25,25,24,24,23,22,22,21,21,20,20,19,
                    19,18,18,17,16,16};
        private int[] tab3_mod16= {528,512,496,496,480,464,464,448,432,416,416,400,384,368,368,352,
                    336,320,320,304,288,288,272,256,240,240,224,208,192,192,176,160,
                    160,144,128,112,112,96,80,64,64,48,32,16,16};
        private int[] tab4_mod1 =  {526,526,525,524,524,523,522,521,521,520,519,518,518,517,516,516,
                    515,514,513,513,512,511,510,510,509,508,507,507,506,505,505,504,
                    503,502,502,501,500,499,499,498,497,497,496,495,494,494,493,492,
                    491,491,490,489,488,487,486,486,485,484,483,483,482,481,480,480,
                    479,478,478,477,476,475,475,474,473,472,472,471,470,469,469,468,
                    467,467,466,465,464,464,463,462,461,461,460,459,458,458,457,456,
                    456,455,454,453,453,452,451,450,450,449,448,448,447,446,445,445,
                    444,443,442,442,441,440,439,439,438,437,437,436,435,434,434,433,
                    432,431,431,430,429,429,428,427,426,426,425,424,423,423,422,421,
                    420,420,419,418,418,417,416,415,415,414,413,412,412,411,410,410,
                    409,408,407,407,406,405,404,404,403,402,401,401,400,399,399,398,
                    397,396,396,395,394,393,393,392,391,390,390,389,388,388,387,386,
                    385,385,384,383,382,382,381,380,380,379,378,377,377,376,375,374,
                    374,373,372,371,371,370,369,369,368,367,366,366,365,364,363,363,
                    362,361,361,360,359,358,358,357,356,355,355,354,353,352,352,351,
                    350,350,349,348,347,347,346,345,344,344,343,342,341,340,339,339,
                    338,337,336,336,335,334,333,333,332,331,331,330,329,328,328,327,
                    326,325,325,324,323,322,322,321,320,320,319,318,317,317,316,315,
                    314,314,313,312,312,311,310,309,309,308,307,306,306,305,304,303,
                    303,302,301,301,300,299,298,298,297,296,295,295,294,293,292,292,
                    291,290,290,289,288,287,287,286,285,284,284,283,282,282,281,280,
                    279,279,278,277,276,276,275,274,273,273,272,271,271,270,269,268,
                    268,267,266,265,265,264,263,263,262,261,260,260,259,258,257,257,
                    256,255,254,254,253,252,252,251,250,249,249,248,247,246,246,245,
                    244,244,243,242,241,241,240,239,238,238,237,236,235,235,234,233,
                    233,232,231,230,230,229,228,227,227,226,225,224,224,223,222,222,
                    221,220,219,219,218,217,216,216,215,214,214,213,212,211,211,210,
                    209,208,208,207,206,205,205,204,203,203,202,201,200,200,199,198,
                    197,197,196,195,195,194,193,192,192,191,190,189,189,188,187,186,
                    186,185,184,184,183,182,181,181,180,179,178,178,177,176,176,175,
                    174,173,173,172,171,170,170,169,168,167,167,166,165,165,164,163,
                    162,162,161,160,159,159,158,157,156,156,155,154,154,153,152,151,
                    151,150,149,148,148,147,146,146,145,144,143,143,142,141,140,140,
                    139,138,137,137,136,135,135,134,133,132,132,131,130,129,129,128,
                    127,127,126,125,124,124,123,122,121,121,120,119,118,118,117,116,
                    116,115,114,113,113,112,111,110,110,109,108,107,107,106,105,105,
                    104,103,102,102,101,100,
                    99,99,98,97,97,96,95,94,94,93,92,91,91,90,89,88,88,87,86,86,85,
                    84,83,83,82,81,80,80,79,78,78,77,76,75,75,74,73,72,72,71,70,69,
                    69,68,67,67,66,65,64,64,63,62,61,61,60,59,58,58,57,56,56,55,54,
                    53,53,52,51,50,50,49,48,48,47,46,45,45,44,43,42,42,41,40,39,39,
                    38,37,37,36,35,34,34,33,32,31,31,30,29,29,28,27,26,26,25,24,23,
                    23,22,21,20,20,19,18,18,17,16};
        private int i=0;
        public MainForm()
        {
            InitializeComponent();
        }
        private void MainForm_Load(object sender, EventArgs e)
        {
            try
            {
                WidthTextBox.Text = "720";
            }
            catch (Exception x)
            {
                MessageBox.Show(x.Message, x.Source, MessageBoxButtons.OK, MessageBoxIcon.Error); //en cas d'erreur, on affiche une boîte de message.
            }
        }
        private void ComputeBPF() //pour calculer le BPF
        {
            try
            {
                _kbps = Convert.ToInt32(AVGKbpsTextBox.Text); //Conversion d'une chaîne de caractères (contenant ici a priori un entier) vers le type entier.
                _width = Convert.ToInt32(WidthTextBox.Text);
                _height = Convert.ToInt32(HeightTextBox.Text);
                if (PALFPSRadioButton.Checked) // Checked : case cochée. Équivalent à if(PALFPSRadioButton.Checked==true)
                {
                    _fps = 25;
                }
                else
                {
                    if (NTSCFPSRadioButton.Checked)
                    {
                        _fps = 23.976;
                    }
                    else
                    {
                        if (OtherFPSTextBox.Text != String.Empty) //String.Empty = ""
                        {
                            _fps = Convert.ToInt32(OtherFPSTextBox.Text);
                        }
                    }
                }
                if (_width * _height * _fps != 0) //pour éviter une division par zéro
                {
                    this.BPFTextBox.Text = Convert.ToString((_kbps * 1000) / (_width * _height * _fps));
                }
            }
            catch (Exception x)
            {
                if (x.Source.ToString() == "mscorlib")
                {
                    
                    AVGKbpsTextBox.Text = _kbps.ToString();
                    OtherFPSTextBox.Text = _fps.ToString();
                    WidthTextBox.Text = _width.ToString();
                    HeightTextBox.Text = _height.ToString();
                    //Si l'utilisateur a mis autre chose que des entiers dans une des TextBox (petit saligaud!), la source de l'exception sera mscorlib, et on les réinitialise (très rapide)
                }
                else
                {
                    MessageBox.Show(x.Message, x.Source, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
        private void AVGKbpsTextBox_TextChanged(object sender, EventArgs e)
        {
            try
            {
                ComputeBPF();
            }
            catch (Exception x)
            {
                MessageBox.Show(x.Message, x.Source, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        private void PALFPSRadioButton_CheckedChanged(object sender, EventArgs e)
        {
            try
            {
                OtherFPSTextBox.Enabled = false;
                ComputeBPF();
            }
            catch (Exception x)
            {
                MessageBox.Show(x.Message, x.Source, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        private void NTSCFPSRadioButton_CheckedChanged(object sender, EventArgs e)
        {
            try
            {
                OtherFPSTextBox.Enabled = false;
                ComputeBPF();
            }
            catch (Exception x)
            {
                MessageBox.Show(x.Message, x.Source, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        private void OtherFPSTextBox_TextChanged(object sender, EventArgs e)
        {
            try
            {
                ComputeBPF();
            }
            catch (Exception x)
            {
                MessageBox.Show(x.Message, x.Source, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        private void WidthTextBox_TextChanged(object sender, EventArgs e)
        {
            try
            {
                ComputeBPF();
            }
            catch (Exception x)
            {
                MessageBox.Show(x.Message, x.Source, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        private void HeightTextBox_TextChanged(object sender, EventArgs e)
        {
            try
            {
                ComputeBPF();
            }
            catch (Exception x)
            {
                MessageBox.Show(x.Message, x.Source, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        private void SixteenNineRadioButton_CheckedChanged(object sender, EventArgs e)
        {
            try
            {
                WidthTextBox.Text = "720";
                i = 0;
                if (Mod16CheckBox.Checked)
                {
                    HeightTextBox.Text = tab1_mod16[i].ToString();
                }
                else
                {
                    HeightTextBox.Text = tab2_mod1[i].ToString();
                }
            }
            catch(Exception x)
            {
                MessageBox.Show(x.Message, x.Source, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        private void AboutBoxButton_Click(object sender, EventArgs e) //évènement Click du bouton qui affiche la boite de dialogue à propos.
        {
            try
            {
                AboutBox AbtBox = new AboutBox();
                AbtBox.Show(this);
            }
            catch (Exception x)
            {
                MessageBox.Show(x.Message, x.Source, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void FourThreeRadioButton_CheckedChanged(object sender, EventArgs e)
        {
            try
            {
                i = 0;
                if (Mod16CheckBox.Checked)
                {
                    WidthTextBox.Text = tab3_mod16[i].ToString();
                }
                else
                {
                    WidthTextBox.Text = tab4_mod1[i].ToString();
                }

            }
            catch (Exception x)
            {
                MessageBox.Show(x.Message, x.Source, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void Mod16CheckBox_CheckedChanged(object sender, EventArgs e)
        {
            try
            {
                WidthTextBox.Text = "720";
                i = 0;
                if (SixteenNineRadioButton.Checked)
                {
                    if (Mod16CheckBox.Checked)
                    {
                        HeightTextBox.Text = tab1_mod16[i].ToString();
                    }
                    else
                    {
                        HeightTextBox.Text = tab2_mod1[i].ToString();
                    }
                }
                else
                {
                    if (Mod16CheckBox.Checked)
                    {
                        HeightTextBox.Text = tab3_mod16[i].ToString();
                    }
                    else
                    {
                        HeightTextBox.Text = tab4_mod1[i].ToString();
                    }
                }
                
            }
            catch (Exception x)
            {
                MessageBox.Show(x.Message, x.Source, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void WidthxHeightNumericUpDown_ValueChanged(object sender, EventArgs e)
        {
            MessageBox.Show("eh enfoiré t'as oublié cette partie!"); //place holder (pour me souvenir de coder cette partie)
        }

        private void OtherFPSRadioButton_CheckedChanged(object sender, EventArgs e)
        {
            try
            {
                if(OtherFPSRadioButton.Checked)
                {
                    OtherFPSTextBox.Enabled = true; //La textBox (grisée par défaut) est dégrisée lorsque le RadioButton OtherFPSRadioButton est activé.
                }
        }
            catch (Exception x)
            {
                MessageBox.Show(x.Message, x.Source, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }
}

Tu vois ? Hachement moins de lignes (enfin peut-être pas avec tous les try-catch et les {} mais ça compte pas tongue.gif ). smile.gif
flowers.gif

Ce message a été modifié par The Uploader - 26 November 2009 à 08:21.


--------------------
Go to the top of the page
 
+Quote Post

3 Pages V   1 2 3 >
Fast ReplyReply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Version bas débit Nous sommes le : 11 February 2012 - 08:10