Les MDI , c'est que pour les documents text? (NO MFC !!!)

Résolu
rompelstilchen
Messages postés
14
Date d'inscription
lundi 10 juillet 2006
Statut
Membre
Dernière intervention
27 juillet 2007
- 12 juil. 2006 à 10:11
yohan49
Messages postés
380
Date d'inscription
samedi 22 janvier 2005
Statut
Membre
Dernière intervention
13 août 2011
- 27 oct. 2006 à 09:58
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 :)

15 réponses

gagah1
Messages postés
509
Date d'inscription
samedi 28 juin 2003
Statut
Membre
Dernière intervention
3 août 2010

13 juil. 2006 à 11:21
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);
}
3
rompelstilchen
Messages postés
14
Date d'inscription
lundi 10 juillet 2006
Statut
Membre
Dernière intervention
27 juillet 2007

16 juil. 2006 à 18:52
bon allez tant qu'on y est :
ça fonctionne (juste une bare bleu ciel entre les 2 statics, fo que je regarde à ça)

#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
HWND ToolsStatic1;
HWND ToolsStatic2;


/*****************************************************************
* Point d'entrée de l'application
*
*****************************************************************/


int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance,
                    LPSTR lpszArgument, int nFunsterStil)
{
    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 (&amp;wincl))
        return 0;
    
    wincl.lpszClassName = "MDI_Child";
    wincl.lpfnWndProc = ChildProc;
    wincl.style = CS_DBLCLKS;
    wincl.hbrBackground = GetSysColorBrush(COLOR_BTNFACE);
    
    if (!RegisterClassEx (&amp;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(&amp;messages, NULL, 0, 0))
    {
        TranslateMessage(&amp;messages);
        DispatchMessage(&amp;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;
       
   ToolsStatic1=CreateWindow("STATIC","STATIC 1",WS_CHILD | WS_VISIBLE,  0,0,150,500,hFrame,0,0,0); 
   ToolsStatic2=CreateWindow("STATIC","STATIC 2",WS_CHILD | WS_VISIBLE,155,0,640,500,hFrame,0,0,0); 


            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,
            ToolsStatic2, NULL, hInst, (LPVOID)&amp;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)&amp;mcs);
            break;
  case WM_SIZING:
   {
    LPRECT rect=(LPRECT)lParam;
    int dx=rect->right-rect->left;
    int dy=rect->bottom-rect->top;
    MoveWindow(ToolsStatic1,  0, 0, 150,dy, TRUE);
    MoveWindow(ToolsStatic2,155, 0, dx-155,dy, TRUE);
    MoveWindow(hMDIClient,0, 0, dx-155,dy, TRUE);
   }
   break;
        case WM_SIZE:
   {
    int dx=LOWORD(lParam);
    int dy=HIWORD(lParam);
    MoveWindow(ToolsStatic1,  0, 0, 150,dy, TRUE);
    MoveWindow(ToolsStatic2,155, 0, dx-155,dy, TRUE);
    MoveWindow(hMDIClient,0, 0, dx-155,dy, 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);
}


3
gagah1
Messages postés
509
Date d'inscription
samedi 28 juin 2003
Statut
Membre
Dernière intervention
3 août 2010

12 juil. 2006 à 20:52
Montre nous le code pour voir où ne va pas.
0
rompelstilchen
Messages postés
14
Date d'inscription
lundi 10 juillet 2006
Statut
Membre
Dernière intervention
27 juillet 2007

12 juil. 2006 à 23:48
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

#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(&amp;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(&amp;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(&amp;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,
                    &amp;cs
                    );


                    PIXELFORMATDESCRIPTOR pfd;
                    ZeroMemory(&amp;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), &amp;pfd);
                    SetPixelFormat(GetDC(hMDIFrame), iFormat, &amp;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(&amp;msg,NULL,0,0) != NULL )
 {
  TranslateMessage(&amp;msg);
  DispatchMessage(&amp;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, &amp;ps);
            SwapBuffers(GetDC(hFrame));
            EndPaint(hFrame, &amp;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)&amp;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);
 }
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rompelstilchen
Messages postés
14
Date d'inscription
lundi 10 juillet 2006
Statut
Membre
Dernière intervention
27 juillet 2007

12 juil. 2006 à 23:49
bon la c la derniere version, mais pas moyen de faire apparaitre le pushbutton dans la mdi
0
rompelstilchen
Messages postés
14
Date d'inscription
lundi 10 juillet 2006
Statut
Membre
Dernière intervention
27 juillet 2007

13 juil. 2006 à 17:43
super merci
je voulais faire des mdi opengl(entre autres)
0
rompelstilchen
Messages postés
14
Date d'inscription
lundi 10 juillet 2006
Statut
Membre
Dernière intervention
27 juillet 2007

13 juil. 2006 à 23:45
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 ;)   )
0
gagah1
Messages postés
509
Date d'inscription
samedi 28 juin 2003
Statut
Membre
Dernière intervention
3 août 2010

14 juil. 2006 à 10:01
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);
0
rompelstilchen
Messages postés
14
Date d'inscription
lundi 10 juillet 2006
Statut
Membre
Dernière intervention
27 juillet 2007

14 juil. 2006 à 11:28
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 :)
0
rompelstilchen
Messages postés
14
Date d'inscription
lundi 10 juillet 2006
Statut
Membre
Dernière intervention
27 juillet 2007

14 juil. 2006 à 11:28
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 :)
0
rompelstilchen
Messages postés
14
Date d'inscription
lundi 10 juillet 2006
Statut
Membre
Dernière intervention
27 juillet 2007

14 juil. 2006 à 11:28
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 :)
0
gagah1
Messages postés
509
Date d'inscription
samedi 28 juin 2003
Statut
Membre
Dernière intervention
3 août 2010

14 juil. 2006 à 16:49
Tu peux utiliser CreateWindowEx(WS_EX_MDICHILD, ...); en specifiant WS_EX_MDICHILD sur le 1er argument.
0
rompelstilchen
Messages postés
14
Date d'inscription
lundi 10 juillet 2006
Statut
Membre
Dernière intervention
27 juillet 2007

16 juil. 2006 à 17:03
J'hésite à poster un nouveau thread ou a ré-enchérir ici car Gagah, tu as déjà fait bcp pour m'éclairer, mais j'ai une question (à qui se sent l'âme de répondre):
comment fait on pour creer le client mdi non pas en tant qu'enfant de la fenetre principale, mais d'une sous-fenetre?
imaginons un static de 150 de large et qui va de haut en bas de l'application et à coté ... un autre static ?? auquel j'assigne le MDI client j'imagine...
genre 3DSMAX avec la toolbox a droite (ou a gauche )

ps: vu que mon appli va évoluer, je comptais uploader le code au fur et a mesure (en tout cas pour le GUI ;) ).ça peut servir à ceux qui voudraient faire un truc dans le meme genre. c plus facile en cbuilder et autre mais je prefere le raw c++. au moins je connais tous les recoins du code.enfin c mon avis... pour info il s'agit d'un environement 3d de simulation robotique AI avec des neurones/perceprons/SOM/ART... le tout avec Newton pour la physique et la possibilite d'importer des composants ldraws, des mesh blender, et des exports/imports vers Newton playground.

je sais Newton n'est pas gratuit mais ODE... disons j'attends la release suivante ;)

o fait si ce soft existe, gratos, merci de me le faire savoir, histoire que je ne perde pas mon temps. pas moyen de faire fonctionner PyRo sur mon pc :( et non je n'installerai pas linux, lol
0
rompelstilchen
Messages postés
14
Date d'inscription
lundi 10 juillet 2006
Statut
Membre
Dernière intervention
27 juillet 2007

16 juil. 2006 à 17:07
je demmandais si j'allais utiliser un splitter entre les deux statics, eh bien ce composent n'existe tout simplement pas. lol

en anglais pour ceux qui sont curieux : http://www.catch22.net/tuts/splitter.asp
0
yohan49
Messages postés
380
Date d'inscription
samedi 22 janvier 2005
Statut
Membre
Dernière intervention
13 août 2011
7
27 oct. 2006 à 09:58
salut les gars

heu ben moi je bloc sur l'affichage des trois boutons (retrecir,agrandir,fermer) qui sur les applications s'ajoute au menu de la frame principale quand on agrandis une mdi fille

quelqu'un voit ??
0