Partage
  • Partager sur Facebook
  • Partager sur Twitter

[winAPI] Notepad amélioré ... votre avis ?

avec code source

    20 avril 2006 à 12:02:01

    Salut :)

    Alors voila j'ai fini un ptit programme ... un genre de notepad avec des fonctions en plus. :D
    Je ne sais pas si vous allez le comprendre (LE CODE SOURCE BIEN SUR :lol: ), étant donné que je ne l'ai pas (mais alors là pas du tout :p ) organisé (du moment que ca marche ^^ et que MOI je le comrpends :-° ) mais si vous avez des conseils le conçernant, ou encore des suggestions (avec indices si vous en avez :euh: ) je suis preneur :lol:
    [EDIT] après moults problèmes d'hébergement, 2versions sont disponibles chez esnips dans ce dossier : www.esnips.com/web/kidpaddle2sBusinessFiles :D

    N.B. : - Il y a trois fichiers source
    - En l'installant, et en le lançant à partir du raccourci dans la barre démarrez, le lecteur ne lit pas les musiques que j'ai sélectionnées et données avec... (c'est juste par essai :p ) Croyez vous que c'est parceque je n'ai pas inséré dans le script "workdir" que m@téo a abordé ?
    [REEDIT] C'était effectivement le problème du "workdir" ... cela a été résolu ...

    Bref voici des aperçus :

    splashscreen1:
    Image utilisateur
    ensuite:
    Image utilisateur
    I.M.P.:
    Image utilisateur
    et en quittant :
    Image utilisateur

    et les codes sources ;)

    header.h :

    #include <windows.h>
    #include <mmsystem.h>
    #include <commctrl.h>
    #include <fmod/fmod.h>

    #define IDM_QUIT 1
    #define IDM_OPEN 2
    #define IDM_FONT 3
    #define IDM_SAVE 4
    #define IDM_TEXTCOLOR 5
    #define IDM_NEW 6
    #define IDM_ABOUT 7
    #define IDM_PRINT 8
    #define IDM_ZIC 010
    #define ID_PLAY 10
    #define ID_STOP 11
    #define IDM_DRAW 12
    #define ID_RB1 101
    #define ID_RB2 102
    #define ID_OK 13
    #define IDC_TOOL_NEWCATEG 1000
    #define IDR_TOOLBAR1 14
    #define ID_Dessin 1
    #define ID_Texte 2
    #define ID_SELECT1 15
    #define ID_SELECT2 16
    #define ID_SELECT3 17
    #define ID_SELECT4 18
    #define ID_SELECT5 19
    #define ID_SELECT6 20
    #define ID_SELECT7 21
    #define ID_SELECT8 22
    #define ID_SELECT9 23
    #define ID_SELECT10 24
    #define ID_SELECT11 25
    #define ID_SELECT12 26
    #define ID_SELECT13 27
    #define ID_SELECT14 28
    #define IDC_EDIT 10110
    #define ID_SELECTOTHER 29

    UINT Nature;
    UINT Dessin;
    UINT Texte;
    int i;
    HWND lsthWnd;
    HINSTANCE hinst;
    HWND hwnd;
    HWND edit1;
    BOOL EditNotChg = TRUE;
    FSOUND_STREAM* g;
    char name[256];
    int r;
    HWND hEdit;
    BOOL APIENTRY Dialog2Proc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam);
    LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM); //prototype !
    BOOL APIENTRY Dialog1Proc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam);
    BOOL APIENTRY Dialog3Proc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam);


    resource.rc :

    #include <windows.h>
    #include "header1.h"

    1 ICON Notepad.ico
    img1 BITMAP hello.bmp
    img2 BITMAP about.bmp
    img3 BITMAP credits.bmp
    img4 BITMAP music.bmp

    MyMenu MENU
    BEGIN
          POPUP "File         "
                BEGIN
                  MENUITEM "&New", IDM_NEW
                  MENUITEM "&Open...", IDM_OPEN
                  MENUITEM "&Save...", IDM_SAVE
                  MENUITEM SEPARATOR
                  MENUITEM "&Print", IDM_PRINT
                  MENUITEM SEPARATOR
                  MENUITEM "&Quit", IDM_QUIT
                END
          POPUP "View         "
                BEGIN
                  MENUITEM "&Police...", IDM_FONT
                  MENUITEM "&Colors...", IDM_TEXTCOLOR
                END
          POPUP "Extras        "
                BEGIN
                  MENUITEM "&Draw...", IDM_DRAW
                  MENUITEM "&Music...", IDM_ZIC
                END
          POPUP "Help         "
                BEGIN
                  MENUITEM "&About", IDM_ABOUT
                END
    END

    Dialog1 DIALOG
         0, 0, 315, 230
               STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
                                                                 CAPTION "About"
    BEGIN
    CONTROL "img2", -1, "STATIC", SS_BITMAP ,0, 0, 640, 480
    END

    Dialog2 DIALOG
            0, 0, 315,230
            STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
                                                                 CAPTION "Welcome in Magic Pad"
    BEGIN
    CONTROL "img1", -1, "STATIC", SS_BITMAP ,0, 0, 640, 480
    END

    Dialog3 DIALOG
            0, 0, 320, 240
            STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
            CAPTION "Bye !"
    BEGIN
    CONTROL "img3", -1, "STATIC", SS_BITMAP ,0, 0, 640, 480
    END

    Dialog5 DIALOG
    0, 0, 315, 229
            STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
            CAPTION "Integrated Music Player"
    BEGIN
    CONTROL "img4", -1, "STATIC", SS_BITMAP ,0, 0, 400, 300
    CONTROL "", IDC_EDIT, "edit", WS_CHILD | WS_VISIBLE | ES_MULTILINE, 170, 30, 140, 26
    DEFPUSHBUTTON "Play", ID_PLAY, 240,200, 40, 12
    PUSHBUTTON "Select", ID_SELECT1, 5, 3, 40, 10
    PUSHBUTTON "Select", ID_SELECT2, 5, 3+(10*1)+6, 40, 10
    PUSHBUTTON "Select", ID_SELECT3, 5, 3+(10*2)+(6*2), 40, 10
    PUSHBUTTON "Select", ID_SELECT4, 5, 3+(10*3)+(6*3), 40, 10
    PUSHBUTTON "Select", ID_SELECT5, 5, 3+(10*4)+(6*4), 40, 10
    PUSHBUTTON "Select", ID_SELECT6, 5, 3+(10*5)+(6*5), 40, 10
    PUSHBUTTON "Select", ID_SELECT7, 5, 3+(10*6)+(6*6), 40, 10
    PUSHBUTTON "Select", ID_SELECT8, 5, 3+(10*7)+(6*7), 40, 10
    PUSHBUTTON "Select", ID_SELECT9, 5, 3+(10*8)+(6*8), 40, 10
    PUSHBUTTON "Select", ID_SELECT10, 5,3+(10*9)+(6*9) , 40, 10
    PUSHBUTTON "Select", ID_SELECT11, 5, 3+(10*10)+(6*10), 40, 10
    PUSHBUTTON "Select", ID_SELECT12, 5, 3+(10*11)+(6*11), 40, 10
    PUSHBUTTON "Select", ID_SELECT13, 5,3+(10*12)+(6*12) , 40, 10
    PUSHBUTTON "Select", ID_SELECT14, 5, 3+(10*13)+(6*13), 40, 10
    PUSHBUTTON "Select", ID_SELECTOTHER, 260, 63, 40, 10
    PUSHBUTTON "Stop", ID_STOP, 240, 155, 40, 12
    END


    et enfin main.c : (attention les yeux ;) )

    #include "header1.h"

    int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance,
                                                    LPSTR lpCmdLine, int nCmdShow)
    // winMAIN
    {
            /* Initialisations :*/

        MSG msg; // Messages systeme
        WNDCLASS wc; // Classe de fenêtre "mère"
        WNDCLASS pwc;
        FSOUND_STREAM* g;
        FSOUND_STREAM* g2;

        int r;

        hinst = hinstance;
        // Définition de la classe wc :
        wc.style = 0 ; // Style de fenêtre (défault)
        wc.lpfnWndProc = MainWndProc; // procédure de fenêtre
        wc.cbClsExtra = 0;
        wc.cbWndExtra = 0;
        wc.hInstance = NULL; // handle d'instance (sorte de moule) fourni par winMAIN
        wc.hIcon = LoadIcon(hinstance, MAKEINTRESOURCE(1)); // icône n°2 dans la resource
        wc.hCursor = LoadCursor(NULL, IDC_ARROW); // style curseur (ici fleche normale)
        wc.hbrBackground = NULL; // couleur fond de fenêtre
        wc.lpszMenuName"MyMenu"; // Nom du menu si il y a ... ou deuxieme méthode (utilisée)
        wc.lpszClassName = "MaWinClass"; // pointeur sur nom de la classe

        if(!RegisterClass(&wc)) return FALSE; // Si la sauvegarde de wc plante, retourner FALSE

        hwnd = CreateWindow("MaWinClass", "MagicPad", WS_OVERLAPPEDWINDOW,
                                       CW_USEDEFAULT, CW_USEDEFAULT, 640, 480,
                                                       NULL, NULL, hinstance, NULL);
        /* ci dessus on crée la fenêtre principale de classe "mawinclasse" (wc), de nom greg's program,
        de style overlappedwindow ( défault), avec des positions défault, ayant comme taille 400*300 et ayant Menu,
        et enfin instance.*/

        if (!hwnd)  return FALSE;
        // si ca plante retourner FALSE
        ShowWindow(hwnd, nCmdShow); // On l'affiche

        FSOUND_Init(44100, 32, 0);
            FSOUND_SetOutput(FSOUND_OUTPUT_DSOUND);
            FSOUND_SetDriver(0);

        while (GetMessage(&msg, NULL, 0, 0))
        {
            TranslateMessage(&msg); // Systeme de transmission des ùessages systeme
            DispatchMessage(&msg);
        }
        return msg.wParam;
    }
    /******************************************************************************/

    BOOL APIENTRY Dialog1Proc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
    {

        switch (uMsg)
        {
          case WM_INITDIALOG:

             return TRUE;

          case WM_COMMAND:
             if (LOWORD(wParam) == IDCANCEL || LOWORD(wParam) == IDOK)
                    {
                       EndDialog(hDlg,0);
                       return TRUE;
                    }

          default:
             return FALSE;
        }
    }
    BOOL APIENTRY Dialog2Proc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
    {
        SetTimer(hDlg, NULL, 2500, NULL);
        switch (uMsg)
        {
          case WM_COMMAND:
             if (LOWORD(wParam) == IDCANCEL || LOWORD(wParam) == IDOK)
                    {
                       EndDialog(hDlg,0);
                       return TRUE;
                    }
          case WM_TIMER:
          EndDialog(hDlg, 0);
          KillTimer(hDlg, NULL);
          default:
            return FALSE;
    }
    }

    BOOL APIENTRY Dialog3Proc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
    {
        SetTimer(hDlg, NULL, 3000, NULL);

        switch (uMsg)
        {
          case WM_COMMAND:
             if (LOWORD(wParam) == IDCANCEL || LOWORD(wParam) == IDOK)
                    {
                       EndDialog(hDlg,0);
                       return TRUE;
                    }
          case WM_TIMER:
          EndDialog(hDlg,0);
          KillTimer(hDlg, NULL);
          return TRUE;

          default:
             return FALSE;
        }
    }

    BOOL APIENTRY Dialog4Proc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
    {
        switch (uMsg)
        {
          case WM_COMMAND:
             if (LOWORD(wParam) == IDCANCEL || LOWORD(wParam) == IDOK)
                    {
                       EndDialog(hDlg,0);
                       return TRUE;
                    }
          default:
             return FALSE;
        }
    }

    BOOL APIENTRY Dialog5Proc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
    {


        switch (uMsg)
        {

          case WM_COMMAND:
             if (LOWORD(wParam) == IDCANCEL || LOWORD(wParam) == IDOK)
                    {
                       EndDialog(hDlg,0);
                       return TRUE;
                    }
            if (LOWORD(wParam) == ID_SELECT1)
            sprintf(name, "./Music/DaftPunk-Harder,better,faster,stronger.mp3");

            if(LOWORD(wParam) == ID_SELECT2)
            sprintf(name, "./Music/DepecheMode-EnjoyTheSilence.mp3");
            if(LOWORD(wParam) == ID_SELECT3)
            sprintf(name, "./Music/DepecheMode-Precious.mp3");
            if(LOWORD(wParam) == ID_SELECT4)
            sprintf(name, "./Music/FrankieGoesToHollywood-Relax.mp3");
            if(LOWORD(wParam) == ID_SELECT5)
            sprintf(name, "./Music/FreddyMercury-Let'sTurnItOn.mp3");
            if(LOWORD(wParam) == ID_SELECT6)
            sprintf(name, "./Music/Hitch-Happy.mp3");
            if(LOWORD(wParam) == ID_SELECT7)
            sprintf(name, "./Music/Hitch-OohWee.mp3");
            if(LOWORD(wParam) == ID_SELECT8)
            sprintf(name, "./Music/Hitch-ThisIsHowIFeel.mp3");
            if(LOWORD(wParam) == ID_SELECT9)
            sprintf(name, "./Music/M-CloseToMe.mp3");
            if(LOWORD(wParam) == ID_SELECT10)
            sprintf(name, "./Music/M-L'AmourMaThematique.mp3");
            if(LOWORD(wParam) == ID_SELECT11)
            sprintf(name, "./Music/MichaelJackson-2bad.mp3");
            if(LOWORD(wParam) == ID_SELECT12)
            sprintf(name, "./Music/MichaelJackson-Bad.mp3");
            if(LOWORD(wParam) == ID_SELECT13)
            sprintf(name, "./Music/PinkMartini-AmadoMio.mp3");
            if(LOWORD(wParam) == ID_SELECT14)
            sprintf(name, "./Music/TheCrystalMethod-NameOfTheGame.mp3");
            if(LOWORD(wParam) == ID_SELECTOTHER)
            GetDlgItemText(hDlg, IDC_EDIT, name, 256);

            if(LOWORD(wParam) == ID_PLAY && name != NULL)
            {
                g = FSOUND_Stream_Open(name,FSOUND_LOOP_NORMAL, 0,0);
                FSOUND_Stream_Play(0,g);
            }
            if(LOWORD(wParam) == ID_STOP)
            {FSOUND_Stream_Close(g);}

            break;
          default:
             return FALSE;
        }
    }

    LRESULT CALLBACK MainWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
        static HFONT hFont;
        static LOGFONT lf;
        static HWND htb;
        static HBRUSH EditBrush;
        static COLORREF BkEditcolor;
        static COLORREF TextColor = 0;
        static HWND edit1;
        static BOOL EditNotChg = TRUE;
        switch (uMsg)
        {
            case WM_CREATE:
                {
                 DialogBox(hinst, "Dialog2", hwnd, (DLGPROC)Dialog2Proc);
                 HFONT hFont;
                 Nature = ID_Texte;
                 edit1 = CreateWindow("edit", "Welcome in MagicPad.",
                   WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_WANTRETURN | WS_VSCROLL,
                                                0, 0, 0, 0, hwnd, NULL, hinst, NULL);
                   // création de la zone de texte fille de la fenêtre mere
                 BkEditcolor = GetSysColor(COLOR_WINDOW);
                 EditBrush = CreateSolidBrush(BkEditcolor);
                 hFont = (HFONT)GetStockObject(ANSI_FIXED_FONT);
                 SendMessage(edit1,WM_SETFONT,(UINT)hFont,TRUE);
                 SendMessage(edit1, EM_SETMARGINS, EC_LEFTMARGIN | EC_RIGHTMARGIN,
                                                                    MAKELONG(5, 5));
                return 0;
                }
            case WM_CLOSE:
                if(EditNotChg ||
                   MessageBox(hwnd,"The text has been modified. Do you really want to quit ?"
                                ,"Quit ?",MB_YESNO | MB_ICONQUESTION ) == IDYES)
                                                                DestroyWindow(hwnd);
                // assez précis pour se apsser de commentaires ... ^^
                return 0;

            case WM_COMMAND:
                if(LOWORD(wParam) == IDM_QUIT) PostMessage(hwnd, WM_CLOSE,0,0);

                if(HIWORD(wParam) == EN_CHANGE) EditNotChg = FALSE; //idem

                if(LOWORD(wParam) == IDM_OPEN)
                { OPENFILENAME ofn; // on crée cette variable
                  char szFile[MAX_PATH] = {0}; // initialise un tableau de taille MAX_PATH (s'appelant szFile

                  ZeroMemory(&ofn, sizeof(OPENFILENAME)); // on met tt à zéro (structure)
                  ofn.lStructSize = sizeof(OPENFILENAME); //recoit taille de structure
                  ofn.hwndOwner = hwnd; // handle de fenêtre mère
                  ofn.lpstrFile = szFile; // récupération du chemin et nom de fichier dans tableau du début
                  ofn.nMaxFile = MAX_PATH; // taille du tableau de caractere recevant nom de fichier
                  ofn.lpstrFilter = "Text file\0*.txt\0C source file\0*.c\0C++ source file\0*.cpp\0Header\0*.h\0Resources\0*.rc\0"; //filtres ( avec 0 comme séparateur entre
                  // les extentions et descriptions
                  ofn.nFilterIndex = 1; // index des filtres ( 1 pour défault )
                  ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
                  // --> Flags influent sur aspect et fonctions
                            if(GetOpenFileName(&ofn) == TRUE) // si (TRUE) on a appuyé sur "ouvrir" renvoie le tt
                              { HANDLE hf; //handle du fichier
                                DWORD FileSize,nbcharRead ;
                                CHAR *buffer; // tableau-buffer
                                hf = CreateFile(szFile, GENERIC_READ, 0,NULL, // ouvre le fichier
                                OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); // et retourne le handle du fichier
                                FileSize = GetFileSize(hf, NULL); // bon...
                                buffer = (PCHAR)LocalAlloc(LMEM_FIXED, FileSize+1); // rajoute un octet à buffer pour caractere 0
                                ReadFile(hf, buffer, FileSize, &nbcharRead, NULL) ; // balance le contenu du fichier dans buffer
                                buffer[FileSize] = 0; // on rajoute 0 à la fin pour en faire une string
                                SendMessage(edit1, WM_SETTEXT, 0, (LPARAM)buffer); // et affiche le texte dans notre edit1 ^^
                                LocalFree(buffer); // on congédie le buffer ;D
                                CloseHandle(hf); // et on ferme le handle ... fini !
                              }
                  }

                  if(LOWORD(wParam) == IDM_FONT)
                  {
                    CHOOSEFONT cf;
                    ZeroMemory(&cf, sizeof(CHOOSEFONT));
                    cf.lStructSize = sizeof (CHOOSEFONT);
                    cf.hwndOwner = hwnd;
                    cf.lpLogFont = &lf;
                    cf.Flags = CF_SCREENFONTS | CF_INITTOLOGFONTSTRUCT;

                    if (ChooseFont(&cf))
                     {
                        DeleteObject(hFont);
                        hFont = CreateFontIndirect(&lf);
                        SendMessage(edit1,WM_SETFONT,(UINT)hFont,TRUE);
                     }
                  }
                  if(LOWORD(wParam) == IDM_SAVE)
                  {
                    OPENFILENAME ofn;
                    CHAR szFile[260]={0};

                    ZeroMemory(&ofn, sizeof(OPENFILENAME));
                    ofn.lStructSize = sizeof(OPENFILENAME);
                    ofn.hwndOwner = hwnd;
                    ofn.lpstrFile = szFile;
                    ofn.nMaxFile = sizeof(szFile);
                    ofn.lpstrFilter =
                               "Text file\0*.txt\0C source file\0*.c\0C++ source file\0*.cpp\0Header\0*.h\0Resources\0*.rc\0";
                    ofn.nFilterIndex = 1;
                    ofn.Flags =
                           OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;
                    if (GetSaveFileName(&ofn)==TRUE)
                     {
                        HANDLE hf;
                        DWORD FileSize,nbcharRead ;
                        char *buffer;
                        FileSize = GetWindowTextLength(edit1);
                        buffer = (char*)LocalAlloc(LMEM_FIXED, FileSize+1);
                        GetWindowText(edit1, buffer, FileSize+1);
                        hf = CreateFile(szFile, GENERIC_WRITE, 0,NULL,
                                        CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
                        WriteFile(hf, buffer, FileSize, &nbcharRead, NULL) ;
                        CloseHandle(hf);
                        LocalFree(buffer);
                     }
                  } /*if IDM_SAVE*/

                  if(LOWORD(wParam) == IDM_TEXTCOLOR)
                  {
                        CHOOSECOLOR cc;
                        static COLORREF acrCustClr[16];

                        ZeroMemory(&cc, sizeof(CHOOSECOLOR));
                        cc.lStructSize = sizeof(CHOOSECOLOR);
                        cc.hwndOwner = hwnd;
                        cc.lpCustColors = NULL;
                        cc.lpCustColors = (LPDWORD) acrCustClr;
                        cc.rgbResult = TextColor;
                        cc.Flags = CC_FULLOPEN | CC_RGBINIT;

                        if (ChooseColor(&cc)==TRUE)
                            {
                              TextColor = cc.rgbResult;
                              PostMessage(edit1,WM_SETREDRAW,TRUE,0);
                            }
                  } /*if IDM_TEXTCOLOR*/

                  if(LOWORD(wParam) == IDM_NEW)
                    {if(EditNotChg ||
                      MessageBox(hwnd,"The text has been modified. Do you really want to restart ?"
                                ,"New ?",MB_YESNO | MB_ICONQUESTION ) == IDYES)
                          {SendMessage(edit1,WM_SETTEXT,0,(LPARAM)"");
                    EditNotChg = TRUE;}
                    }
                if(LOWORD(wParam) == IDM_ABOUT)
                         DialogBox(hinst, "Dialog1", hwnd, (DLGPROC)Dialog1Proc);

                if(LOWORD(wParam) == IDM_DRAW)
                {
                    if(MessageBox(hwnd,"You worked too much ? Need for relax ?\n Let's draw on desktop !","Relax ?",MB_YESNO | MB_ICONQUESTION) == IDYES)
                    {MessageBox(hwnd, "Use the icon in taskbar (close to the clock) to change color and size of brush and finally to close. \n After, you'll need to refresh the background (right button on desktop / refresh) ...Enjoy ! ", "Readme", MB_OK | MB_ICONINFORMATION);
                    system("start desktop.exe");/* je sais c mal  :p */}
                }

                if(LOWORD(wParam) == IDM_ZIC)
                {
                    DialogBox(hinst, "Dialog5", hwnd, (DLGPROC)Dialog5Proc);
                }

            return 0;
            case WM_CTLCOLOREDIT:
                if((HWND)lParam == edit1)
                  {
                   SetTextColor((HDC)wParam, TextColor);
                   SetBkColor((HDC)wParam, BkEditcolor);
                   return EditBrush;
                  }
                break;

            case WM_SIZE:
                MoveWindow(edit1, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE);
                 //adapte la taille de zone de texte en fonction de fenêtre mere
                 return 0;

            case WM_DESTROY: // si on ferme la fenêtre mere, ...
                FSOUND_Stream_Close(g);
                DialogBox(hinst, "Dialog3", hwnd, (DLGPROC)Dialog3Proc); // on affiche ca !
                PostQuitMessage(0); // et on quitte
                return 0;

            default:
                return DefWindowProc(hwnd, uMsg, wParam, lParam); // si aucun message n'est envoyé on fait rien ...
        }
    }


    Vous avez vu par vous meme que c'est bien le bordel mais c'est la prochaine étape ;)

    voili voilou !

    a vous maintenant ;)
    • Partager sur Facebook
    • Partager sur Twitter
      20 avril 2006 à 12:38:38

      C'est fait avec l'API WIN32 ; ça à l'air bien ;)

      Faudrait qu'on puisse le télécharger ^^
      • Partager sur Facebook
      • Partager sur Twitter
        20 avril 2006 à 12:42:40

        Effectivement, je l'ai montré à Pierre89 histoire qu'il voie à quoi ca ressemble niveau code :)

        Pour le téléchargement, je n'ai jamais hébergé mes fichiers donc si vous pouviez me dire comment faire ... vous pourriez alors l'avoir ;)
        Je vais d'abord m'occuper du workdir... (faites quand meme attention, l'install fait 45mo à cause des musiques de test :euh: )

        Ah oui au fait : je n'ai toujours pas réussi à coder une fonction "print" donc i une âme charitable passe par ici ^^
        • Partager sur Facebook
        • Partager sur Twitter
          20 avril 2006 à 12:52:07

          Bah pour léhebergement, c'est simple, tu prend un hébergeur gratuit déjà genre free (inconvénient de free : l'inscription se fait par formulaire internet mais le mot de passe est envoyé par courrier postale, un comble pour un fournisseur d'accès) ! Ensuite une fois que tu as ton hébergeur tu prends un excellent logiciel de client ftp (FileZilla à trouver sur télécharger.com) et puis tu upload tes fichiers sur ton serveur (chez free 1go par compte) !
          Voilà
          • Partager sur Facebook
          • Partager sur Twitter
            20 avril 2006 à 17:25:14

            D'accord je vais m'en occuper quand j'en aurais le temps ...
            Mais sauriez vous comment coder une fonction "imprimer" pour mon programme ?
            (avec si possible une common dialog box)
            • Partager sur Facebook
            • Partager sur Twitter
              20 avril 2006 à 17:36:35

              Moi, je connaît pas bien l'API WIN32 ;)
              • Partager sur Facebook
              • Partager sur Twitter
                21 avril 2006 à 14:40:56

                C'est bien dommage :(

                Enfin bon... je poste pour vous avertir que le fichier d'install est enfin disponible :D chez free :-°

                le voici : http://dl-1.free.fr/52616e646f6d4956209ccf29022feece44f66c7e8ae27db10fa4a6932d49f69e/
                Magic_Pad_setup_v1.2.exe

                (pas de retour à la ligne ... cela ne tenait pas :p )
                Profitez-en, il sera présent seulement 24h étant donné que je n'ai pas fait d'espace de stockage (si vous connaissez la marche à suivre, après vous :lol: )

                [EDIT] Un meilleur hébergeur a été choisi plus loin ... (esnips)
                • Partager sur Facebook
                • Partager sur Twitter
                  21 avril 2006 à 15:57:17

                  Ton .exe n'est pas une application WIN32 valide

                  [EDIT] C'est un fichier vide renomé en .exe
                  o_O
                  • Partager sur Facebook
                  • Partager sur Twitter
                    21 avril 2006 à 16:22:33

                    Impossible... c'est un install comme tant d'autres !

                    Mais en fait tu dois veiller à bien entrer toute l'adresse ... je l'ai coupée en 2 pour la rentrer ! (copiez/collez le début du lien en bleu et completez à la main par "Magic_Pad_setup_v1.2.exe"... oui j'ai du mal avec le zCode "lien" :p )

                    (par contre j'ai l'impression que le transfert est extrèmement lent... Je réitère donc : si vous pouviez me montrer la marche à suivre (un site intéressant) pour l'héberger, après vous :D)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      21 avril 2006 à 16:35:56

                      A la limite, il fait combien en taille, parce que moi je peux l'héberger j'ai de la place chez free, donc tu peux me l'envoyez par msn si c'est pas trop gros, sinon tu dois avoir un espace genre 100 Mo chez ton fournisseur d'accès, la plupart du temps en tout cas ! Renseignes toi pour ça.

                      P.S.: en effet ton fichier hébergé chez free fait 0 ko quanq on le télécharge o_O
                      • Partager sur Facebook
                      • Partager sur Twitter
                        21 avril 2006 à 17:36:55

                        j'arrive pas à le télécharger... :(

                        [HS]
                        C'est quoi ton thème? Tu sais où le trouver?
                        [/HS]
                        • Partager sur Facebook
                        • Partager sur Twitter
                          21 avril 2006 à 18:32:43

                          Moi je connais son thème, c'est LongHorn XP, je l'ai eu mais j'en ai eu ral-bol :-°
                          lien
                          Image utilisateur
                          • Partager sur Facebook
                          • Partager sur Twitter
                            21 avril 2006 à 19:21:34

                            Calm down everybody ;)

                            J'ai finalement été héberger 2 versions de mon programme : la version "light" (1.97mo): Seulement le principal, sans les musiques intégrées (cela va sans dire que vous ne pourrez les lire avec l'I.M.P. ^^ ) et la version complete (tout de meme 54mo :-° )

                            Vous pourrez trouver la version "light" à cette adresse chez mégashares :
                            http://d01.megashares.com/?d01=c71f7268819293171c4ef71833599808
                            mais j'ai trouvé un site beaucoup mieux... donc vous pourrez avoir les 2 versions à travers mon dossier business sur www.esnips.com accessible à www.esnips.com/web/kidpaddle2sBusinessFiles
                            (le deuxieme est en cours d'upload)

                            Voili voilou, j'attends vos avis :D (Pour les winAPIens se trouvent les codes sources dans le dossier d'install)
                            • Partager sur Facebook
                            • Partager sur Twitter
                              21 avril 2006 à 20:35:14

                              [HS]
                              Merci pour le thème ;)
                              [/HS]

                              J'ai testé ton programme et il est EXELLENT!!!

                              PS: Pourquoi les menus sont en anglais??? :(
                              • Partager sur Facebook
                              • Partager sur Twitter
                                22 avril 2006 à 14:43:37

                                Merci du compliment php-mania :) ca fait chaud au coeur :p
                                Mais mon pauvre il vaudrait mieux que tu t'abitue à l'anglais... tu risque d'en avoir extrèmement besoin, en informatique comme dans la vie ;)
                                (l'anglais fait professionnel aussi :-° )

                                Quelqu'un a des suggestions ou des solutions à mes petits problèmes ?
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  22 avril 2006 à 16:08:07

                                  L'anglais fais proffessionnel o_O pas du tout! Vive le français!
                                  Bon sinon heu... BRRRRRRAAAAAAAAAAVVVVVVVVOOOOOOOO !!!!! :D:)

                                  Pour quoi mettre le fichier d'installation dans un .rar o_O

                                  Ensuite tu m'a l'air d'avoir de très bon goûts musicaux (King Of Pop en force!) :) Mais si on ne peut pas écouter heu...

                                  Mais ou a tu apris à coder avec WinAPI, je suis intérréssé... T'es trop fort en plus continu ;)
                                  ++

                                  [EDIT]Woo... Oki escuse ^^! Pour les histoires de tailles, fais toi un compte chez voilà et tu aurra droit à 5 sites de 100Mo chacun ;)
                                  Encore bravo!
                                  Et merci, je regarde les liens :)[/EDIT]
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  ~( ・   ω   ・)~
                                    22 avril 2006 à 18:43:00

                                    Merci encore des compliments :D
                                    Je te réponds donc ;) : le fichier d'install est dans un .rar parce que esnips n'acceptait pas les applications apparemment ... Puis, tu ne peux pas écouter les musiques parce que c'est la version "light" (sans le dossier musical) :p Il suffit que tu regarde le code source pour comprendre que se cache-t-il derriere tous ces "select" :lol:

                                    Il aurait fallu que tu aies la version complete mais je ne peux pas l'héberger ... trop grosse taille :( En effet tout marche mais si les musiques ne sont pas présentes, il ne risque pas de les jouer ! :lol: (La version "light" a été compilées seulement pour vous montrer l'aspect et les fonctionnalités globales avec le code source ;) )

                                    Je vais surement améliorer le lecteur musical avec playmist et une boite de dialogue commune d'ouverture de fichiers ... mais plus tard hein ? ;)

                                    Bref bref tout ca je l'ai appris un peu partout sur le net ( google powaaaaa :D ) (tu m'en diras tant :lol: ) mais si tu veux avoir de bonnes bases va sur les deux tutos de developpez.com ici :
                                    http://chgi.developpez.com/windows/
                                    ou bien ici :
                                    http://bob.developpez.com/tutapiwin/

                                    Voili voilou ! tchuss et bonne progra ^^

                                    P.S. je pourrais par contre mettre ces musiques avec les instructions, si le code source ne suffit pas, sur mon dossier business (la classe :p )
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      23 avril 2006 à 13:35:41

                                      Personne ne peut me répondre pour la fonction permettant d'imprimer ? :( (plus particulièrement avec une Common Dialog Box si possible :-° ) Et puis, si vous avez une idée pour colorer seulement ce qui est en surbrillance dans l'editbox principale, ne vous gênez pas ^^
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        23 mai 2006 à 18:39:09

                                        Ce programme est très sympa (bon c'est du extra light) mais je trouve ca super cool quand même. Je me demande si la fonction musique est très intéressante dans un éditeur de texte (mais bon, les gout et les couleurs !).
                                        Je te propose une chtite amélioration, comme ca, en passant : lorsque l'on clique sur les images de départ ou de fin, on passe à la suite (soit on entre dans le prog, soit on en sort :p ). Pasque la petite croix, c'est un peu trop long (un programmeur est un feignant, c'est une règle :p )
                                        Bonne continuation pour le dévellopement de ce prog !
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          23 mai 2006 à 19:13:35

                                          Effectivement c'est du extralight, étant donné que c'était la toute premiere version (d'aileurs je ne vois pas comment tu as pu nous déterrer ça :p ) et puis conçernant la fonction mp3, c'était juste comme ça... Là je lui ai rajouté le style XP et je m'affere à rendre la fonction mp3 réelle : Un vrai lecteur mp3 quoi ! Il me reste peu de choses à faire pour le finaliser d'ailleurs ...

                                          Par contre, je ne suis pas sûr de comprendre ton truc de cliquer sur les images ... tu veux dire enlever les images de "hello" et "Bye" par un clik sur celle ci ? Sache que tu n'en as aucunement besoin puisqu'elles sont munies de timers et se ferment alors après 3sec. (un genre de splashcreen)
                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          [winAPI] Notepad amélioré ... votre avis ?

                                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                          • Editeur
                                          • Markdown