begin process at 2012 05 29 17:11:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Autre

 > 

Problème de Focus entre fenêtre principal et Enfant


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de Focus entre fenêtre principal et Enfant

vendredi 5 juin 2009 à 23:19:25 | Problème de Focus entre fenêtre principal et Enfant

TeniX

Membre Club
Salut,

Voila mon problème est que sur ma fenêtre enfant je n'arrive à dire jamais à avoir la "Title bar" en bleu non grisé,
j'ai testé plusieurs méthode dont le SetFocus etc , mais rien à faire.

Niveau code j'ai en fenêtre parent :    

   MainHWND = CreateWindowEx (0,
                           szClassName,
                           "Main Window",
                           WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_VISIBLE,
                           CW_USEDEFAULT,
                           CW_USEDEFAULT,
                           CW_USEDEFAULT,
                           CW_USEDEFAULT,
                           NULL,
                           NULL,
                           hThisInstance,
                           &Parent);

----------------------------------------------------------------------
Et enfant:

                      hwndStatus = CreateWindowEx (WS_EX_TOOLWINDOW
                                   ,szStatusName,"Enfant",WS_CHILD | WS_BORDER | WS_CAPTION  | WS_MINIMIZEBOX | WS_OVERLAPPED,
                                   0,0,800,600,
                                   hwnd,
                                   (HMENU) 50,
                                   (HINSTANCE) GetWindowLong(hwnd,GWL_HINSTANCE),
                                   NULL);
----------------------------------------------------------------------

J'ai tester plein de méthode citer dans ce poste: http://www.cppfrance.com/forum/sujet-WS_POPUP-FOCUS_728551.aspx
Comme la Fontion SetParent , mais avec celle-ci ma fenetre enfant n'apparait plus.

J'ai essayé plein de Windows Style comme le WS_EX_TOPMOST , mais rien y fait .

Si vous avec une idée , voila un petit screen du Pb : http://pkzm62.free.fr/essai222.JPG

Merci d'avance.


Ciao
vendredi 5 juin 2009 à 23:42:50 | Re : Problème de Focus entre fenêtre principal et Enfant

juju12

Pour faire ce genre de choses, il faut utiliser le MDI (Multi Document Interface), donc notamment WS_EX_MDICHILD.
samedi 6 juin 2009 à 12:32:30 | Re : Problème de Focus entre fenêtre principal et Enfant

TeniX

Membre Club
Merci de l'aiguillage ,je vais faire mes recherches et déposer une exemple si je trouve

Ciao
samedi 6 juin 2009 à 18:05:35 | Re : Problème de Focus entre fenêtre principal et Enfant

TeniX

Membre Club
Réponse acceptée !
Pour les intéressé voila un Simple code pour Crée une fenêtre MDI avec CreateWindow()
Testé sous Dev-cpp.

#include <windows.h>

#define IDM_MDICLIENT                   101
#define IDM_WINDOWCHILD           102
#define IDM_BROWSE                        103

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK ChildMDI(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);

char szClassName[ ] = "WindowsApp";
char szChildDialog[]="WindowChild";

void CreateMDI();

HINSTANCE hInst;
HWND MainHwnd;
HWND hwndMDI;

int WINAPI WinMain (HINSTANCE hThisInstance,HINSTANCE hPrevInstance,LPSTR lpszArgument,int nFunsterStil)
{
    HWND hwnd;          
    MSG messages;           
    WNDCLASS wc;      
   
    HMENU hSubMenu2=CreatePopupMenu();
    AppendMenu(hSubMenu2,MF_STRING,IDM_BROWSE,"&Ouvrir");
   
    HMENU hMenu=CreateMenu();
    AppendMenu(hMenu,MF_POPUP,(UINT_PTR)hSubMenu2,"&Fichier");

    wc.style=CS_SAVEBITS|CS_DBLCLKS;
    wc.lpfnWndProc=(WNDPROC)WndProc;
    wc.cbClsExtra=0;
    wc.cbWndExtra=0;
    wc.hInstance=hThisInstance;
    wc.hIcon=LoadIcon((HINSTANCE)NULL,IDI_APPLICATION);
    wc.hCursor=LoadCursor((HINSTANCE)NULL,IDC_ARROW);
    wc.hbrBackground=(HBRUSH)(COLOR_WINDOWFRAME);
    wc.lpszMenuName=NULL;
    wc.lpszClassName="MainWndClass";

    if(!RegisterClass(&wc))
    return 0;
   
    wc.lpfnWndProc=(WNDPROC)ChildMDI;
    wc.hIcon=NULL;
    wc.lpszMenuName=(LPCTSTR)NULL;
    wc.cbWndExtra=0;
    wc.lpszClassName=szChildDialog;
   
    if(!RegisterClass(&wc))
    return 0;
   
    hInst=hThisInstance;

    MainHwnd=CreateWindow(
         "MainWndClass",
           "Main Window",
        WS_CAPTION|WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_SYSMENU|WS_VISIBLE|WS_SIZEBOX|WS_CLIPCHILDREN,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        600,
        600,
        (HWND)NULL,
        hMenu,
        hInst,
        (LPVOID)NULL);

      ShowWindow (hwnd, nFunsterStil);
   
      while (GetMessage (&messages, NULL, 0, 0))
    {
        TranslateMessage(&messages);
        DispatchMessage(&messages);
    }
    return messages.wParam;
}

LRESULT CALLBACK WndProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
    switch(uMsg)
    {
    case WM_CREATE:
        {
            CLIENTCREATESTRUCT ccs;
            ccs.hWindowMenu=GetSubMenu(GetMenu(hwnd),1);
            ccs.idFirstChild=IDM_WINDOWCHILD;
           
            hwndMDI=CreateWindow(
                "MDICLIENT",
                (LPCTSTR)NULL,
                WS_CHILD|WS_CLIPCHILDREN|WS_VSCROLL|WS_HSCROLL,
                0,0,0,0,
                hwnd,
                (HMENU)IDM_MDICLIENT,
                hInst,
                (LPSTR)&ccs);
   
                ShowWindow(hwndMDI,SW_SHOW);
        }
        break;
   case WM_COMMAND:
        {
        if(LOWORD(wParam)==IDM_BROWSE)
            {
                CreateMDI();
            }
            else
            {
                return DefFrameProc(hwnd,hwndMDI,uMsg,wParam,lParam);
            }
        }
        break;
    case WM_CLOSE:
        {
            PostQuitMessage(0);
        }
        break;
    case WM_QUIT:
        {
            PostQuitMessage(0);
        }
        break;
    default:

        return DefFrameProc(hwnd,hwndMDI,uMsg,wParam,lParam);
    }

    return 0;
}
LRESULT CALLBACK ChildMDI(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
    switch(uMsg)
    {
    case WM_CLOSE:
        {
        }
        return DefMDIChildProc(hwnd,uMsg,wParam,lParam);
    default:
        return DefMDIChildProc(hwnd,uMsg,wParam,lParam);
    }
}
void CreateMDI()
{
    MDICREATESTRUCT mcs;
    mcs.szTitle="Fenêtre MDI";
    mcs.szClass=szChildDialog;
    mcs.hOwner=hInst;
    mcs.x=10;
    mcs.y=10;
    mcs.cx=400;
    mcs.cy=400;
    mcs.style=0;
    HWND NewHwndMDI;
    NewHwndMDI=(HWND)SendMessage(hwndMDI,WM_MDICREATE,0,(LONG)(LPMDICREATESTRUCT)&mcs);
}

Ciao


Cette discussion est classée dans : fenêtre, ws, enfant, usedefault, cw


Répondre à ce message

Sujets en rapport avec ce message

Alternative au style WS_EX_LAYERED sur une fenetre enfant ? [ par shuttleur ] Bonjour à tous,Je cherche à faire un effet de halo autour d'une fenêtre.Cette fenêtre n'a que sa partie cliente visible. En fait, il me faudrait pouvo WS_POPUP et focus [ par vecchio56 ] C'est un problème assez compliqué a expliquer... J'ai remarqué que les menus (obtenus par exemple avec TrackPopupMenu) sont des fenêtre popup (avec le [Win32] Comment combiner status bar et scroll bar ? [ par beausoleil ] Bonjour à tous,Voilà mon problème : je cherche à créer une fenêtre possédant à la fois une barre d'état et des barres de défilement.Je crée ma fenêtre Creation controle sans connaitre largeur [ par fredsor ] Bonjour,J'aimerais pouvoir créer une fenetre contenant un nombre x de boutons, editbox ou static control, a partir de parametre donnés en entrée. Cepe Problème de barre de status dans une application MDI [ par julien_boss ] Bonjour à tous :en réalité, je ne sais pas si mon problème est du à une barre de status, mais étant donné qu'il est apparu après la création de celle- PB Affichage ListView [ par Taron31 ] Bonjour, j'ai besoin dans mon programme d'une ListView, problème j'ai cherché pas mal de sources sur ce site et j'en ai essayé et ça n'a pas l'air de Fenetre par dessus barre des taches [ par SnOOpss ] Bonjour je galere encore pour choisir mes styles de fenetre.     hDlgClient  = CreateWindow (szAppName2, TEXT ("Client"),                          WS_ fenêtre enfant et un edite [ par snpier wolf ] Bonjour à tous,j'ais fait un petit programme en W32 (c'est mon journal intime  )le soussi est que, quand on le lance, la petite fenêtre enfant est bie Quelques problèmes avec MDI quand plusieurs fenêtres filles [ par ArthurAuguste ] Bonjour, Tout d'abord, je n'ai aucun problème lorsque je n'ai qu'une fenêtre fille, mais dès que j'en ai une deuxième je commence à avoir des mélanges Ascenseur vertical [ par ArthurAuguste ] Bonjour, Me voici encore avec mes questions tordues: Je voudrais que l'ascenseur vertical apparaisse lorsque ma fenêtre est trop petite pour afficher


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 6,973 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales