Posted By: Quasimodo (Quasimodo) on 'CZprogram'
Title:     Visual C++ nastaveni fokusu
Date:      Thu Jun  5 14:14:27 2003

Zdar,
 s visual C++ zacinam, takze prosim pomalu a jednoduse...

Mam okno dialogu. V nem zmacknu tlacitko. To vyvola metodu, ktera mimo jine na 
konci ma volani
CMereni dlg;
dlg.DoModal();

to vytvori podle ocekavani novy dialog. V nem potrebuju, aby uzivatel mohl 
jako default jen zmacknout enter a rovnou se vyvolala akce, ktera normalne 
prislusi tlacitku. Nejjednodussi mi prislo, dat tomu tlacitku focus a zbytek 
uz by byl bez problemu.

Takze jsem do OnInitDIalog napsal napred jen SetFocus() a zmenil return na 
FALSE. Vysledkem bylo, ze se tlacitko nevybralo a stisk enteru (pravdepodobne) 
vytvoril nove dialogove okno. (Pravdepodobne rikam proto, ze ten dialog mi 
zabira celou screenu handheldu a nedokazu s nim hybat, ale musel jsemproste 
nekolikrat klepnout na tlacitko zavrit, nez skutecne zmizelo. Pocet stisku 
tlacitka zavrit koresponduje s poctem otevrenych oken, pokud se opravdu 
otevirala.) Takze jsem zkusil pouzit nejake dalsi funkce, ktere mi podle 
popisu vzdalene pripadaly, ze by mohly zpusobit to co chci.
Soucasny stav je:
 

CheckDlgButton(IDC_BUTTON1, BST_CHECKED);
CWnd *ptr;
ptr = GetDlgItem(IDC_BUTTON1);
ASSERT(ptr != NULL);
ptr->SetActiveWindow();
ptr->SetFocus();
// Spustit casovac
ASSERT(SetTimer(1, 100, 0) != 0);
return FALSE;  // return TRUE unless you set the focus to a control

Porad to nedela co chci, navic to hazi Assertion Failed v afxtempl.h. Ani moc 
nechci vedet co je to za chybu, ale spis jak se tahle primitivnost ma delat.
Dekuji za pomoc.
 
-
Clovek je nejpomalejsi zname zarizeni typu I/O.
                                                                 Quasimodo

Search the boards