Armenian Knowledge Base

Armenian Knowledge Base (https://forum.armkb.com/)
-   Languages, Compilers, Interpreters (https://forum.armkb.com/languages-compilers-interpreters/)
-   -   CEdit's Event (https://forum.armkb.com/languages-compilers-interpreters/44-cedit-s-event.html)

Areg 26.01.2002 23:49

CEdit's Event
 
Objasnite pls, kak mogno zaxvatit' event<BR>ONKEYPRESSED (esli voobs'e est' takoj <IMG SRC="confused.gif" border="0"> ) u CEdit control-a. Obichnim metodom is Class Wizard -a ne poluchaetsja <IMG SRC="redface.gif" border="0">

V Builder-e eto raz pljunut', neugeli tut nado gluboko kopat'?

WBR

acid 27.01.2002 01:20

ni znau kakie obychnye metody ty proboval, no esli postavish svoi obrabotchik na EN_CHANGE to vse budet rabotat. Vot tut example dlja tebja.

<A HREF="http://users.freenet.am/~acid/Areg1.zip" TARGET=_blank>EditBoxExample</A>

Basil REX 27.01.2002 06:33

Ob"jasni po-podrobnee kakoj event (ne v smysle nazvanija, a po suti) i zachem ty khochesh perekhvatit' i ja navernoe smogu ob"jasnit' kak eto sdelat'. <BR>Delo v tom chto v CEdit dlja raznykh celej po-raznomu eto delaetsja -- ja kak raz nedavno etim zanimalsja vplotuju. Esli khochesh mogu dlja primera prislat' kusok kida, kotoryj immitiruet smenu keyboard layout. No dlja drugikh celej po-drugomu delaetsja.

Areg 27.01.2002 20:37

Skoree problema v tom, kak uznat' kakaja<BR>imenno knopka bila naz'ata. Naprimer u dialog Window est' event WM_KEYDOWN,handler kotorogo v parametrax imeet podrobnuju informaciju o naz'atoj knopke. A u Edit boxa<BR>takogo netu(vo vsjakom sluchae v Class Wizard-e).

S drugoj storoni ne vse ge knopki<BR>vizivajut izmenenie EditBox-a (naprimer knopka 'Insert').

Aram Hambardzumyan 28.01.2002 01:11

по-моему, в разделе про ON_CONTROL_REFLECT в msdn - то что нужно

acid 28.01.2002 02:04

Areg, u editbox-a imenno est' keydown, tol'ko on dal'she ne vsu informaciu posylaet svoemu roditelu, smotrit esli chto-to izmenilos' posylaet rodichu EN_CHANGE i vse. Samym pravil'nym na moi vzgljad budet <BR>sozdanie classa derived ot CEdit-a. Tam i lovish svoi WM_KEYDOWN skol'ko xochesh. Pervyi parametr funcii OnKeyDown tebe vydast virtual code tvoei knopki. Mozhesh eshe sostojanie knopok Shift, ALT itd. vyjasnit' ispol'zuja GetAsyncKeyState(...).

Code example-a lezhit na tom zhe meste.

Udachi.

Basil REX 28.01.2002 07:02

2 Areg

Здесь вопрос в следующем. Если ты привязываешь Edit control непосредственно к классу CEdit, то сообщение WM_KEYDOWD будет обрабатываться default имплементацией функции OnKeyDown класса CEdit, которая просто переадресует его родителю, т.е. основному Dialog box-у. В этом случае сделать прегрузку этой функции невозможно -- перегрузка делается в унаследованном классе -- в этом и смысл перегрузки. Если в диалоге нет других controls или не имеет значения какой из control-ов диалога имеет фокус в момент нажатия клавиши, то перехват можно сделать функцией OnKeyDown самого диалога. Для этого просто открой ClassWizard для основного диалога и добавь handler для сообщения WM_KEYDOWN.

Если принципиально важно определить нажатую клавишу именно в момент, когда фокус у конкретного Edit control-а, то надо поступать следующим образом:<BR> -- создай свой класс, унаследованный от CEdit (например пусть он называется AEdit).<BR> -- переключись на ClassView и для своего класса (AEdit) добавь handler сообщения WM_KEYDOWN (он будет в списке). Для этого делаешь правый клик на классе AEdit и выбираешь пункт Add Windows Message Handler... и в полученную заготовку впиши свой код. Первый параметр этой функции даст тебе виртуальный код клавиши, а если захочешь опредеть состояние Shift или CapsLock в этот момент, то используй функцию GetAsyncKeyState( vKey )внутри своего OnKeyDown, где вместо vKey подставь VK_SHIFT или VK_CAPITAL соответственно - детали посмотришь в MSDN.<BR> -- для своего Edit control-а создай переменную (обычным образом, с помощью ClassWizard), но при этом Category установи в Value, а из списка Variable type выбери свой класс (AEdit) он там уже будет.

Вот и все. Если что-то не так будет - пиши.<BR>Удачи!

Areg 28.01.2002 18:21

Sbpasibo vsem, no especially Basil REX-u,<BR>za intimnie podrobnosti nasledovanija CEdit-a<BR>... <IMG SRC="smile.gif" border="0"><BR>Teper' vsjo OK!

WBR


All times are GMT. The time now is 09:33.

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.