begin process at 2008 09 05 11:24:54
1 237 169 membres
127 nouveaux aujourd'hui
14 312 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : recherche sources C++ [ Archives / API ] (yerosnimus)

recherche sources C++ le 05/11/2004 09:41:27

yerosnimus
Bonjour,

J'ai quelques problèmes pour comprendre le fonctionnement des menus, je recherche donc des sources en C++ (si possible développée avec Dev-C++) utilisant :

- un fichier rsrc.rc pour créer les menus
- une application ayant au moins un début d'aide en ligne (puisque c'et ça qui me bloque).

Et si possible une petite application, ça serait le bonheur :-)

Merci de votre aide

Jerome

Re : recherche sources C++ le 05/11/2004 11:41:51

racpp
(Admin CS)
Salut,
Pour mieux comprendre le fonctionnement des menus, je pense qu'il est préférable d'utiliser les API directement sans passer par les fichiers ressources. Voici des fonctions pour les menus:
CreateMenu()
CreatePopupMenu()
AppendMenu()
InsertMenuItem()
SetMenu()
DestroyMenu()
Etc..

Ce ne sont que des exemples de fonctions API. Leur utilisation n'est pas compliquée et présente aussi l'avantage d'être compatible avec tous les compilateurs sous Windows. Cela permet également de changer les menus pendant l'exécution du programme. Voici la liste complète des fonction:

MSDN : Les menus

Re : recherche sources C++ le 05/11/2004 11:49:14

yerosnimus
Bonjour,

en fait je me suis mal exprimé, mon problème c'est de créer une deuxième fenêtre sans que ma fenêtre principale soit détruite.

Ma deuxième fenêtre est appelée par le menu AIDE de ma fenêtre principale.

Merci en tout cas de votre réponse précédente et peut êter de vos réponses futures :-)

Jerome

Re : recherche sources C++ le 05/11/2004 12:57:15

racpp
(Admin CS)
Pour cela, il y'a plusieurs solutions. Ca dépend de la nature de cette deuxième fenêtre. Tu peux créer cette deuxième fenêtre exactement de la même façon que la première. Après avoir défini tous les membres de la classe de cette fenêtre, tu appelles la fonction CreateWindowEx() avec le style WS_CHILD. Cet appel peut se faire suite au clic sur AIDE. Il peut aussi se faire pendant le lancement de la première fenêtre dans le traitement du message WM_CREATE. Dans ce cas la deuxième fenêtre ne doit pas avoir le style WS_VISIBLE. Elle restera invisible tant qu'on n'a pas fait ShowWindow(hwnd2, SW_SHOW). Cette fonction sera donc appelée suite au clic sur AIDE. Pour la cacher de nouveau on fait ShowWindow(hwnd2,SW_HIDE). A toi de voir ce qui te convient.

Re : recherche sources C++ le 05/11/2004 14:53:53

yerosnimus
C'est la première solution que j'ai choisie mais quand je clique sur "AIDE" rien ne se passe. Je pense que j'utilise mal cette fonction CreateWindowsEx().
Voici ce que j'ai fait (en résumé) :

#include <windows.h>
using namespace std;

/* 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 */
...
}
/* 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_COMMAND:
{
case 104:
{
HINSTANCE hInstance;
HWND hwnd2; /* This is the handle for our window */
WNDCLASSEX wincl2; /* Data structure for the windowclass */

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

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

/* The class is registered, let's create the program*/
hwnd2 = CreateWindowEx(
WS_EX_CLIENTEDGE, /* Extended possibilites for variation */
szClassName, /* Classname */
"Présentation", /* Title Text */
WS_CHILD,
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,
NULL, /* No menu */
hInstance, /* Program Instance handler */
NULL /* No Window Creation data */
);

ShowWindow(hwnd2, SW_SHOW);
WinHelp (hwnd2,"D:\\Data\\C++\\MesProjets\\Projet1\\HLP32\\GENXMLAIDE.HLP>Présentation",HELP_CONTENTS,0);
break;
}
} // fin du switch pour la gestion du menu

} // fin du WM_COMMAND
}

Re : recherche sources C++ le 05/11/2004 19:20:50

racpp
(Admin CS)
Si tu veux utiliser la fonction WinHelp() tu n'as pas besoin de créer une deuxième fenêtre car cette fonction la crée automatiquement. Si tu veux que ta 2ème fenêtre ressemble à celle de WinHelp alors là il faut faire attention à plusieurs choses.
- Si les 2 fenêtres sont de la même classe, RegisterClassEx() ne doit être appelée qu'une seule fois.
- La 2ème fenêtre ne doit pas être créée avec le style WS_CHILD afin qu'elle soit indépendante.
- La 2ème fenêtre doit avoir sa propre procédure de gestion des messages.
- Etc...

Si tu as un fichier HLP, je pense qu'il est préférable d'utiliser la fonction WinHelp(). Pour cela il te suffira d'appeler cette fonction à la suite du clic sur AIDE. C'est beaucoup plus facile et pratique.



Classé sous : application, possible, recherche, sources, menus

Participer à cet échange

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
SITE MARCHAND LOCATION...
Budget : 3 000€
SITE MARCHAND POUR HOTEL
Budget : 4 000€

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS