Inicializuje sa dialógové okno

Môžete inicializovať dialógového okna a jeho obsahu pri spracovaní WM_INITDIALOG správy. Najbežnejším úloh je Inicializácia kontrolami, ktoré odrážajú aktuálne nastaveniam dialógových okien. Ďalšou úlohou spoločnej je centrum dialógové okno na obrazovke alebo v rámci jeho vlastník okno. Užitočné úloha pre niektorých dialógových oknách je zaostriť vstupné daného ovládacieho prvku namiesto akceptovať predvolený vstupný zameranie.

V nasledujúcom príklade dialógové okno pole postup centrá dialógovom okne a nastaví vstup zameranie počas spracovania WM_INITDIALOG správy. Do stredu dialógového okna, postup načíta okno obdĺžniky pre dialógovom okne a v okne vlastníka a vypočíta nové umiestnenie pre dialógovým oknom. Nastavenie vstupného zameranie, postup kontroly wParam parameter na stanovenie identifikátor predvolený vstupný zameranie:

HWND hwndOwner; 
RECT rc, rcDlg, rcOwner; 
 
    prípad WM_INITDIALOG: / / získať vlastník okná a dialógové okno pole obdĺžniky. 
 
        Ak ((hwndOwner = GetParent(hwndDlg)) == NULL) {
            hwndOwner = GetDesktopWindow(); 
        }

GetWindowRect (hwndOwner, amp; rcOwner); 
        GetWindowRect (hwndDlg & rcDlg); 
        CopyRect (rc, & rcOwner); 
 
         / / Kompenzáciu vlastníkom a dialógové okno pole obdĺžniky tak, že / / sprava a zdola hodnoty predstavujú šírka a / / výška a potom Ofset vlastník opäť sa zbaviť / / miesta zaberajú dialógového okna. 
 
        OffsetRect (& rcDlg,-rcDlg.left, rcDlg.top); 
        OffsetRect (& rc,-rc.left, rc.top); 
        OffsetRect (& rc,-rcDlg.right, rcDlg.bottom); 
 
         / Novej pozície je súčtom polovica zostávajúcich / / priestor a vlastníkom spoločnosti pôvodnej pozície. 
 
        SetWindowPos (hwndDlg, HWND_TOP, rcOwner.left + (rc.right/2), rcOwner.top + (rc.bottom / 2), 0, 0, / / ignoruje veľkosť tvrdenia SWP_NOSIZE); 
 
        Ak (GetDlgCtrlID((HWND) wParam)! = ID_ITEMNAME) {SetFocus (GetDlgItem (hwndDlg, ID_ITEMNAME)); 
            Vráti FALSE; 
        } Vráti hodnotu TRUE 
 

Vo vyhlásení predchádzajúceho postupu používa funkciu GetParent získať vlastník okno rukoväť pre dialógové okno. Funkcia vráti vlastníkovi okno rukoväť pre dialógové okná a materskej okno rukoväť pre podriadené okná. Pretože aplikácia môže vytvoriť dialógové okno nemá žiadne vlastníka, postup kontroly vrátený rukoväť a používa funkciu GetDesktopWindow na načítanie pozadia okna rukoväť, ak je to potrebné. Po vypočítaní nové umiestnenie sa postup používa funkciu SetWindowPos presunúť dialógovým oknom špecifikujúce hodnotu HWND_TOP zabezpečilo, že dialógovom okne zostane v hornej časti okna vlastníka.

Pred nastavením vstupné zameranie postupu kontroly kontrolu identifikátor predvolený vstupný zameranie. Systém prechádza okno rukoväť predvolený vstupný zameranie v parametri wParam . Funkcia GetDlgCtrlID vráti identifikátor pre kontrolné okno popisovačom. Ak identifikátor nezodpovedá správne identifikátor, postup používa funkciu SetFocus na nastavenie vstupného zameranie. GetDlgItem funkcia je potrebné obnoviť okno rukoväť požadovaný ovládací prvok.

Index