Problème lecture du texte d'une textbox (API Windows)
Inceptor
Messages postés2Date d'inscriptiondimanche 12 décembre 2004StatutMembreDernière intervention22 juillet 2009
-
22 juil. 2009 à 12:05
Inceptor
Messages postés2Date d'inscriptiondimanche 12 décembre 2004StatutMembreDernière intervention22 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
A voir également:
Problème lecture du texte d'une textbox (API Windows)