Edit text dans une fenetre et non une boite de dialogue
gregroar
Messages postés42Date d'inscriptionsamedi 13 juin 2009StatutMembreDernière intervention19 novembre 2010
-
18 mai 2010 à 10:57
gregroar
Messages postés42Date d'inscriptionsamedi 13 juin 2009StatutMembreDernière intervention19 novembre 2010
-
21 mai 2010 à 00:07
Bonjour, je n ai trouvé null part d exemple d edit dans une vraie fenêtre et non pas dans une boite de dialogue.
Aussi j ai essayé et j ai réussi.
Enfin plus ou moins, par ce que le texte ne se rafraichit pas quand on récrit ou corrige dans ce qu on a deja mis,
les lettre se surimpriment.
Quelqu'un voudrait bien m aider dans mon projet, je lui envoie ma source et il m'aide.
Si ca l intéresse de collaborer, ce serait vraiment trop trop trop aimable, par ce que je débute,
j apprend en autodidacte, de manière assez sporadique.
Et j ai un gros gros projet qui demanderait peut être une équipe pour que ca avance plus vite.
J'ai des idées, je commence a comprendre le c++, j ai du courage, du temps et de la determination.
Ca devrait aller.
Mais si quelqu un veut bien m aider pour mes petites questions ou pour collaborer, je serais vraiment reconnaissant.
Tcho!
A voir également:
Edit text dans une fenetre et non une boite de dialogue
gregroar
Messages postés42Date d'inscriptionsamedi 13 juin 2009StatutMembreDernière intervention19 novembre 20101 20 mai 2010 à 02:30
vraiment merci beaucoup pour ce code il est très clair et simple
mais ca se complique après.
J'ai déja réussi a faire ça avec des dlgbox,
mais ça marche pas la avec ton code de fenêtres je dois avoir un problème qqpart,
problème de conversion de types ça me dit,
enfin j ai essayé trop de trucs, j arrive pas a récupéré le texte tapé dans mon edit...
screugneugneu
voici le code je veux mettre l' edit1 dans l' edit2
---------------------------------------------------------------------------------------------------------------------------------------------------------
if((HWND)lParam==hok)
{
GetDlgItemText(hinst,hedit1,buf,256);
SetDlgItemText(hinst,hedit2,buf);
}
Ca serait pas mieux avec un vecteur que buffer?
JE DOIS METTRE QUOI A LA PLACE DE HINST J AI l impression d'avoir tout ESSAYé D OU VIENT MON PROBLEME?
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 19 mai 2010 à 15:59
Salut,
Voici un code source dans lequel j'ai utilisé des edits dans une fenêtre:
UTILISATION-TOUCHES-TAB-ENTREE-ECHAP-DANS-FENETRE-WIN32 Les edits s'affichent exactement comme dans une boite de dialogue. L'erreur se trouve sûrement quelque part dans ton code.
gregroar
Messages postés42Date d'inscriptionsamedi 13 juin 2009StatutMembreDernière intervention19 novembre 20101 20 mai 2010 à 03:08
je vois déjà la question qui va suivre:
pour le traitement du texte entré, ensuite, j aimerais analyser chaque lettres du texte, comment je fais?
Je met tout dans un tableau de char?
char table [i][j]={0};
int i=0,J=0;
while pas caractere de fin de phrase
{
while pas espace
{
lire_lettre_suivante();
tabl [i][j]=lettre_lue
}i++;
}j++;
BREF PLEIN DE PETITES QUESTIONS BÊTES QUI ME PRENNENT LA TÊTE
bin oui je sais, c est du débutant, c'est la base!!
Mais j ai lu plusieurs bouquins et j arrive pas a mettre en pratique,
la seule chose qui m apprenne, c'est la pratique.
Je commence a bien arriver a dessiner dans une fenêtre, mais pour les édit et les traitements de texte et fichiers, je suis pas encore un boss.
Aidez moi s'il vous plait!! J'ai étudie plein de tutos, plein de livres, j ai juste besoin d un peu d explications.
ensuite chercher chaque mot dans le dico.txt (35MB) rangé alphabétiquement et regarder dedans si c est un verbe, un sujet, un adjectif
read file hfile un truc du genre, cette partie est à peu près réalisée...
gregroar
Messages postés42Date d'inscriptionsamedi 13 juin 2009StatutMembreDernière intervention19 novembre 20101 20 mai 2010 à 04:49
bon ba j ai trouvé ca sur msdn
Multiline modifier conseils boîte
Jusqu'à présent, il semble que WM_SETTEXT est le seul moyen de mettre les lignes en une zone d'édition multiligne. Si vous voulez faire cela, séparer les lignes par \ r \ n au sein de votre style de chaîne C. Il n'est pas nécessaire que le saut de ligne, mais le CRLF
exemple:
TCHAR tc [1000];
_stprintf (TC, TEXT ("Mary avait un \ petit agneau r \ nWhose toison était blanche comme \ neige r \ nEverywhere que Marie a \ r \ nLe agneau était sûr d'aller "));
SendMessage (editHwnd, WM_SETTEXT, 0, (LPARAM) tc); / / pour Windows Win32
SendMessage (GetDlgItem (hDlg, IDC_EDIT1), WM_SETTEXT, 0, (LPARAM) tc); / / exemple de dialogue
Ca marche pas nonplus
Vous n’avez pas trouvé la réponse que vous recherchez ?
HFONT font=(HFONT)GetStockObject(DEFAULT_GUI_FONT); // Changement de la police des contrôles:
HWND child=FindWindowEx(hwnd,0,0,0);
do
{
SendMessage(child,WM_SETFONT,(WPARAM)font,0);
child=FindWindowEx(hwnd,child,0,0);
}
while(child);
// Mettre le focus sur le premier EDIT:
SetFocus(hedit1);
return 0;
}
case WM_CLOSE:
// Détruire la fenêtre:
DestroyWindow(hwnd);
return 0;
case WM_DESTROY:
// Forcer la sortie de la boucle des messages:
PostQuitMessage(0);
return 0;
case WM_COMMAND:
// Clic sur le bouton Ok ou appui sur la touche ENTREE:
if((HWND)lParam==hlire)
{
///du coup j met des ptits //pour éviter que ca fouare ICI : les 2 lignes qui suivent
GetDlgItemText(hwnd,hedit1,buf,256);
SetDlgItemText(hwnd,hedit2,buf);
}
// Clic sur le bouton Quitter ou appui sur la touche ECHAP:
if((HWND)lParam==hquitter)SendMessage(hwnd,WM_CLOSE,0,0);
return 0;
default:
break;
}
// Appeler la procedure par défaut de la fenêtre:
return DefWindowProc(hwnd,message, wParam, lParam);
}
int WINAPI WinMain(HINSTANCE hinst, HINSTANCE hprev, LPSTR cmd, int show)
{
cxScreen GetSystemMetrics (SM_CXSCREEN); cyScreen GetSystemMetrics (SM_CYSCREEN)-35 ;
cxClient= cxScreen/4; cyClient= cyScreen-200;
// Déclaration et initialisation de la structure WNDCLASSEX:
WNDCLASSEX wc;
ZeroMemory(&wc,sizeof(WNDCLASSEX));
wc.cbSize=sizeof(WNDCLASSEX);
wc.hInstance=hinst;
wc.lpszClassName="fenetre";
wc.lpfnWndProc=WinProc;
wc.hCursor=LoadCursor(0,IDC_ARROW);
wc.hIcon=LoadIcon(0,IDI_APPLICATION);
wc.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);//////////////////////////LTGRAY
// Enregistrement de notre classe de fenêtre:
RegisterClassEx(&wc);
// Création de notre fenêtre:
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 20 mai 2010 à 16:38
Tu as oublié d'affecter les identificateurs à tes edits.
Ajoute la définition des identificateurs comme ceci:
#define ID_EDIT1 1027
#define ID_EDIT2 1028
Puis affecte ces identificateurs à tes edits dans CreateWindowEx() en 10ème paramètre:
hedit1=CreateWindowEx(WS_EX_CLIENTEDGE,"edit","",WS_CHILD | WS_VISIBLE | WS_TABSTOP | ES_MULTILINE | ES_AUTOVSCROLL | WS_VSCROLL
,5 ,cyClient-100 ,cxClient-30 ,40 ,hwnd,(HMENU)ID_EDIT1,0,0);
hedit2=CreateWindowEx(WS_EX_CLIENTEDGE,"edit","",WS_CHILD | WS_VISIBLE | WS_TABSTOP | ES_MULTILINE | ES_AUTOVSCROLL | WS_VSCROLL |ES_WANTRETURN
,5 ,20 ,cxClient-30 ,cyClient-150 ,hwnd,(HMENU)ID_EDIT2,0,0);
Enfin dans ta WindProc tu fais:
case WM_COMMAND:
// Clic sur le bouton Ok ou appui sur la touche ENTREE:
if((HWND)lParam==hlire)
{
GetDlgItemText(hwnd,ID_EDIT1,buf,256);
SetDlgItemText(hwnd,ID_EDIT2,buf);
}
// Clic sur le bouton Quitter ou appui sur la touche ECHAP:
if((HWND)lParam==hquitter)SendMessage(hwnd,WM_CLOSE,0,0);
return 0;
Si tu veux travailler directement avec les HWNDs des edits utilise GetWindowText() et SetWindowText().
Je viens de tester ton code corrigé et ça marche parfaitement.