| x77 
								Модератор
								
								   Offline 
								Пол:    
								меняю стакан шмали на обратный билет с Марса.
								
								
								
								
								
							 | 
								|  | « Ответ #5 : 14-12-2005 07:35 »  |  | 
 
 всё правильно. следует различать две вещи: событие, которое генерит винда, и событие, которое обрабатывает прога. допустим, в проге есть обработчик на OnKeyUp. в этом случае при нажатии клавиши винда сгенерит три сообщения: WM_KEYDOWN, WM_KEYUP, WM_KEYPRESS (или как его там, по матери?). но прога отработает только то, на которое у неё назначен обработчик, в нашем случае - WM_KEYUP. вот именно в этом заключаются ваши грабли. что вы делаете? вы:
 1. говорите окну, что нажат Ctrl. (вы не нажимаете его в действительности! вы просто говорите окну, что он был нажат! если обработчик в проге висит только на OnKeyUp - он просто пропустит это сообщение мимо ушей!)
 2. говорите окну, что был нажат Enter.
 и т.д.
 
 в действительности, я подозреваю, что в программе всего один обработчик, какой-нибудь OnKeyPress, который и получает два Enter'a.
 
 Сочетание некоторых клавиш с функциональной иногда имеет свой собственный код, отличный от кодов самих клавиш. для Enter - это 13, для Ctrl+Enter - это 10. сделайте вот так:
 
 PostMessage(h,WM_KEYUP, 10, 0);
 
 и, я думаю, будет счастье.
 |