Problème lecture du texte d'une textbox (API Windows)

Inceptor Messages postés 2 Date d'inscription dimanche 12 décembre 2004 Statut Membre Dernière intervention 22 juillet 2009 - 22 juil. 2009 à 12:05
Inceptor Messages postés 2 Date d'inscription dimanche 12 décembre 2004 Statut Membre Dernière intervention 22 juillet 2009 - 22 juil. 2009 à 13:19
Bonjour,

Je suis en train de développer un petit programme très simple, celui doit doit générer un fichier à partir des données entrées. L'interface du programme contient 7 textbox et un bouton qui permet de générer le fichier avec des tags (pour séparer les différents textes).

Je n'arrive pas à récupérer le texte des textbox (j'utilise getwindowstext), j'ai déjà pas mal chercher sur d'autre forum des réponses mais il me semble que ma façon de faire est correcte...

Voici mon code:

#include <windows.h>
#include <stdio.h>
#include <shlobj.h>
#include <stdlib.h>
#include <fstream>
#include 
#include <tchar.h>
#include "constantes.h"


using namespace std;

// Instance principale
HINSTANCE instance;

// Déclatation des fontions
LRESULT CALLBACK procedureFenetrePrincipale(HWND, UINT, WPARAM, LPARAM);

// Boucle principale du programme
int 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;

    // Création de la fenêtre principale
    fenetrePrincipale = CreateWindow("classeF", "ANS News Selection", WS_OVERLAPPEDWINDOW,
                                    CW_USEDEFAULT, CW_USEDEFAULT, 400, 600,
                                    NULL, LoadMenu(instance, "ID_MENU"), cetteInstance, NULL);
    if (!fenetrePrincipale) return FALSE;

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


    // Boucle d'attente d'un événement
    while (GetMessage(&message, NULL, 0, 0))
    {
        TranslateMessage(&message);
        DispatchMessage(&message);
    }
    return message.wParam;
}

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

    switch (message)
    {
        case WM_CREATE:
            boutons[0] = CreateWindow("BUTTON", "Générer la news et l'envoyer", WS_CHILD | WS_VISIBLE,
                10, 520, 380, 30, fenetrePrincipale, (HMENU)ID_B_GENERER, instance, NULL);
// TIME
            CreateWindowEx(WS_EX_WINDOWEDGE,"Static","Date et Heure:",WS_VISIBLE | WS_CHILD,
                10,10,100,20,fenetrePrincipale,NULL,NULL,NULL	);
            HWND hTime;
            hTime=CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","aaaammjj hhmm", WS_CHILD | WS_VISIBLE,
                125,10,120,20,fenetrePrincipale,(HMENU)ID_T_TIME,NULL,NULL	);
// TITRE
            CreateWindowEx(WS_EX_WINDOWEDGE,"Static","Titre:",WS_VISIBLE | WS_CHILD,
                10,70,60,20,fenetrePrincipale,NULL,NULL,NULL	);
            HWND hTitre;
            hTitre=CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD | WS_VISIBLE,
                70,70,320,20,fenetrePrincipale,(HMENU)ID_T_TITRE,NULL,NULL	);
// PAYS
            CreateWindowEx(WS_EX_WINDOWEDGE,"Static","Pays:",WS_VISIBLE | WS_CHILD,
                10,40,35,20,fenetrePrincipale,NULL,NULL,NULL	);
            HWND hPays;
            hPays=CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD | WS_VISIBLE,
                70,40,90,20,fenetrePrincipale,(HMENU)ID_T_PAYS,NULL,NULL	);
// ENGAGEMENT
            CreateWindowEx(WS_EX_WINDOWEDGE,"Static","Engagement:",WS_VISIBLE | WS_CHILD,
                170,40,90,20,fenetrePrincipale,NULL,NULL,NULL	);
            HWND hEngagement;
            hEngagement=CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD | WS_VISIBLE,
                270,40,120,20,fenetrePrincipale,(HMENU)ID_T_ENGAGEMENT,NULL,NULL	);
// SOURCE
            CreateWindowEx(WS_EX_WINDOWEDGE,"Static","Source:",WS_VISIBLE | WS_CHILD,
                10,130,50,20,fenetrePrincipale,NULL,NULL,NULL	);
            HWND hSource;
            hSource=CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD | WS_VISIBLE,
                70,130,90,20,fenetrePrincipale,(HMENU)ID_T_SOURCE,NULL,NULL	);
// URL
            CreateWindowEx(WS_EX_WINDOWEDGE,"Static","URL:",WS_VISIBLE | WS_CHILD,
                10,100,30,20,fenetrePrincipale,NULL,NULL,NULL	);
            HWND hUrl;
            hUrl=CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD | WS_VISIBLE,
                70,100,320,20,fenetrePrincipale,(HMENU)ID_T_URL,NULL,NULL	);
// TEXTE
            CreateWindowEx(WS_EX_WINDOWEDGE,"Static","Texte en entier:",WS_VISIBLE | WS_CHILD,
                10,160,380,20,fenetrePrincipale,NULL,NULL,NULL	);
            HWND hTexte;
            hTexte=CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_WANTRETURN | WS_VSCROLL | ES_AUTOVSCROLL | WS_THICKFRAME,
                10,180,380,330,fenetrePrincipale,(HMENU)ID_T_TEXTE,NULL,NULL	);

            return 0;

        case WM_COMMAND:
            switch(LOWORD(wParam))
            {
                case ID_B_APROPOS:
                    MessageBox(fenetrePrincipale, "ANS News Selection\nVersion 0.9\nANZ 2009", "ANS News Selection", MB_ICONINFORMATION);
                    break;

                case ID_B_GENERER:

                    // Ecriture fichier news
                    FILE* fichier;
                    fichier = fopen("test.ans", "w");

                    char texte[MAXOUT] ;

                        // TIME GetWindowWord(hTime,10000)
                        GetWindowText(hTime,texte,MAXOUT);
                        fprintf(fichier, "<*tag_time*>\n%s\n</*tag_time*>\n",texte);

                        // TITRE GetWindowWord(hTitre,10000)
                        GetWindowText(hTitre,texte,MAXOUT);
                        fprintf(fichier, "<*tag_titre*>\n%s\n</*tag_titre*>\n",texte);

                        // PAYS
                        GetWindowText(hPays,texte,MAXOUT);
                        fprintf(fichier, "<*tag_pays*>\n%s\n</*tag_pays*>\n",texte);

                        // ENGAGEMENT
                        GetWindowText(hEngagement,texte,MAXOUT);
                        fprintf(fichier, "<*tag_engagement*>\n%s\n</*tag_engagement*>\n",texte);

                        // SOURCE
                        GetWindowText(hSource,texte,MAXOUT);
                        fprintf(fichier, "<*tag_source*>\n%s\n</*tag_source*>\n",texte);

                        // TEXTE
                        GetWindowText(hTexte,texte,MAXOUT);
                        fprintf(fichier, "<*tag_texte*>\n%s\n</*tag_texte*>\n",texte);

                        // URL
                        GetWindowText(hUrl,texte,MAXOUT);
                        fprintf(fichier, "<*tag_url*>\n%s\n</*tag_url*>",texte);


                    fclose(fichier);

                    MessageBox(fenetrePrincipale, "La news a été envoyé à ANS Database", "ANS News Selection", MB_ICONINFORMATION);
                    break;

                case ID_B_PARAMETRE:
                    MessageBox(fenetrePrincipale, "param", "ANS News Selection", MB_ICONINFORMATION);
                    break;

                case ID_B_QUITTER:
                    SendMessage(fenetrePrincipale, WM_DESTROY, 0, 0);
                    break;
            }
            return 0;

        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;

        default:
            return DefWindowProc(fenetrePrincipale, message, wParam, lParam);
    }
}





J'espère que vous aller pourvoir trouver mon erreur, qui doit sans doute être toute bête...


Merci d'avance

1 réponse

Inceptor Messages postés 2 Date d'inscription dimanche 12 décembre 2004 Statut Membre Dernière intervention 22 juillet 2009
22 juil. 2009 à 13:19
Problème résolu!!!

Il faut mettre les créations de bouton et de textbox dans la boucle winmain, le "WM_CREATE" crée les problèmes...
0
Rejoignez-nous