Dckblog, pour se connecter facilement au skyblog :d

Description

Bonjour tous le monde,

Voila, mon 1er programme en win32 (soyez indulgent mdr). Bon c'est pas faramineu mais je m'en sert assez souvent quand même l'air de rien :p . Car ça me saoule de taper l'adresse d'un skyblog que une/un ami(e) veut absolument vous montrer. Et lorsque j'ai une erreur 404 j'explose car toute l'adresse est a retaper. :D bref si vous êtes parresseux comme moi ptdrrr ce prog peut vous éviter des petites tâches inutiles.

PS : si vous avez des commentaires ou conseil sur le code , ne vous faite pas prié , dites les moi. Surtout si ça permet une bonne optimisation.

Source / Exemple :


#include<string.h>
#include<windows.h>

#define QUIT 1
#define PROPOS 2

/* variable HINSTANCE public */
HINSTANCE GlobalHInstance;

HWND GlobalEdit;
HWND GlobalPage;
HWND D_hwButton;

/* Signature de la procédure sky */
void sky(HWND);

/* Signature de la fonction de traitement des messages */
LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain (HINSTANCE hInstance,
                    HINSTANCE hPrevInstance, 
                    LPSTR lpszArgument,
                    int nFunsterStil)

{
    HWND hwnd;               /* handle de la fenêtre window */
    MSG messages;            /* Variable qui reçoit les message */
    WNDCLASSEX wincl;        /* Structure de class pour créér la fenêtre */
    HMENU MainMenu,UnderFileMenu; /* Variables pour les menus. */
    HMENU UnderHelpMenu;

    GlobalHInstance = hInstance;

    wincl.hInstance = hInstance;
    wincl.lpszClassName = "MaClassWin";
    wincl.lpfnWndProc = MainWndProc;      /* This function is called by windows */
    wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
    wincl.cbSize = sizeof(WNDCLASSEX);
    wincl.hIcon = LoadIcon (NULL, "ico.ico");
    wincl.hIconSm = LoadIcon (NULL, "ico.ico");
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;
    wincl.cbClsExtra = 0;
    wincl.cbWndExtra = 0;
    wincl.hbrBackground = (HBRUSH)(1+COLOR_BTNFACE);

    /*Enregistrement de la class en mémoire*/
    if (!RegisterClassEx(&wincl))
        return 0; /* si l'enregistrement de la classe à échoué on renvoie 0 pour fermer le programme */
    
    /* Création du menu Fichier */
    UnderFileMenu = CreateMenu();
    AppendMenu(UnderFileMenu,MF_STRING,QUIT,"Quitter");
    MainMenu = CreateMenu();
    AppendMenu(MainMenu,MF_POPUP,(UINT)UnderFileMenu,"Fichier");
    
    /* Création du menu ? */
    UnderHelpMenu = CreateMenu();
    AppendMenu(UnderHelpMenu,MF_STRING,PROPOS,"A propos de ...");
    AppendMenu(MainMenu,MF_POPUP,(UINT)UnderHelpMenu,"?");

    /* création de la fenêtre */
    hwnd = CreateWindowEx(
           0,                   /* Extended possibilites for variation */
           "MaClassWin",         /* Nom de la class */
           "DCKblog",            /* Title Text */
           WS_OVERLAPPED|WS_SYSMENU |WS_MINIMIZEBOX, /* Fenêtre par défaut */
           /*Pour rendre inutilisable un des trois boutons (_,[],X) Il faut un style OVERLAPPED (sans les bouton)
             un style SYSMENU pour permettre l'activation des boutons et puis ensuite choisi ceux que l'on désire
             ici MINIMIZE) */
           CW_USEDEFAULT,       /* Windows décide la position */
           CW_USEDEFAULT,       /* where the window ends up on the screen */
           319,                 /* Largeur */
           130,                 /* Hauteur */
           HWND_DESKTOP,        
           MainMenu,                /* menu */
           hInstance,           /* Instance handler du programme */
           NULL                 /* No Window Creation data */
           );

    
    /* Rend la fenêtre visible */
    ShowWindow (hwnd,nFunsterStil);
    /* Rafraichi la zone client */
    UpdateWindow(hwnd);

    /* Récupération des messages*/
    while (GetMessage(&messages, NULL, 0, 0))
    {     /* Dès que l'on appuye sur enter */
        if(messages.message == WM_KEYDOWN && messages.wParam==VK_RETURN){
                            sky(hwnd); 
        }
        if(messages.message==WM_KEYDOWN && messages.wParam==VK_TAB){
        HWND D_hwWhoNext;
        
        D_hwWhoNext = GetFocus();
        if(D_hwWhoNext==GlobalEdit)
            SetFocus(GlobalPage);
        if(D_hwWhoNext==GlobalPage)
            SetFocus(D_hwButton);
        if(D_hwWhoNext==D_hwButton)
            SetFocus(GlobalEdit);
        
        }
        /* Traduction des messages */
        TranslateMessage(&messages);
        /* Envoie des messages à la focntion MainWndProc */
        DispatchMessage(&messages);
    }
    /* Si return 0, le programme ferme */
    return messages.wParam;
}

/*  Traitement des messages  */
LRESULT CALLBACK MainWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HWND LabelPage;    
    switch (message)
    {
        case WM_CREATE: GlobalEdit = CreateWindow("edit","",WS_CHILD | WS_VISIBLE | WS_BORDER,30,20,150,17,hwnd,NULL,GlobalHInstance,NULL);
                        GlobalPage = CreateWindow("edit","1",WS_CHILD | WS_VISIBLE | WS_BORDER,80,50,30,17,hwnd,NULL,GlobalHInstance,NULL);
                        LabelPage = CreateWindow("static","Page : ",WS_CHILD | WS_VISIBLE,30,50,50,17,hwnd,NULL,GlobalHInstance,NULL);
                        D_hwButton = CreateWindow("button","&Connect",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | BS_DEFPUSHBUTTON,215,50,60,20,hwnd,(HMENU)1112,GlobalHInstance,NULL);
                        SetFocus(GlobalEdit); /* Donne le focus au controle edit */
                        
             return 0;
             break;
        case WM_DESTROY:
            PostQuitMessage (0);
            break;
        case WM_COMMAND: if(LOWORD(wParam)==QUIT)PostMessage(hwnd,WM_CLOSE,0,0); /* Traitement de Quitter du menu Fichier */
                         if(LOWORD(wParam)==PROPOS)MessageBox(hwnd,
                                                                   "Crée par : Deck_bsd\nVersion : 2.0\n\nFreeware\n\nMail :deck_bsd01@yahoo.fr\nSite: http://deck-bsd.eurower.net",
                                                                   "à propos de DCKblog",
                                                                   MB_OK | MB_ICONINFORMATION);
                         if(HIWORD(wParam)==BN_CLICKED && D_hwButton==GetFocus()){
                                                       if(LOWORD(wParam)==1112){
                                                            sky(hwnd); 
                         }
                         return 0;
                         break;
        case WM_PAINT : /* Message envoyé par windows lorsque la fenêtre à besoin de se re-dessiner */
             HDC D_hdText; /* On remet le code du message ".skyblog.com". Car si on ne traite pas WM_PAINT */
             PAINTSTRUCT D_paOnlyDelete; /*Lorque la fenêtre est mise en arrière plan et qu'on la sélectionne */
             D_hdText = BeginPaint(hwnd,&D_paOnlyDelete); /*Le text défini au début n'existe plus */
             SetBkMode(D_hdText,TRANSPARENT); 
             TextOut(D_hdText,190,20,".skyblog.com",strlen(".skyblog.com"));
             ReleaseDC(hwnd,D_hdText);
             return 0;
             break;
        /*case WM_KEYDOWN : if(wParam==VK_RETURN) MessageBox(hwnd,"OUI","WM_KEYDOWN",MB_OK | MB_ICONWARNING);*/
        break;

             
             /* La variable de type HDC na plus une valeur obtenue avec GetDc mais bien avec BeginPaint */
             /* Cela est pour éviter le scientiellment lors du redimensionnement,... de la fenêtre. */
             /* Cela permet de redessiner seulment ce qui à besoin de l'être. */
        default:
            return DefWindowProc(hwnd, message, wParam, lParam);
    }

     return 0;
    }
}

void sky(HWND hwnd)
{
     
     char D_szSkyblog[100]="http://";
     char D_szSkyName[50];
     char D_szNOPage[4]="";
                                                       
     GetWindowText(GlobalEdit,D_szSkyName,50);
     GetWindowText(GlobalPage,D_szNOPage,4);
     strcat(D_szSkyblog,D_szSkyName);
     strcat(D_szSkyblog,".skyblog.com");
     if(strcmp(D_szNOPage,"")==0 || strcmp(D_szNOPage,"1")==0){
                        strcpy(D_szNOPage,"index");
     }
     strcat(D_szSkyblog,"/");
     strcat(D_szSkyblog,D_szNOPage);
     strcat(D_szSkyblog,".html");
     if(32>(long)ShellExecute(NULL,"open",D_szSkyblog,0,0,SW_MAXIMIZE)){
          /* Musique :p 300 = fréquence et 90 = durée ms */
          _beep(3000,90);
          _beep(3000,90);
          MessageBox(hwnd,
          "Connexion impossible!",
          "Erreur",
          MB_OK | MB_ICONERROR);
     }
     SetWindowText(GlobalEdit,""); /*Remise du text de hEdit à zéro */
     SetFocus(GlobalEdit);
}

Conclusion :


A venir :
- Adaptation pour d'autre blog (blognet, ...)

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.