Go Back   Armenian Knowledge Base > Technical sections > Languages, Compilers, Interpreters

Reply
 
Thread Tools

CEdit's Event
Old 26.01.2002, 23:49   #1
Младенец
 
Join Date: 01 2002
Location: Home
Posts: 8
Rep Power: 0
Question 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

Old 27.01.2002, 01:20   #2
Moderator
 
acid's Avatar
 
Join Date: 09 2001
Location: South Korea, Gumi
Posts: 7,699
Blog Entries: 16
Rep Power: 7
Exclamation

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>

Old 27.01.2002, 06:33   #3
Дошкольник
 
Basil REX's Avatar
 
Join Date: 01 2002
Location: Yerevan
Age: 72
Posts: 78
Rep Power: 0
Post

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.
__________________
Per aspera ad astra!

Old 27.01.2002, 20:37   #4
Младенец
 
Join Date: 01 2002
Location: Home
Posts: 8
Rep Power: 0
Question

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').

Old 28.01.2002, 01:11   #5
The Reloaded
 
Aram Hambardzumyan's Avatar
 
Join Date: 01 2002
Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,387
Rep Power: 5
Post

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

Old 28.01.2002, 02:04   #6
Moderator
 
acid's Avatar
 
Join Date: 09 2001
Location: South Korea, Gumi
Posts: 7,699
Blog Entries: 16
Rep Power: 7
Post

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.

Old 28.01.2002, 07:02   #7
Дошкольник
 
Basil REX's Avatar
 
Join Date: 01 2002
Location: Yerevan
Age: 72
Posts: 78
Rep Power: 0
Post

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>Удачи!
__________________
Per aspera ad astra!

Old 28.01.2002, 18:21   #8
Младенец
 
Join Date: 01 2002
Location: Home
Posts: 8
Rep Power: 0
Talking

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
Reply




Реклама:
реклама
Buy text link .

All times are GMT. The time now is 08:05.
Top

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