Explorer-stil particularizat șabloane

Pentru a defini controale suplimentare pentru o casetă de dialog Explorer-stil Deschidere sau Salvare ca , utilizați structura OPENFILENAME pentru a specifica un șablon pentru o casetă de dialog copil care conține controale suplimentare. Dacă șablonul de dialog copil este o resursă în o aplica?ie sau un dynamic-link bibliotecă, setați pavilion OFN_ENABLETEMPLATE membru steaguri și de a folosi structura hInstance și lpTemplateName membrii pentru a identifica numele de modul și de resurse. Dacă șablonul este deja în memorie, setați pavilion OFN_ENABLETEMPLATEHANDLE și de a folosi membru hInstance pentru a identifica obiectul de memorie care conține șablonul. Atunci când furnizarea unui copil de dialog șablon pentru o casetă de dialog Explorer-stil, de asemenea, trebuie să setați pavilion OFN_EXPLORER; în caz contrar, sistem presupune vă oferă un șablon de înlocuire pentru o casetă de dialog stil vechi. De obicei, dacă furnizați controale suplimentare, trebuie, de asemenea, furnizați un Explorer-stil cârlig procedura la procesul de mesaje pentru controalele noi.

Să creați șablonul caseta de dialog copil cum procedați cu orice alt șablon, cu excepția faptului că trebuie să specificați stilurile de WS_CHILD și WS_CLIPSIBLINGS și trebuie să specificați stilurile DS_3DLOOK și DS_CONTROL. Sistemul necesită stilul WS_CHILD deoarece șablonul definește un dialog copil implicit Deschidere sau Salvare ca casetei de dialog. Stilul de WS_CLIPSIBLINGS asigură că caseta de dialog copil nu vopsea peste oricare dintre controalele din caseta de dialog implicită. Stilul DS_3DLOOK face sigur că aspectul controalele din caseta de dialog copil este în concordanță cu controalele din caseta de dialog implicită. Stilul de DS_CONTROL face-vă că utilizatorul poate utiliza fila și alte taste de navigare pentru a vă deplasa între toate controalele, implicite sau particularizată, în caseta de dialog particularizate.

Pentru a face loc pentru noi controale, sistemul se extinde caseta de dialog implicită de lățimea și înălțimea casetei de dialog particularizate. În mod implicit, toate controalele din caseta de dialog particularizate sunt poziționate mai jos controalele din caseta de dialog implicită. Cu toate acestea, puteți înlocui acest implicit de poziționare de inclusiv un control static text în șablonul de caseta de dialog particularizate și atribuirea este valoarea identificator de control a stc32. (Această valoare este definită în DLG.H antet fișier.) În acest caz, sistemul utilizează controlul ca punct de referin?ă pentru a determina unde să poziționați noi controale. Toate noi controale mai sus și în stânga controlului stc32 sunt poziționate aceeași sumă mai sus și la stânga controalele din caseta de dialog implicită. Noi controale mai jos și din dreapta stc32 de control sunt poziționate mai jos și din dreapta controalelor implicit. În general, fiecare control nou este poziționat astfel încât are aceeași poziție relativ la controalele implicit ca ea a trebuit să stc32 de control. Pentru a face loc aceste controale noi, sistemul adaugă spațiu la stânga, dreapta, jos, și partea superioară a casetei de dialog implicită în funcție de necesități.

Sistemul necesită procedura cârlig pentru a procesa toate mesajele pentru caseta de dialog particularizate și, prin urmare, trimite mesajele aceeași fereastră la procedura cârlig a oricărei alte proceduri de caseta de dialog. De exemplu, procedura cârlig primește mesaje WM_COMMAND atunci când utilizatorul face clic pe butonul controalele din caseta de dialog particularizate. Procedura cârlig este responsabil pentru inițializarea acestor controale și regăsirea valorile din controalele atunci când caseta de dialog este închisă. Rețineți că atunci când procedura cârlig prime?te mesajul WM_INITDIALOG , sistemul nu a încă mutat controalele la pozițiile lor finală.

Regimul caseta de dialog implicită mânere mesaje pentru toate controalele din caseta de dialog implicită, dar procedura cârlig primește WM_NOTIFY mesajele de notificare pentru acțiunile utilizatorului pe aceste controale descris în Explorer-stil cârlig procedurile.