..::Spy++ 2.dφl::..

Jak jsem slφbil, dnes si ukß₧eme jak zjistit identifikßtor dialogovΘho prvku. KonkrΘtn∞ editaΦnφho °ßdku standartnφho dialogu windows Otev°φt. 

K tomu pou₧ijeme nßstroj Find Window. Spustφte jej tlaΦφtkem panelu nßstroj∙ jak je vid∞t na nßsledujφcφm obrßzku.

Zobrßzφ se vßm okno Find Window. (Dialog otev°φt musφte mφt samoz°ejm∞ otev°en v jinΘ aplikaci.) P°eta₧enφm ukazovßtka na editaΦnφ °ßdek °eknete programu Spy++, ₧e chcete informace o tomto dialogovΘm prvku. Dßle musφte mφt vybrßnu mo₧nost Properties. Kdybyste vybrali Messages nezobrazφ se vßm informace o dialogovΘm prvku, ale budou se zachytßvat jeho zprßvy. PotΘ dialog uzav°ete pomocφ tlaΦφtka OK.

PotΘ se vßm ji₧ zobrazφ dialog s vlastnostmi vybranΘho dialogovΘho prvku. (V tomto p°φpad∞ je to editaΦnφ °ßdek dialogu Otev°φt.) Jeho identifikßtor je zde oznaΦen jako Control ID a jak vidφme mß hodnotu 0x480 (hexadecimßln∞), neboli 1152 (desφtkov∞).

PotΘ ji₧ m∙₧ete zφskat ukazatel na tento editaΦnφ °ßdek z t°φdy odvozenΘ z CFileDialog pomocφ funkce GetDlgItem. 

POZOR!!! - EditaΦnφ °ßdek nßle₧φ rodiΦi okna vaÜφ odvozenΘ t°φdy, aby bylo mo₧no tento dialog rozÜφ°it. (To mßm v plßnu popsat v n∞kterΘm z nßsledujφcφh Φlßnk∙.) Proto musφte volat funkci GetDlgItem tohoto rodiΦe. Nap°φklad takto:

CEdit* pEdit = (CEdit*)(GetParent()->GetDlgItem(0x480));

NejlepÜφ zp∙sob jak upravit chovßnφ tohoto editaΦnφho °ßdku, je vytvo°it vlastnφho potomka t°φdy CEdit a potΘ jej pomocφ subclassingu vnutit tomuto editaΦnφmu °ßdku. Nap°φklad takto:

myEdit.SubclassDlgItem(0x480, pWnd->GetParent());

Kde myEdit je objekt potomka t°φdy CEdit. Prvnφ parametr je identifikßtor dialogovΘho prvku a druh² rodiΦovskΘ okno tohoto dialogovΘho prvku.