![]() | |
| |||||||
| Home | Register | Blogs | FAQ | Members List | Calendar | Downloads | Arcade | Mark Forums Read |
| Languages, Compilers and Interpreters C,C++,C#,.NET,Java,PHP,Perl,SQL and more |
![]() |
| | LinkBack | Thread Tools | Display Modes |
| | #1 |
| Младенец Join Date: Jan 2002 Location: Home
Posts: 8
Rep Power: 0 Reputation:
10 | 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 |
| | |
| | #2 |
| Administrator Join Date: Sep 2001 Location: South Korea, Gumi
Posts: 7,163
Blog Entries: 15 Rep Power: 10 Reputation:
298 | 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> |
| | |
| | #3 |
| Дошкольник Join Date: Jan 2002 Location: Yerevan
Posts: 78
Rep Power: 0 Reputation:
10 | 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! |
| | |
| | #4 |
| Младенец Join Date: Jan 2002 Location: Home
Posts: 8
Rep Power: 0 Reputation:
10 | 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'). |
| | |
| | #5 |
| The Reloaded Join Date: Jan 2002 Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,178
Rep Power: 7 Reputation:
45 | по-моему, в разделе про ON_CONTROL_REFLECT в msdn - то что нужно
__________________ Сайт армянских маньяков |
| | |
| | #6 |
| Administrator Join Date: Sep 2001 Location: South Korea, Gumi
Posts: 7,163
Blog Entries: 15 Rep Power: 10 Reputation:
298 | 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. |
| | |
| | #7 |
| Дошкольник Join Date: Jan 2002 Location: Yerevan
Posts: 78
Rep Power: 0 Reputation:
10 | 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! |
| | |