Mesaj WM_INITDIALOG

Sistemul nu trimite un WM_CREATE mesaj la procedura de caseta de dialog. În schimb, trimite un mesaj WM_INITDIALOG atunci când se creează caseta de dialog și toate controalele sale, dar înainte de a se afișează caseta de dialog. Procedura trebuie să efectueze orice inițializare necesare pentru a asigura că în caseta de dialog afișează setările curente asociate cu comanda sau activitate. De exemplu, atunci când o casetă de dialog conține un control pentru a afișa unitatea curentă și director, procedura trebuie să determine unitatea curentă și director și setați controlul de această valoare.

Procedura poate inițializa controalele utilizând funcții cum ar fi SetDlgItemText și CheckDlgButton. Deoarece controalele sunt windows, procedura poate, de asemenea, manipula le utilizând fereastra gestionare funcții cum ar fi EnableWindow și SetFocus. Procedura poate prelua ghidajul fereastra pentru un control utilizând funcția GetDlgItem.

Procedura de caseta de dialog poate modifica conținutul, stat, precum ?i pozi?ia de orice control după cum este necesar. De exemplu, într-o casetă de dialog care conține o casetă listă de nume de fișiere și un buton deschidere, procedura poate dezactiva butonul Deschidere până când utilizatorul selectează un fișier din listă. În acest exemplu, șablonul de caseta de dialog specifică stilul WS_DISABLED pentru butonul Deschidere și sistemul automat Dezactivează butonul atunci când creați o. Când caseta de dialog procedura primește un mesaj de notificare din caseta listă care să indice că utilizatorul a ales un fișier, procedura apelează funcția EnableWindow pentru a activa butonul Deschidere.

Pentru a afișa o pictogramă particularizată din bara legendă din caseta de dialog, mîner al tău WM_INITDIALOG pot trimite mesajul WM_SETICON la caseta de dialog.

Dacă aplicarea creează caseta de dialog utilizând una din funcțiile DialogBoxParam, DialogBoxIndirectParam, CreateDialogParamsau CreateDialogIndirectParam, parametrul lParam pentru mesaj WM_INITDIALOG conține parametrul extra trecut la funcția. Aplicații utilizează de obicei acest parametru suplimentar pentru a trece adresa informa?iilor suplimentare de inițializare la procedura de caseta de dialog, dar caseta de dialog procedura trebuie să determine sensul parametrul. Dacă aplicația utilizează o altă funcție pentru a crea caseta de dialog, sistemul setează parametrul lParam NULL.

Înainte de a reveni la mesaj WM_INITDIALOG , procedura ar trebui să determine dacă acesta ar trebui să stabilească intrare focalizarea la un anumit control. Dacă procedura de caseta de dialog întoarce TRUE, sistemul setează automat intrare focalizarea la controlul al cărui mâner fereastra este în parametrul wParam . Dacă controlul primirea accentul implicit nu este corespunzător, este puteți seta focalizarea la control corespunzătoare utilizând funcția SetFocus . Dacă procedura setează focalizarea intrare, aceasta trebuie să returneze FALSE pentru a împiedica sistemul să setarea implicit se concentreze. Controlul primirea implicit de intrare se concentreze este întotdeauna primul control în șablonul care este vizibilă, nu a fost dezactivat, și are stilul WS_TABSTOP. Dacă nu există nici un astfel de control, sistemul setează focalizarea intrare implicită la primul control în șablonul.

Index