Accueil > Forum > > > > Les MDI , c'est que pour les documents text? (NO MFC !!!)
Les MDI , c'est que pour les documents text? (NO MFC !!!)
mercredi 12 juillet 2006 à 10:11:36 |
Les MDI , c'est que pour les documents text? (NO MFC !!!)

rompelstilchen
|
J'essaye de creer une MDI (sans MFC) mais quant je crée un boutton dans la fenetre enfant, il n'apparait pas si je change le wnd handle vers celui de la fenetre parent, ça marche les fenetres enfants ne peuvent pas etre modifiees? on ne peut pas coller de composants dessus??? merci pour votre aide PS : win32 api sans MFC, merci. oui je sais je deteste les MFC :) et puis ça sert à kedale :)
|
|
mercredi 12 juillet 2006 à 20:52:11 |
Re : Les MDI , c'est que pour les documents text? (NO MFC !!!)

gagah1
|
Montre nous le code pour voir où ne va pas.
|
|
mercredi 12 juillet 2006 à 23:48:23 |
Re : Les MDI , c'est que pour les documents text? (NO MFC !!!)

rompelstilchen
|
ok no worries, j'ai fini par trouver un exemple sur le web qui fonctionne pas facile la win32 api, surtout sans exemple qui marchent et pour peu que l'on se trouve dans un cas particulier, ou que l'on oublie un schnol... j'ai beau comparer avec ma premiere methode, je ne comprends pas ce qui ne fonctionnait pas
[CODE] #include <windows.h> // Obliger pour les fenêtres #include <commctrl.h> #include <stdio.h> #include <stdlib.h> #include <GL/gl.h> #include <GL/glu.h> #include <math.h> #include <time.h> // Procédure traitant les messages de la fenêtre principale LRESULT CALLBACK FrameProc(HWND hFrame,UINT Message,WPARAM wParam,LPARAM lParam); // Procédure traitant les messages de la fenêtre fille LRESULT CALLBACK ChildProc(HWND hChild,UINT Message,WPARAM wParam,LPARAM lParam);
HINSTANCE hInst; HWND hMDIFrame; // Handle de la fenêtre principale HWND hMDIClient; // Handle de la zone client HWND hMDIChild; // Handle de la fenêtre fille
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nSowhCmd) { hInst = hInstance; // Globalise l'instante WNDCLASSEX wc; // Classe pour fenêtre InitCommonControls(); /** Classe pour la fenêtre principale **/ wc.cbSize=sizeof(wc); wc.cbClsExtra=0; wc.cbWndExtra=0; wc.style=0; wc.hInstance=hInst; wc.hCursor=LoadCursor(NULL,IDC_ARROW); wc.hIcon=LoadIcon(NULL,IDI_APPLICATION); wc.hIconSm=LoadIcon(NULL,IDI_APPLICATION); wc.lpfnWndProc=(WNDPROC)FrameProc; wc.lpszMenuName=NULL; wc.lpszClassName="MDI Frame"; wc.hbrBackground=(HBRUSH) (COLOR_APPWORKSPACE+1); if( !RegisterClassEx(&wc) ) return 0;
/** Classe pour les fenêtre fille **/ /* wc.hbrBackground=(HBRUSH) (COLOR_BTNFACE+1); wc.lpfnWndProc=(WNDPROC)ChildProc; wc.lpszClassName="MDI Child";*/ wc.cbSize = sizeof(WNDCLASSEX); wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC | CS_DBLCLKS; wc.lpfnWndProc = (WNDPROC)ChildProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_3DSHADOW+1); // Background color (Only seen if OGL fails) wc.lpszMenuName = NULL; wc.lpszClassName = "MDI Child"; if( !RegisterClassEx(&wc) ) return 0;
/** Création de la fenêtre mère (principale) **/ hMDIFrame = CreateWindowEx( WS_EX_CLIENTEDGE, "MDI Frame", "RobotSim", WS_VISIBLE|WS_CLIPCHILDREN | WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 500, 400, NULL, NULL, hInst, 0);
/** Création de la fenêtre fille **/ /* hMDIChild = CreateWindowEx( WS_EX_TOOLWINDOW, "MDI Child", "Tools", WS_CHILD | WS_VISIBLE | WS_OVERLAPPEDWINDOW, // Ne pas oublier le WS_CHILD 0, 0, 200, 150, hMDIClient, NULL, hInst, 0);*/
CREATESTRUCT cs; ZeroMemory(&cs, sizeof(CREATESTRUCT));
hMDIChild= CreateWindowEx( WS_EX_MDICHILD, "MDI Child", "Tools", WS_CHILD | WS_VISIBLE | WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hMDIClient, NULL, hInst, &cs );
PIXELFORMATDESCRIPTOR pfd; ZeroMemory(&pfd, sizeof(pfd)); pfd.nSize = sizeof(pfd); pfd.nVersion = 1; pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER; pfd.iPixelType = PFD_TYPE_RGBA; pfd.cColorBits = 24; pfd.cDepthBits = 16; pfd.iLayerType = PFD_MAIN_PLANE; int iFormat = ChoosePixelFormat(GetDC(hMDIFrame), &pfd); SetPixelFormat(GetDC(hMDIFrame), iFormat, &pfd); // Set pixel format for this child HGLRC hRC = wglCreateContext(GetDC(hMDIFrame)); // Set childs rendering context wglMakeCurrent(GetDC(hMDIFrame), hRC); glCullFace(GL_BACK); glEnable(GL_CULL_FACE); glClearColor(0.0, 0.0, 0.0, 0.0); glClearDepth(1.0); glDepthFunc(GL_LESS); glEnable(GL_DEPTH_TEST); glShadeModel(GL_SMOOTH); glEnable(GL_NORMALIZE); float fMatAmbient[] = {0.8, 0.8, 0.8, 1.0}; float fMatDiffuse[] = {0.8, 0.8, 0.8, 1.0}; float fMatSpecular[] = {0.9, 0.9, 0.9, 1.0}; float fMatEmmision[] = {0.0, 0.0, 0.0, 1.0}; float fMatShininess[] = {100.0}; glMaterialfv(GL_FRONT, GL_AMBIENT, fMatAmbient); glMaterialfv(GL_FRONT, GL_DIFFUSE, fMatDiffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, fMatSpecular); glMaterialfv(GL_FRONT, GL_EMISSION, fMatEmmision); glMaterialfv(GL_FRONT, GL_SHININESS, fMatShininess); float fLightAmbient[] = {0.2, 0.2, 0.2, 1.0}; glLightfv(GL_LIGHT0, GL_AMBIENT, fLightAmbient); float fLightPosition[] = {200.0, 0.0, 0.0, 1.0}; glLightfv(GL_LIGHT0, GL_POSITION, fLightPosition); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glEnable(GL_TEXTURE_2D);
ShowWindow(hMDIChild,SW_SHOW); SetFocus(hMDIChild);
MSG msg; while( GetMessage(&msg,NULL,0,0) != NULL ) { TranslateMessage(&msg); DispatchMessage(&msg); }
return 0; }
LRESULT CALLBACK FrameProc(HWND hFrame,UINT Message,WPARAM wParam,LPARAM lParam) { switch(Message) { case WM_PAINT: { int iThisChild; PAINTSTRUCT ps; BeginPaint(hFrame, &ps); SwapBuffers(GetDC(hFrame)); EndPaint(hFrame, &ps); } break; case WM_CREATE: /****** Quand la fenêtre principale se créée, il faut créer la zone client pour y mettre les fenêtre fille ******/ CLIENTCREATESTRUCT css; // Inconvénient : je ne sais toujours pas à quoi sert cette structure ! css.hWindowMenu=NULL; css.idFirstChild=0; /****** Création de la zone client ******/ hMDIClient = CreateWindowEx(WS_EX_CLIENTEDGE, "MDICLIENT", (LPCSTR)NULL, WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, // Ne pas oubliez le WS_CHILD CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hFrame, NULL, hInst, (LPSTR)&css); ShowWindow(hMDIClient,SW_SHOW); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; default: return DefFrameProc(hFrame,hMDIClient,Message,wParam,lParam); } }
LRESULT CALLBACK ChildProc(HWND hChild,UINT Message,WPARAM wParam,LPARAM lParam) { switch(Message) { /* case WM_CREATE: { HWND button = CreateWindow( "BUTTON", "Class Options", BS_LEFT|BS_PUSHBUTTON| WS_VISIBLE| WS_CHILD, 10, 10, 105, 100, hMDIChild, NULL, hInst, NULL); /* HWND hstatic = CreateWindow("STATIC", "MyPicture", WS_CHILD | WS_VISIBLE, 10, 10, 100, 100, hMDIChild, NULL, hInst, NULL); */ /* return 0; } */ case WM_CLOSE: // C'est juste une petite touche d'intéractivité MessageBox(hMDIFrame,"Ben pourquoi la femer ???\nElle est bien là !","Bah pourquoi ???",MB_OK|MB_ICONEXCLAMATION); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; default: return DefMDIChildProc(hChild,Message,wParam,lParam); } } [/CODE]
|
|
mercredi 12 juillet 2006 à 23:49:41 |
Re : Les MDI , c'est que pour les documents text? (NO MFC !!!)

rompelstilchen
|
bon la c la derniere version, mais pas moyen de faire apparaitre le pushbutton dans la mdi
|
|
jeudi 13 juillet 2006 à 11:21:40 |
Re : Les MDI , c'est que pour les documents text? (NO MFC !!!)

gagah1
|
Réponse acceptée !
C'est en desordre total. Voici le code simplifié. Essaie d'adapter à ce que tu veux. Là je vois des en-têtes OpenGL., je sais pas ce que tu veux avec.
#include <windows.h>
/***************************************************************** * Declaration des fonctions globales * *****************************************************************/
// Procédure traitant les messages de la fenêtre principale LRESULT CALLBACK FrameProc(HWND hFrame,UINT Message,WPARAM wParam,LPARAM lParam); // Procédure traitant les messages de la fenêtre fille LRESULT CALLBACK ChildProc(HWND hChild,UINT Message,WPARAM wParam,LPARAM lParam);
/***************************************************************** * Declaration des variables globales * *****************************************************************/
HINSTANCE hInst; HWND hMDIFrame; // Handle de la fenêtre principale HWND hMDIClient; // Handle de la zone client HWND hMDIChild; // Handle de la fenêtre fille
/***************************************************************** * Point d'entrée de l'application * *****************************************************************/
int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil) { HWND hwnd; MSG messages; WNDCLASSEX wincl; hInst = hThisInstance;
wincl.hInstance = hThisInstance; wincl.lpszClassName = "MDI_Frame"; wincl.lpfnWndProc = FrameProc; wincl.style = CS_DBLCLKS; wincl.cbSize = sizeof (WNDCLASSEX); wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION); wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION); wincl.hCursor = LoadCursor (NULL, IDC_ARROW); wincl.lpszMenuName = NULL; wincl.cbClsExtra = 0; wincl.cbWndExtra = 0; wincl.hbrBackground = GetSysColorBrush(COLOR_BACKGROUND); if (!RegisterClassEx (&wincl)) return 0; wincl.lpszClassName = "MDI_Child"; wincl.lpfnWndProc = ChildProc; wincl.style = CS_DBLCLKS; wincl.hbrBackground = GetSysColorBrush(COLOR_BTNFACE); if (!RegisterClassEx (&wincl)) return 0; hMDIFrame = CreateWindowEx (0, "MDI_Frame", "RobotSim", WS_OVERLAPPEDWINDOW|WS_CLIPCHILDREN, CW_USEDEFAULT, CW_USEDEFAULT, 544, 375, HWND_DESKTOP, NULL, hThisInstance, NULL);
ShowWindow (hMDIFrame, nFunsterStil); UpdateWindow(hMDIFrame);
while (GetMessage(&messages, NULL, 0, 0)) { TranslateMessage(&messages); DispatchMessage(&messages); }
return messages.wParam; }
/************************************************************************************ * Traitement des messages de la fenêtre principale * ************************************************************************************/
LRESULT CALLBACK FrameProc(HWND hFrame, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_CREATE: CLIENTCREATESTRUCT ccs; MDICREATESTRUCT mcs; ccs.hWindowMenu = NULL; ccs.idFirstChild = 0; hMDIClient = CreateWindowEx(WS_EX_CLIENTEDGE, "mdiclient", NULL, WS_CHILD|WS_CLIPCHILDREN|WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hFrame, NULL, hInst, (LPVOID)&ccs);
mcs.szTitle = "Nom de fenetre fille"; mcs.szClass = "MDI_Child"; mcs.hOwner = hInst; mcs.x = mcs.y = CW_USEDEFAULT; mcs.cx = mcs.cy = 300; mcs.style = MDIS_ALLCHILDSTYLES;
hMDIChild = (HWND)SendMessage(hMDIClient, WM_MDICREATE, 0, (LONG)&mcs); break; case WM_SIZE: MoveWindow(hMDIClient, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE); break; case WM_DESTROY: PostQuitMessage (0); break; default: return DefFrameProc(hFrame, hMDIClient, message, wParam, lParam); } return 0; }
/************************************************************************************ * Traitement des messages de la fenêtre fille * ************************************************************************************/
LRESULT CALLBACK ChildProc(HWND hChild, UINT Message, WPARAM wParam, LPARAM lParam) { HWND button; switch(Message) { case WM_CREATE: button = CreateWindow( "BUTTON", "Class Options", BS_LEFT|BS_PUSHBUTTON| WS_VISIBLE| WS_CHILD, 10, 10, 105, 100, hChild, NULL, hInst, NULL);
break; case WM_CLOSE: MessageBox(hChild,"Ben pourquoi la femer ???\nElle est bien là !","Bah pourquoi ???", MB_OK|MB_ICONEXCLAMATION); DestroyWindow(hChild); break; } return DefMDIChildProc(hChild, Message, wParam, lParam); }
|
|
jeudi 13 juillet 2006 à 17:43:49 |
Re : Les MDI , c'est que pour les documents text? (NO MFC !!!)

rompelstilchen
|
super merci je voulais faire des mdi opengl(entre autres)
|
|
jeudi 13 juillet 2006 à 23:45:22 |
Re : Les MDI , c'est que pour les documents text? (NO MFC !!!)

rompelstilchen
|
juste une question
je ne comprends toujours pas ce qui ne fonctionnait pas dans mon code??
(en tout cas merci, je ne savais pas que certains avait le courage de se tapper le code de qqun d'autre pour le faire fonctionner un grand merci Gaga ;) )
|
|
vendredi 14 juillet 2006 à 10:01:29 |
Re : Les MDI , c'est que pour les documents text? (NO MFC !!!)

gagah1
|
Comme je viens de dire, ton code est en desordre. Essaie de proceder étape par étape. Ce que tu as oublié le plus essentiel c'est la création de la fenetre MDI : hMDIChild = (HWND)SendMessage(hMDIClient, WM_MDICREATE, 0, (LONG)&mcs);
|
|
vendredi 14 juillet 2006 à 11:28:14 |
Re : Les MDI , c'est que pour les documents text? (NO MFC !!!)

rompelstilchen
|
mais j'utilise :
/* hMDIChild = CreateWindowEx(
WS_EX_TOOLWINDOW,
"MDI Child",
"Tools",
WS_CHILD | WS_VISIBLE | WS_OVERLAPPEDWINDOW, // Ne pas oublier le WS_CHILD
0,
0,
200,
150,
hMDIClient,
NULL,
hInst,
0);*/
c'est en commentaire, mais même sans commentaires, ça ne le fait pas, il cree le child mais le push button (décommenté ;) ) n'apparaisait pas.j'imagine qu'il faut d'office faire un send message. merci p ton aide :)
|
|
vendredi 14 juillet 2006 à 11:28:15 |
Re : Les MDI , c'est que pour les documents text? (NO MFC !!!)

rompelstilchen
|
mais j'utilise :
/* hMDIChild = CreateWindowEx(
WS_EX_TOOLWINDOW,
"MDI Child",
"Tools",
WS_CHILD | WS_VISIBLE | WS_OVERLAPPEDWINDOW, // Ne pas oublier le WS_CHILD
0,
0,
200,
150,
hMDIClient,
NULL,
hInst,
0);*/
c'est en commentaire, mais même sans commentaires, ça ne le fait pas, il cree le child mais le push button (décommenté ;) ) n'apparaisait pas.j'imagine qu'il faut d'office faire un send message. merci p ton aide :)
|
|
Cette discussion est classée dans : text, fenetre, mfc, mdi, documents
Répondre à ce message
Sujets en rapport avec ce message
taille et position fenetre mfc mdi visual c++ [ par sofbboy ]
Bonjour à tous, Je suis en train de faire une appli mdi mfc. Je cherche à changer la taille et la position des fentres que je crée. Je crée en fait 2
[sans MFC] detruire fenetre fille [ par sacksith ]
Bonjour,Après avoir déclaré une nouvelle classe, WINDCLASSEX, je crée une fenêtre HWND FentreFille=CreateWindowEx(avec la nouvelle classe)ok tout va b
mdi menu contextuel [ par agora_13 ]
Bonjour,J'ai une application contenant une fenetre mere et 2 fenetres filles (childframe). J'ai un probleme au niveau de l'affichage des clics droits.
MDI avec MFC [ par sebthieti ]
J'aimerais tout simplement savoir quelle fonction utiliser pour ouvrir une fenetre fille.Merci
Iconifier ou minimiser une fenetre en VC++ (Avec MFC de preference) [ par JayJay91 ]
Bonjour a tous !!J'ai une petite question je voudrais savoir comment minimiser une fenetre en icone à coté de l'horloge .. exemple d'application : MSN
Prog Win32 sans MFC affichant plusieurs feuilles non MDI [ par LaPatoshe ]
SalutJ'ai créé un programme de base affichant une feuille sans utiliser les MFC. J'ai donc 2 Procédures:_ La principale: int WINAPI WinMain (HINSTANCE
Fenetre Mediaplayer [ par aghrora ]
@ghor@Quelqu'un sait-il comment les petits bilous font pour faire une fenetre comme celle de media player:- Est-ce du flash dans une fenetre mfc- Que
MFC, SetWindowRgn... [ par nobpn ]
Bonjour a tous,Actuellement etudiant, j'ai un projet à developper sous Visual C++ en utilisant les MFC.Existe il un moyen pour changer la forme des fe
Graph sous MFC [ par 69lion69 ]
Salut c un petit soucis la dessus :j'utilise ce morceau de code pour afficher un pixel pour afficher parla suite des lignes mais le prob n'est pas le
debutant mfc [ par orj ]
Je voudrais creer une fenetre a partir dune autre fenetre, pour cela le veux utiliser la fonction create de la classe CWindow mais pour cela il me fau
Livres en rapport
|
Derniers Blogs
[DESIGN PATTERNS] PARTIE 2: DIP: DEPENDENCY INVERSION PRINCIPLE[DESIGN PATTERNS] PARTIE 2: DIP: DEPENDENCY INVERSION PRINCIPLE par tja
C'est le dernier principe des principes du Design Orienté Objet (The Principles of Object Oriented Design) fondés par Robert C. Martin plus connu sous le pseudonyme d'Uncle Bob.
l'image empruntée de LosTechies.
Je ne traite pas les principes dans...
Cliquez pour lire la suite de l'article par tja TECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURSTECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURS par ROMELARD Fabrice
Animé par: Laurent Cotton Le développement dans SharePoint 2010 passe par plusieurs axes qui seront évoqués dans cette session, mais plus particulièrement les développements simples lié au besoin Business Business Connectivity Services Ce BCS es...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOURTECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOUR par ROMELARD Fabrice
Cette session est la dernière pleinière de ces 3 jours de TechDays Paris 2010. Généralement, cette troisième journée est plus axée sur l'avenir vu par Microsoft. Après un retour sur l'avenir vu par la Science Fiction ou par ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : WIN APIRE : WIN API par omarino_007
Cliquez pour lire la suite par omarino_007
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|