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