OVH Cloud OVH Cloud

Ecrire un message dans une fenetre

24 réponses
Avatar
daniel
Bonjour,

Je debute en prog windows.
Ai crée un programme qui m'affiche une fenetre,c'est un squelette tout
fait avec exit.
Je n'arrive pas a afficher un texte dans cette fenetre.
Comment faire ?

Merci d'avance

10 réponses

1 2 3
Avatar
daniel
Bonjour,

J'ai fait un test d'ecriture dans une fenetre avec un modele. J'arrive à
ecrire
un message, mais je voudrais envoyer plusieurs messages suivant des
evenements.
J'ai donc crée un timer (initialisé dans l'event WM_CREATE) qui toutes
les secondes envoie un message WM_PAINT.
Pour tester j'ai incrementé des variables en entrée de WM_TIMER et WM_PAINT.
Les variables timer et nbWM_PAINT s'incrementen, mais le message de la
fenetre ne change pas.
Voici mon petit programme:

/*<---------------------------------------------------------------------->*/
#include <windows.h>
#include <windowsx.h>
#include <commctrl.h>
#include <string.h>
#include <iostream.h>
#include "testres.h"


/*<---------------------------------------------------------------------->*/
HINSTANCE hInst; // Instance handle
HWND hwndMain; //Main window handle
const int ID_TIMER1 = 1;
int timer = 0;
int nbWM_PAINT = 0;
char buf[10] = "hello test";


LRESULT CALLBACK MainWndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM
lParam);
static BOOL InitApplication(void)
{

WNDCLASS wc;
memset(&wc,0,sizeof(WNDCLASS));
wc.style = CS_HREDRAW|CS_VREDRAW |CS_DBLCLKS ;
wc.lpfnWndProc = (WNDPROC)MainWndProc;
wc.hInstance = hInst;
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszClassName = "testWndClass";
wc.lpszMenuName = MAKEINTRESOURCE(IDMAINMENU);
wc.hCursor = LoadCursor(NULL,IDC_ARROW);
wc.hIcon = LoadIcon(NULL,IDI_APPLICATION);
if (!RegisterClass(&wc))
return 0;
/*@@0<-@@*/
// ---TODO--- Call module specific initialization routines h
return 1;
}

/*<---------------------------------------------------------------------->*/
/*@@1->@@*/
HWND CreatetestWndClassWnd(void)
{
return CreateWindow("testWndClass","test Statemate",

WS_MINIMIZEBOX|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN|WS_MAXIMIZEBOX|WS_CAPTION|WS_BORDER|WS_VSCROLL|WS_SYSMENU|WS_THICKFRAME,
CW_USEDEFAULT,0,CW_USEDEFAULT,0,
NULL,
NULL,
hInst,
NULL);
}
/*@@1<-@@*/
/*<---------------------------------------------------------------------->*/
/* --- The following code comes from
c:win32applcclibwizarddefOnCmd.tpl. */
void MainWndProc_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
switch(id) {
// ---TODO--- Add new menu commands here
/*@@NEWCOMMANDS@@*/
case IDM_NEW:
break;
case IDM_EXIT:
KillTimer(hwnd, ID_TIMER1);
PostMessage(hwnd,WM_CLOSE,0,0);
break;
}
}

/*<---------------------------------------------------------------------->*/
/*@@2->@@*/
LRESULT CALLBACK MainWndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
RECT rcClient;
HDC hDC;
PAINTSTRUCT paintst;
switch (msg) {
/*@@3->@@*/
case WM_SIZE:
break;
case WM_MENUSELECT:
return MsgMenuSelect(hwnd,msg,wParam,lParam);
case WM_COMMAND:
HANDLE_WM_COMMAND(hwnd,wParam,lParam,MainWndProc_OnCommand);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_TIMER:
timer++;
SendMessage(hwnd,WM_PAINT,0,0);
break;
case WM_CREATE:
SetTimer(hwnd,ID_TIMER1,1000,NULL);
break;
case WM_PAINT:
nbWM_PAINT++;
sprintf(buf,"valeur%i",nbWM_PAINT);
Paint(hwnd,&paintst);
SetBkColor(hDC, 0x000);
SetTextColor(hDC, 0xFFF);
hDC = BeginPaint(hwnd, &paintst);
GetClientRect(hwnd, &rcClient);
SetBkMode(hDC, TRANSPARENT);
DrawText(hDC, buf, -1, &rcClient,DT_VCENTER | DT_CENTER |
DT_SINGLELINE);
EndPaint(hwnd, &paintst);
break;
default:
return DefWindowProc(hwnd,msg,wParam,lParam);
}
/*@@3<-@@*/
return 0;
}
/*@@2<-@@*/

/*<---------------------------------------------------------------------->*/
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR
lpCmdLine, INT nCmdShow)
{
MSG msg;
HANDLE hAccelTable;

hInst = hInstance;
if (!InitApplication())
return 0;
hAccelTable = LoadAccelerators(hInst,MAKEINTRESOURCE(IDACCEL));
if ((hwndMain = CreatetestWndClassWnd()) == (HWND)0)
return 0;
CreateSBar(hwndMain,"Ready",1);
ShowWindow(hwndMain,SW_SHOW);
while (GetMessage(&msg,NULL,0,0)) {
if (!TranslateAccelerator(msg.hwnd,hAccelTable,&msg)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return msg.wParam;
}


Manuel Leclerc wrote:
daniel a écrit :


Manuel Leclerc wrote:


daniel a écrit :



Je debute en prog windows.
Ai crée un programme qui m'affiche une fenetre, c'est
un squelette tout fait avec exit.
Je n'arrive pas a afficher un texte dans cette fenetre.
Comment faire ?



Pourrais-tu préciser le langage/environnement de
développement que tu utilises ?



J'utilise LCCwin32




OK. Donc tu essayes de faire du SDK natif, en C. C'est bien :-)

Un exemple de "hello world !" :
http://www.magma.ca/~louievb/source/hello.c

Avec Google et des mots clés genre : C win32 hello world
tu pourras en trouver d'autre. Mais ils sont parfois un
peu bizarre et moyennement formateur.

Tu peux aussi essayer de trouver des tutoriels. 6 secondes
de Google m'ont donné ça : http://www.winprog.org/tutorial/

Après, il faut passer quelques heures, jours, semaines...
dans la documentation Microsoft en ligne.
Un point d'entrée qui en vaut bien un autre :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/aboutwindows.asp

Le Ternet est bourré de site proposant du code et des explications.
Quand tu as un problème précis, utilise Google et fait des essais
avec des mots clés décrivant ton problème.

Ou poste ici, ou dans d'autres hierarchie : comp.* ou
microsoft.public.* mais le plus dur va être de trouvé le bon groupe :-)

Si tu poses une question basique, que tout programmeur débutant Win32
s'est posé, essaye d'expliquer ce que tu ne comprends pas. Evite les
questions genre "dites moi comment faire.".

Et n'oublie pas la FAQ de ce ng :
http://groups.google.com/groups?selm=

Bon, je pourrais sûrement te donner encore quelques dizaines de
liens, mais je n'ai pas que ça à faire :-)



Avatar
Matt
"AMcD" a écrit dans le message news:
4007138a$0$24052$
Alexandre wrote:

> Est-ce que tu as prévu les 2t d'aspirine nécessaires pour apprendre
> la prog windows en C "pur" sans aucun framework ?

Faut pas exagérer non plus ! Moi, c'est avec les framework qu'il me faut


de
l'aspirine, sans ça va très bien...




P'tain t'es balaise toi !!!
"Moi, c'est avec les framework qu'il me faut de
l'aspirine, sans ça va très bien..."
pfff...

Matt
Avatar
AMcD
Matt wrote:

pfff...



Quoi pfff ? Ben essaye de fouiller dans ton framework un peu, de le pousser
dans ses retenchements tu vas vite être limité ! Tu sais, tout le monde ne
fait pas des applications de gestion à base de clics sur un AGL hein...

--
AMcD

http://arnold.mcdonald.free.fr/
http://amcd.diablo.free.fr/
Avatar
Matt
"AMcD" a écrit dans le message news:
400853e1$0$7133$
Matt wrote:

> pfff...

Quoi pfff ? Ben essaye de fouiller dans ton framework un peu, de le


pousser
dans ses retenchements tu vas vite être limité ! Tu sais, tout le monde ne
fait pas des applications de gestion à base de clics sur un AGL hein...



A bon, j'savais pas, désolé...
Vraiment désolé.

Le début du fil de la discution était "Je debute en prog windows".
et la tu nous parles de framework et d'application de gestion à base
de j'sais pas quoi...
A mon avis Daniel s'en fout un peu mais bon, c'est mon point de vue.

FDLCPM

Matt...
Avatar
Alain
Le Fri, 16 Jan 2004 23:17:08 +0100, Matt a écrit:


"AMcD" a écrit dans le message news:
400853e1$0$7133$
Matt wrote:

> pfff...

Quoi pfff ? Ben essaye de fouiller dans ton framework un peu, de le


pousser
dans ses retenchements tu vas vite être limité ! Tu sais, tout le monde
ne
fait pas des applications de gestion à base de clics sur un AGL hein...



A bon, j'savais pas, désolé...
Vraiment désolé.

Le début du fil de la discution était "Je debute en prog windows".
et la tu nous parles de framework et d'application de gestion à base
de j'sais pas quoi...
A mon avis Daniel s'en fout un peu mais bon, c'est mon point de vue.



T'es completement naze, toi.
C'est qui qui a parlé de framework ?
Et si tu sais pas ce que c'est un AGL, retourne faire des patés.
Avatar
Matt
> >> > pfff...
>>
>> Quoi pfff ? Ben essaye de fouiller dans ton framework un peu, de le
> pousser
>> dans ses retenchements tu vas vite être limité ! Tu sais, tout le monde
>> ne
>> fait pas des applications de gestion à base de clics sur un AGL hein...
>
> A bon, j'savais pas, désolé...
> Vraiment désolé.
>
> Le début du fil de la discution était "Je debute en prog windows".
> et la tu nous parles de framework et d'application de gestion à base
> de j'sais pas quoi...
> A mon avis Daniel s'en fout un peu mais bon, c'est mon point de vue.

T'es completement naze, toi.
C'est qui qui a parlé de framework ?



Bonjour,
AMcD pourquoi ? (faut suivre le fil de la conversation)

[..] Faut pas exagérer non plus ! Moi, c'est avec les framework qu'il me
faut de
l'aspirine, sans ça va très bien...[..](sic AMcD)

Et si tu sais pas ce que c'est un AGL, retourne faire des patés.



J'ai dit ca moi ? Ah bon, j'ai pô vu...

Matt...

Hé, tu me pretes ton seau et ta pelle s'te plait ...
Avatar
oulala-rvoisin
Bonjour

Tout cela s'apprend, il suffit d'avoir un peu de temps, et de ne pas être
pressé. La programmation est un travail de longue haleine.

Il faut avoir des cours ou tutoriels à ton niveau et les travailler.
Outre les sites que l'on t'a cité je te conseille un bouquin comme le
Petzold où tu apprendras progressivement les fondements de la programmation
Windows.
Pour avaler tout ça le cerveau a besoin de temps (le mien en tout cas). J'ai
donc pris l'habitude de laisser de côté tous les CD-ROM et fichiers
d'exemples (avec les projets et codes sources tout fait, qu'il suffit de
compiler pour voir l'application). A la place je tape tout moi-même de A à
Z, je reconstruis les boites de dialogue etc...C'est beaucoup plus long mais
pendant tout ce temps le cerveau travaille, analyse les procédures qu'est-ce
que ça fait, d'où ça vient, où ça va. A la fin tu as vraiment compris.

Je sais qu'il n'y a pas de règle universelle concernant les méthodes de
travail, il y en a bien d'autres et qui marchent très bien. Mais en tout cas
il ne faut pas vouloir aller trop vite.

--
R. VOISIN
www.rdvpro.com
Avatar
Alain
Le Sat, 17 Jan 2004 08:44:50 +0100, Matt a écrit:

Bonjour,
AMcD pourquoi ? (faut suivre le fil de la conversation)



[
Alexandre wrote:
Est-ce que tu as prévu les 2t d'aspirine nécessaires pour apprendre
la prog windows en C "pur" sans aucun framework ?




]

Y a pas à dire, t'es complètement con.

J'ai dit ca moi ? Ah bon, j'ai pô vu...



Et tu sais meme pas ce que t'écris.
Allez va faire ton rototo et au lit.
Avatar
Matt
"Alain" a écrit dans le message news:

Le Sat, 17 Jan 2004 08:44:50 +0100, Matt a écrit:

> Bonjour,
> AMcD pourquoi ? (faut suivre le fil de la conversation)

[
Alexandre wrote:
>> Est-ce que tu as prévu les 2t d'aspirine nécessaires pour apprendre
>> la prog windows en C "pur" sans aucun framework ?
]

Y a pas à dire, t'es complètement con.



je le suis completement mais je le sais. Le plus grave
c'est qu'il y en a qu'ils le savent pas et la c'est grave...
(ref Coluche adapté)

Rebonjour,

On s'ecrit si souvent qu'on finir par lier une amitié...
(C'est de l'ironie, joke, enfin quelque chose comme ca.
je le precise parce que tu n'as pas l'air de le saisir).
Je ne vais pas trop m'etendre sur le sujet, quoique en
ce moment j'aurai plutot le coeur à ca, mais bon.
Je m'etends donc un petit peu.
Resumons car on si perd un peu :

Alain (qui apparement est en colere) wrote :
T'es completement naze, toi.
C'est qui qui a parlé de framework ?



J'ai dit AMcD (il en a parlé), mais Alexandre l'a fait en premier.
Ok, mais cela vaut il la peine de s'enerver ???

Mais la question de Daniel est très loin de notre
conversation donc je ne dirais que ceci

FDLCPM

Matt... (zen)

> J'ai dit ca moi ? Ah bon, j'ai pô vu...



ps1 :
ca aussi c'était de l'ironie.


Et tu sais meme pas ce que t'écris.
Allez va faire ton rototo et au lit.



ps2 :
Au fait pour ton seau et ta pelle toujours ok ?
Avatar
Manuel Leclerc
daniel a écrit :

> [...]
>
> Voir "About Painting and Drawing" :
>
> [...]

Ce que je ne sais pas encore faire, c'est gerer les lignes,
c'est à dire mettre un retour chariot.



Serait-il possible d'en savoir un peu plus sur le but du programme ?

Plutôt que de s'embêter avec du "Drawing" fait à la main, si c'est
juste pour afficher quelques valeurs de compteurs dans une fenêtre,
(ou une liste de message) les classes LISTBOX, RICHEDIT_CLASS, STATIC,
ou EDIT sont peut être plus appropriées. Créer une ou plusieurs
fenêtres filles avec ces classes dans votre zone client, et basta...

Si c'est au contraire pour apprendre et s'amuser, voir l'API
TextOut ou l'API DrawText
1 2 3