Aide sur un projet en C

Fermé
Lee - 15 mai 2003 à 10:30
 bohijm123 - 12 janv. 2008 à 21:23
Hello everybody.

Voila juste pr vs dire de ne pas vs laisser impressionner par la longueur c juste pr montrer où jen sui et pr pa etre tro vague koi !!!

Mon programme est sensé pouvoir lire et afficher un document au format ".rtf", ce document devant etre visible lors de l'exécution du soft.

L'idéal serait k'1 fenetre souvre lors de l'exécution et kelle aie une zone pour accueillir le texte.
Jessaie de compiler ss windows (pas en console DOS) et je progrmme en C pur grace à Dev-C++.

Ce doc est composé de 4 colonnes (les 3 1ères st déja remplies), avec entete de page..... dc assez compliké.

G déja le code source pour lire le format rtf mais jarrive pas à faire s'afficher mon document.
J'utilise le parser de Microsoft (quelke peu modifié pr mes besoins).
Voila mon main() :

#include.... /*ts les .h necessaires*/

main(int argc, char *argv[])
{
FILE *fp ;
int ec ;
char ligne[taille_ligne];
ligne[taille_ligne]='\0';

fp = fpIn = fopen("S:\...\...\Formats.rtf", "r") ;
if (!fp) /*Formats.rtf est nom du doc par exple*/
{
printf ("Can't open test file!\n") ;
return 1 ;
}
if ((ec = ecRtfParse(fp)) != ecOK)

/*ecRtfParse() est la fct ki fait l'analyse synthaxique du doc et ecOK signifie ke tt est OK*/

printf("error %d parsing rtf\n", ec) ;
else
{
printf("Parsed RTF file OK\n") ;

/*parcours d lignes du doc*/
while (fgets(ligne,taille_ligne,fp))

{ /*on affiche la ligne lue*/
printf("%s", ligne);
}
}
fclose(fp) ;
return 0 ;
}

_ Au sujet de "taille_ligne" : g mis taille ligne juste pr montrer k cet endroit il fo preciser la taille de la ligne !

_ D'apres ce kon ma di, les textes sont extrait "en brut" et deja affichés sur la sortie standard (console DOS). Or jessaie de compiler une appli windows (en C pur).
Le texte du document RTF est dc envoyé vers la sortie standard (avec putchar) dans la fonction ecPrintChar(int ch) ke voici :

int ecPrintChar(int ch)
/* Envoie un caractere vers un fichier de sortie.*/
{
putchar(ch) ;
return ecOK ;
}

Il faudrai dc changer la sorti standart ? Envoyer les caracteres vers un tablo par exple, ki lé renverrai pr affichage ensuite ds 1 fenetre ? Comment proceder ? Si ligne par ligne kelle taille de tablo ?

_ Sinon peut-etre ke si la boucle while...fgets n'affiche rien c pcque la fonction de parsing a lu le fichier en entier et donc que le stream fp pointe a la fin du fichier.

_ Pour ce ki est de l'affichage ds une fenetre, dev-c++ lorskon crée un nvo projet dappli windows, crée automatikemen un code pr l'affichage. Le voici a titre dinfo :

#include <windows.h>
/* Declare Windows procedure */
LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM);
/* Make the class name into a global variable */
char szClassName[ ] = "WindowsApp";
int WINAPI WinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil)

{
HWND hwnd; /* This is the handle for our window */
MSG messages; /* Here messages to the application are saved */
WNDCLASSEX wincl; /* Data structure for the windowclass */

/* The Window structure */
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure; /* This function is called by windows */
wincl.style = CS_DBLCLKS; /* Catch double-clicks */
wincl.cbSize = sizeof(WNDCLASSEX);

/* Use default icon and mouse-pointer */
wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor(NULL, IDC_ARROW);
wincl.lpszMenuName = NULL; /* No menu */
wincl.cbClsExtra = 0; /* No extra bytes after the window class */
wincl.cbWndExtra = 0; /* structure or the window instance */
/* Use light-gray as the background of the window */
wincl.hbrBackground = (HBRUSH) GetStockObject(LTGRAY_BRUSH);

/* Register the window class, if fail quit the program */
if(!RegisterClassEx(&wincl)) return 0;

/* The class is registered, let's create the program*/
hwnd = CreateWindowEx(
0, /* Extended possibilites for variation */
szClassName, /* Classname */
"Windows App", /* Title Text */
WS_OVERLAPPEDWINDOW, /* default window */
CW_USEDEFAULT, /* Windows decides the position */
CW_USEDEFAULT, /* where the window ends up on the screen */
544, /* The programs width */
375, /* and height in pixels */
HWND_DESKTOP, /* The window is a child-window to desktop */
NULL, /* No menu */
hThisInstance, /* Program Instance handler */
NULL /* No Window Creation data */
);

/* Make the window visible on the screen */
ShowWindow(hwnd, nFunsterStil);
/* Run the message loop. It will run until GetMessage( ) returns 0 */
while(GetMessage(&messages, NULL, 0, 0))
{
/* Translate virtual-key messages into character messages */
TranslateMessage(&messages);
/* Send message to WindowProcedure */
DispatchMessage(&messages);
}

/* The program return-value is 0 - The value that PostQuitMessage( ) gave */
return messages.wParam;
}

/* This function is called by the Windows function DispatchMessage( ) */
LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message) /* handle the messages */
{
case WM_DESTROY:
PostQuitMessage(0); /* send a WM_QUIT to the message queue */
break;
default: /* for messages that we don't deal with */
return DefWindowProc(hwnd, message, wParam, lParam);
}
return 0;
}
Ce code est semblable à ce ke g pu trouver en faisan kelke recherches et il est bien inclu ds le projet.

Je rapelle le but :
"Mon programme est sensé pouvoir lire et afficher un document au format ".rtf", ce document devant etre visible lors de l'exécution du soft.
L'idéal serait k'1 fenetre souvre lors de l'exécution et kelle aie une zone pour accueillir le texte."

Pr le momen rien ne saffiche nulle part c la misere koi.
C un peu longuet ms c complet comme description et si ya qq'un ki a envie de se prendre un peu la tete pr resoudre ce pb et me donner un piti coup de main sur mon projet il est le bienvenu !

Merci de votre attention.

PS. Aide non rémunérée ! :-)

4 réponses

Ouai salu Lee
C vrai ke ça a l'air assez lourd....ms bon.

Alléééééé les gars yen a bien 1 d'entre vous qui a sa ptite idée sur le sujet ?!


"Celui ke lon ne voit pas"
0
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
17 mai 2003 à 14:46
ben en fait Lee, je crois que si personne répond c que justement les gens ici n'ont pas forcément le temps de lire ton post... Même si tu es bien conscient qu'il est long.

Mon conseil, arrange toi pour poser des questions plus concises et précises pour qu'un maximum de gens puisse répondre...
@++

Vous hésitez entre Linux et Windows?
Vous voulez dépenser du temps ou de l'argent ?
0
Salu
Je veu realiser une appli windows en C et avec Dev-c++.
Je voudrais que mon prog puisse ouvrir et aficher un doc o format rtf dans une nvelle fenetre lors de son execution.

g tte la partie qui permet danalyser le rtf ms jarriv pas à faire safficher le doc.

Dev-c++, lorquon crée 1 nvo projet type "windows application", donne un source censé permettre la creation d'une frnetre pr affichage.
Ce srce a sa fct princ de type Winmain().
das un autre srce ds le meme projet g mon code (avec main() ).
Je compile ss erreur ms pas daffichage lors de lexecution.
Les details sont ds le sujet en haut de page.

Voila.
0
bonsoir

je suis BOHI, un jeune ivoirien.
j'ai la possibilité d'être financé, mais on me demande qu'un projet de volaille.
j'ai pas les moyens immédiats pour contacter des experts.
c'est pourquoi, je pris toute personne maitrisant ce type de projet de bien vouloir m'aider.
mon mail: bohijm123@yahoo.fr
cel:+225 05180491

merci pour votre comprehension
0