Archive for květen, 2007
Tap-n-hold v Edit casti Combo Boxu
Situace: Aplikace, ktera neni zalozena na dialogu (v MFC), protoze nechci, aby OK/Close button ji zavrel, ale jen minimalizoval. Takze hlavni okno je CWnd. Na nem dva prvky – CComboBox a CButton. Tapnuti na button spousti hledani vyrazu zadaneho v combo boxu. Combo box, protoze v jeho drop down menu je historie hledanych slov. Logicke. Intuitivni.
Problem cislo 1: Nejde tap-n-hold na edit casti combo boxu, coz je pekne naprd, protoze bezne to uzivatel bude chtit pouzit.
Reseni: Combo box nahrazen CEditem. Ztracime historii, kterou tam budeme muset dodelat jinak.
Problem cislo 2: Kdyz user tapne na SW klavesnici na Enter, tak aby se spustilo hledani. Nic se vsak nedeje.
Pokud bysme meli dialog, tak udelame button se stylem BS_DEFPUSHBUTTON a je vystarano. Rucni pridani stylu do buttonu nejde, ani kdyz se prida poslani zpravy DM_SETDEFID, ktera oznami default control. Neni se cemu divit, nejsme na dialogu, ale jen na CWnd.
Reseni: Odvozeni noveho editu, pridani reakce na zpravu WM_CHAR. Ta posle user-defined zpravu rodici. Ten ji odchytne a vyvola hledani. Dementni, ale funguje.
A to vsechno jen kvuli tomu, aby fungoval tap-n-hold na editu combo boxu! Ja vam radim neprogramujte, jinak skoncite u doc. Chocholouska.
Jeste me napadlo zmenit zakladni CWnd na CDialog, ale obavam se, ze by to byla cesta do pekel.
Add comment květen 23, 2007