IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Visionneuse API Windows


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 5
    Par défaut Visionneuse API Windows
    Bonjour à tous,
    Voila, je vous expose mon problème: je cherche a programmer une visionneuse à partir d'un editeur de texte que j'avais deja creer

    Voici mon code:

    Pour mon main.c:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    #include <windows.h>
    #include <stdio.h>
     
    #include "constantes.h"
    #include "fonctions.h"
     
    int WINAPI WinMain (HINSTANCE cetteInstance, HINSTANCE precedenteInstance,
                        LPSTR lignesDeCommande, int modeDAffichage)
    {
        HWND hwnd;
        MSG message;
        WNDCLASS classeFenetre;
     
        instance = cetteInstance;
     
        classeFenetre.style = 0;
        classeFenetre.lpfnWndProc = procedureFenetrePrincipale;
        classeFenetre.cbClsExtra = 0;
        classeFenetre.cbWndExtra = 0;
        classeFenetre.hInstance = NULL;
        classeFenetre.hIcon = LoadIcon(instance, MAKEINTRESOURCE (2));
        classeFenetre.hCursor = LoadCursor(NULL, IDC_ARROW);
        classeFenetre.hbrBackground = (HBRUSH)(1 + COLOR_BTNFACE);
        classeFenetre.lpszMenuName = "ID_MENU";
        classeFenetre.lpszClassName = "classeF";
     
        if(!RegisterClass(&classeFenetre)) return FALSE;
     
        hwnd = CreateWindow("classeF", "Aviator",WS_OVERLAPPEDWINDOW,
                                      CW_USEDEFAULT,CW_USEDEFAULT, 800, 600,
                                             NULL, NULL,cetteInstance, NULL);
     
        if (!hwnd)   return FALSE;
     
        ShowWindow(hwnd, modeDAffichage);
     
        while (GetMessage(&message, NULL, 0, 0))
        {
            TranslateMessage(&message);
            DispatchMessage(&message);
        }
        return message.wParam;
    }
    Pour les fonctions.c:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    #include <windows.h>
    #include <stdio.h>
     
    #include "constantes.h"
    #include "fonctions.h"
     
    LRESULT CALLBACK procedureFenetrePrincipale(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        static BOOL EditNotChg = FALSE;
           switch (message)
        {
     
            case WM_TIMER:
            {
                switch (wParam)
                   case ID_B_TIMER:
                   DestroyWindow(hstatic);
                   return 0;
            }
     
            case WM_CREATE:
             SetTimer(hwnd, ID_B_TIMER, 3000, (TIMERPROC)NULL);
     
             hstatic = CreateWindowEx(WS_EX_TOPMOST ,"STATIC", "MyPicture",
                                        WS_POPUP | WS_VISIBLE | SS_BITMAP,
                                             300, 250, 450, 300, hwnd, NULL,
                                              instance, NULL);
     
                 hEdit = CreateWindowEx(WS_EX_CLIENTEDGE, "edit", "Texte",
                   WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_WANTRETURN | WS_VSCROLL,
                                                0, 0, 0, 0, hwnd, NULL, instance, NULL);
                 hFont = (HFONT)GetStockObject(ANSI_FIXED_FONT);
                 SendMessage(hEdit,WM_SETFONT,(UINT)hFont,TRUE);
                 SendMessage(hEdit, EM_SETMARGINS, EC_LEFTMARGIN | EC_RIGHTMARGIN,
                                                                    MAKELONG(5, 5));
                 return 0;
     
            case WM_CLOSE:
                if(EditNotChg ||
                   MessageBox(hwnd,"Voulez-vous vraiment quitter?"
                                ,"Quitter",MB_YESNO | MB_ICONQUESTION ) == IDYES)
                                                                DestroyWindow(hwnd);
                return 0;
     
             case WM_COMMAND:
                switch(LOWORD(wParam))
                {
                    case ID_B_APROPOS:
                    DialogBox(instance, "APROPOS", hwnd, (DLGPROC)aPropos_procedure);
                    break;
                    case ID_B_QUITTER:
                    if(EditNotChg ||
                   MessageBox(hwnd,"Voulez-vous vraiment quitter?"
                                ,"Quitter",MB_YESNO | MB_ICONQUESTION ) == IDYES)
                                                                DestroyWindow(hwnd);                SendMessage(hwnd, WM_DESTROY, 0, 0);
                    break;
                    case EN_CHANGE:
                    EditNotChg = FALSE;
                    break;
                    case ID_B_OUVRIR:
                    charger();
                    break;
                }
                return 0;
     
           case WM_SIZE:
                 MoveWindow(hEdit, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE);
                 return 0;
     
            case WM_DESTROY:
                PostQuitMessage(0);
                return 0;
     
            default:
                return DefWindowProc(hwnd, message, wParam, lParam);
        }
    }
     
    BOOL APIENTRY aPropos_procedure(HWND boiteDeDialogue,UINT message,WPARAM wParam,LPARAM lParam)
    {
        switch (message)
        {
          case WM_INITDIALOG:
     
             return TRUE;
     
          case WM_COMMAND:
             if (LOWORD(wParam) == IDCANCEL || LOWORD(wParam) == IDOK)
             {
               EndDialog(boiteDeDialogue,0);
               return TRUE;
             }
             return 0;
     
          default:
             return FALSE;
        }
    }
     
    void convert_multiple(char* buf)
    {
        int i;
        for(i=0;;i++)
        {
            if (buf[i]=='\0')
            {
                buf[i] = '\n';
                if (buf[i+1]=='\0')
                    break;
            }
        }
    }
     
    void charger()
    {
       OPENFILENAME ofn;
                   CHAR szFile[MAX_PATH]={0};
                   ZeroMemory(&ofn, sizeof(OPENFILENAME));
                   ofn.lStructSize = sizeof(OPENFILENAME);
                   ofn.lpstrFile = szFile;
                   ofn.nMaxFile = MAX_PATH;
                   ofn.lpstrFilter =
                               "Tout les fichiers\0*.*";
                   ofn.nFilterIndex = 1;
                   ofn.Flags =
                           OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
        if (GetOpenFileName(&ofn)==TRUE)
        {
            HANDLE hf;
            DWORD FileSize,nbcharRead ;
            CHAR *buffer;
     
            hf = CreateFile(szFile, GENERIC_READ, 0,NULL,
                                OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
            FileSize = GetFileSize(hf, NULL);
            buffer = (PCHAR)LocalAlloc(LMEM_FIXED, FileSize+1);
            ReadFile(hf, buffer, FileSize, &nbcharRead, NULL) ;
            buffer[FileSize] = 0;
            SendMessage(hEdit, WM_SETTEXT, 0, (LPARAM)buffer);
            LocalFree(buffer);
            CloseHandle(hf);
        }
    }
    Avez vous une idee? Je sais qu'il faut que je modifie le hEdit mais pour le reste je ne reussis pas

    Merci d'avance

    Ps: J'ai lu et appris le tutoriel de l'api windows

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Bonjour

    Citation Envoyé par Tim89 Voir le message
    Avez vous une idee?
    Une idée de quoi ???

    J'en ai plein, mais je crois qu'elles ne te serviraient pas..

    As-tu un problème avec ce code ?

    Si oui, où ? Avec quels diagnostics ?

    Là, comme ça, ben... rien..

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 5
    Par défaut
    Bah il n'y a pas de problème avec ce code, ça c'est pour un editeur de texte et il marche Nan, ce que je voudrais savoir ce sont les fonctions a rajouter pour faire en sorte qu'il puisse ouvrir et afficher les images .bmp par exemple

  4. #4
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2012
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 190
    Par défaut
    salut !
    ce n'est pas très facile si on ne dispose pas d'un C++ builder, d'un visual C++ ou d'un delphi. pour rester au niveau de l'API msdn donne quelques exemples. http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
    A+

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 5
    Par défaut
    Oouuulaaaa!! Oui en effet, ça a l'air assez chaud!!! Bah merci beaucoup du lien je vais essayer de bosser ça alors

  6. #6
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Afficher une image bitmap est assez simple. Plusieurs méthodes sont présentées ici.

  7. #7
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 527
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 527
    Par défaut
    Citation Envoyé par Tim89 Voir le message
    Oouuulaaaa!! Oui en effet, ça a l'air assez chaud!!! Bah merci beaucoup du lien je vais essayer de bosser ça alors
    Afficher une bitmap oui c'est compliqué ; il faut gére un HBITMAP appeler SelectObject,charger l'image avec LoadImage et l'afficher avec Stretchblt ou BitBlt

Discussions similaires

  1. Réponses: 29
    Dernier message: 14/01/2013, 10h40
  2. tutoriel : La programmation de l'API Windows en C++ par Bob
    Par Aurelien.Regat-Barrel dans le forum Windows
    Réponses: 19
    Dernier message: 21/06/2008, 14h34
  3. Documentation gratuite sur l'API Windows, COM, DCOM, OLE, etc.
    Par Community Management dans le forum Windows
    Réponses: 1
    Dernier message: 16/11/2006, 15h28
  4. [API Windows] Polices de caractères disponibles
    Par bebeours dans le forum C++Builder
    Réponses: 3
    Dernier message: 05/11/2003, 08h28
  5. Utilisation de Pointeurs dans API windows
    Par Drooxy dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 13/03/2003, 22h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo