[WinAPI] Ce este o fereasta "child"?

Folosire Windows API in programe C/C++ (forum moderat)
Post Reply
User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3776
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

[WinAPI] Ce este o fereasta "child"?

Post by Ovidiu Cucu » 31 Jan 2010, 14:34

Q: Ce este o fereasta child?

A: O fereastra child (copil) este o fereastra care are setat stilul WS_CHILD si are urmatoarele proprietati:
  • are o fereastra parent (parinte);
  • sta intotdeauna in zona client a ferestrei parinte (nu poate fi afistata in afara);
  • daca fereastra parinte este mutata, fereastra copil este mutata in acelas fel (pozitia ei relativa la zona client a parintelui nu se schimba);
  • este distrusa atunci cand se distruge fereastra parinte.
Note
  • pentru a crea o fereasta child, trebuie setat stilul WS_CHILD si pasat un handle la parinte in apelul functiei CreateWindow sau CreateWindowEx;
    Exemplu

    Code: Select all

    // create a child window
    HWND hWndChild = CreateWindow(_T("BUTTON"), _T("Push"),
                                  WS_VISIBLE|WS_BORDER|WS_CHILD, // WS_CHILD style is set
                                  5, 6, 80, 30,
                                  hWndParent,                    // parent window handle
                                 (HMENU)1999, hInstance, NULL);
  • De obicei, pozitia unei ferestre copil este relativa la zona client a parintelui;
    in exemplul anterior 5 si 6 sunt coordonatele x si y relative la coltul stanga-sus a zonei client a ferestrei parinte;.
    Alte exemple

    Code: Select all

    // moves a child window
    MoveWindow(hWndChild, 
               98, 99, // coordinates relative to parent client area
               80, 30, TRUE);

    Code: Select all

    // moves a child window
    SetWindowPos(hWndChild, NULL, 
                 98, 99, // coordinates relative to parent client area
                 0, 0, SWP_NOSIZE|SWP_NOZORDER);
  • frame-urile MDI child sunt tot ferestre copil si au setat in plus stilul extins WS_EX_MDICHILD;
  • WS_CHILDWINDOW si WS_CHILD sunt sinonime;
  • in general, controalele (butoane, edit-uri etc) sunt ferestre copil;
  • o fereastra child nu poate avea menu;
  • toate ferestrele care nu au setat stilul WS_CHILD (deci nu sunt child) sunt ferestre top-level;
  • nu confundati child cu ownedl; chiar daca o fereastra owned are un parent (mai binezis un owner), ea nu are setat stilul WS_CHILD.
Vezi si
<< Back to Windows API Index



Post Reply