Transcodage arabe anglais

Résolu
elmarokinho Messages postés 58 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 6 février 2009 - 21 mars 2008 à 16:07
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 - 28 mars 2008 à 01:25
bonjour,
je suis en DUT 2e année ... je dois réaliser un projet pr la
mi-mars  ;
:
realisation d'un logiciel de transcodage anglais/arabe
...
voila j'ai commencé a me remettre au langage C , d'ailleurs je me dit que
j'aurais bien fait 'écouter un peu plus en cours ^^ ...
Donc si quelqun a
déja réalisé ce type de projet ou si vous avez un code source d'un logiciel
proche qui pourrait m'aider , merci de me faire signe

pour ma part je suis chargé de l'interface graphique.

j'utilise WinApi mais je n'arrive pas a intégrer une zone de texte !!!!

voila ou j'en suis :

#include <windows.h>
#include <stdio.h>

#define ID_B_TRADUIRE 0
#define ID_B_QUITTER 1
#define ID_B_TEST 2
#define ID_ANGAR  3
#define ID_ARANG  4

HINSTANCE instance;

LRESULT CALLBACK procedureFenetrePrincipale(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain (HINSTANCE cetteInstance, HINSTANCE precedenteInstance,
LPSTR lignesDeCommande, int modeDAffichage)
{
    HWND fenetrePrincipale;
    WNDCLASS classeFenetre;
//Variables de la fonction principale
    MSG msg;
    instance = cetteInstance;
         // Structure de la classe de la fenêtre principale

    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;

    fenetrePrincipale = CreateWindow("classeF", "Transcodage arabe anglais", WS_OVERLAPPEDWINDOW,
                                   CW_USEDEFAULT, CW_USEDEFAULT, 400, 300,
                                                   NULL, NULL, cetteInstance, NULL);
    if (!fenetrePrincipale) return FALSE;

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

    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}

//variables globales
HINSTANCE cetteInstance;
HWND hEdit[1]; //handle des deux contrôles d'édition

//Afficher un contrôle d'édition d'une ligne
HWND afficheEditUneLigne (HWND fenetrePrincipale)
{
HWND hEdit=CreateWindow(
                        "EDIT",
                        "Modifiez le texte SVP",
                         WS_VISIBLE|WS_CHILD|WS_BORDER|ES_CENTER ,
                        30, 80, 383, 30,fenetrePrincipale,NULL,instance,NULL);

return hEdit;
}
//Traitement des messages
void msgCtl(HWND fenetrePrincipale,UINT msg, WPARAM wParam, LPARAM lParam)
{
UINT motBas =  LOWORD(wParam);
HWND hCtl= (HWND) lParam;
int nombreLignes=0;
char lignes[70]={0},nLignes[5]={0};

}
//Traitement des notifications
void NotificationControle(HWND fenetrePrincipale,UINT msg, WPARAM wParam, LPARAM lParam)
{
UINT motHaut= HIWORD(wParam);
HWND hCtl= (HWND) lParam;

switch(motHaut)
{
        //Notification EN_CHANGE envoyée par le contrôle
        case EN_CHANGE:
                if (hCtl == hEdit[0])
                {
                MessageBox(fenetrePrincipale,"Vous avez modifié le texte d'une contrôle à une ligne !!","",MB_OK);
                }
        break;
        case BN_CLICKED: // cliquer sur un des boutons pour analyser les messages
               msgCtl((HWND)fenetrePrincipale,(UINT)msg,(WPARAM)wParam,(LPARAM)lParam);
        break;
}
}

LRESULT CALLBACK  Procedure (HWND fenetrePrincipale, UINT msg, WPARAM wParam, LPARAM lParam)
{

        switch (msg)

    {
        //afficher les contrôles d'édition à la réception du message WM_CREATE
        case WM_CREATE:
               hEdit[0]=afficheEditUneLigne (fenetrePrincipale);

        default:
            return DefWindowProc(fenetrePrincipale, msg, wParam, lParam);
        }
}
LRESULT CALLBACK procedureFenetrePrincipale(HWND fenetrePrincipale, UINT msg, WPARAM wParam, LPARAM lParam)
{
    static HWND boutons[5] = {NULL};

    switch (msg)
    {
        case WM_CREATE:
                boutons[0] = CreateWindow("BUTTON", "Traduire", WS_CHILD | WS_VISIBLE,
        5, 145, 383, 30, fenetrePrincipale, (HMENU)ID_B_TRADUIRE, instance, NULL);
                boutons[1] = CreateWindow("BUTTON", "Quitter", WS_CHILD | WS_VISIBLE,
        5, 185, 383, 30, fenetrePrincipale, (HMENU)ID_B_QUITTER, instance, NULL);

                HWND hGroup = CreateWindow("BUTTON","*** Votre Choix : ***",WS_CHILD|WS_VISIBLE|BS_GROUPBOX,
        10,5,383,60,fenetrePrincipale,NULL,instance,NULL);
    {
        HWND hControle;
                hControle = CreateWindow("BUTTON","anglais/arabe",WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON,
        20,25,120,30,fenetrePrincipale,(HMENU)ID_ANGAR,instance,NULL);
                hControle = CreateWindow("BUTTON","arabe/anglais",WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON,
        260,25,120,30,fenetrePrincipale,(HMENU)ID_ARANG,instance,NULL);
                 return 0;
    }
        case WM_COMMAND:
            switch(LOWORD(wParam))
            {
                case ID_B_TRADUIRE:
                    MessageBox(fenetrePrincipale, "Il n'y a rien à traduire", "Bonjour.", MB_ICONINFORMATION);
                    break;

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

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

        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;

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

merci de votre aide

64 réponses

cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
28 mars 2008 à 00:50
J'ai donc eu le même problème avec Code Blocks !

En faisant cette modif je ne l'ai plus : Dans "Project" choisir "Build Options...". Dans la fenêtre qui s'ouvre sélectionner le projet puis l'onglet supérieur "Compiler settings" puis l'onglet inférieur "Other options" et saisir dans la zone de saisie :

-finput-charset=iso-8859-1

Après cette modif, cela compile ici !
Jean-François
0
elmarokinho Messages postés 58 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 6 février 2009
28 mars 2008 à 00:58
Que dire?
vous etes tout simplement FORMIDABLE ... il y a quelque jours je me voyez déja arriver à la présentation sans ne rien avoir a montrer ...aujourd'hui je vous doit tout...

merci d'avoir été la du début a la fin...

j'aurais cependant une derniere question, pour intégrer l'icone vous m'aviez parlé d'un fichier ressource mais je ne comprend pas vraimment ce que je dois mettre dedans ...

ceci n'est bien sur qu'un détail dans cet immense projet mais quitte à rendre quelque chose de bien autant viser la perfection ..
mille merci
0
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
28 mars 2008 à 01:20
Pas de quoi ! Cela m'a fait découvrir des fonctionnalités que je n'avais jamais utilisé.

Un fichier ressource est un fichier texte avec l'extension rc qui contient la description des ressources utilisées par le programme telles que images bitmaps, icônes, description de boîtes de dialogues (si elles ne sont pas entièrement programmées), manifest XP, informations de version, ...

Quand vous avez créé votre projet sous Code::Blocks il a certainement dû en créer un se nommant resource.rc, il suffit de remplacer son contenu par ce que j'ai copier/coller à la fin d'un des posts précédents ! Vous n'êtes pas obligé de le renommer, le principal est qu'il soit inclu dans le projet pour être pris en compte.

En résumé, dans le répertoire du projet Code::Blocks (que j'ai appelé TranscoderLA) j'ai les fichiers suivants (par ordre alphabétique) :

- bin (répertoire créé par Code::Blocks, c'est dans son sous-répertoire Release que se trouve l'exécutable)
- obj (répertoire créé par Code::Blocks)
- Dictionnaire.txt (le dictionnaire des traductions)
- icone.ico (l'icône référencée dans le fichier des ressources)
- manifest.xml (le manifest XL référencé dans le fichier des ressources)
- TranscoderLA.cbp (fichier créé par Code::Blocks)
- TranscoderLA.cpp (fichier source du programme, on trouve souvent main.cpp comme nom)
- TranscoderLA.depend (fichier créé par Code::Blocks)
- TranscoderLA.rc (fichier des ressources, on trouve souvent resource.rc comme nom)

Jean-François
0
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
28 mars 2008 à 01:25
Et il y a aussi les fichiers TranscoderLA.layout et TranscoderLA.workspace qui ont été ajouté par Code::Blocks après avoir quitter !
Jean-François
0
Rejoignez-nous