Здравствуйте..
Краткий код dll-ки,а точнее только моя функция:
#define EXPORT extern"C"__declspec (dllexport)
EXPORT int CALLBACK bou(int x);
EXPORT int CALLBACK bou(int x)
{
for(;x==1;){
int Z=GetKeyState(VK_ADD);//Если кнопка + зажата то возвращается значение меньше 0for(;Z<0;)
{/*Выполняются какието действия*/}
Sleep(100);//Чтоб не нагружать проц
}
Вобщем пробовал цеплять мою dll-ку к консольному приложению с темже кодом обращения к dll-ке все работало так как и мне было нужно то есть по нажатию клавиши + выполнялось какоето действие...А когда поместил в приложение виндовсForm этот же код обращения к dll-ke то перехват клавиши не происходит...
Скажите пожалуйсто почему так происходит и как это исправить... Я уже 4 дня голову ломаю...
Я еще плохо разбераюсь в программировании это мая первая dll-ka и Form прога.
30.06.10 13:28: Перенесено из 'C/C++'
Добавлена разметка и табуляция — Кодт
Re: dll некоректно работает в windowsForm проге HELP
Здравствуйте, Diman88, Вы писали:
D>Здравствуйте.. D>Краткий код dll-ки,а точнее только моя функция: D>#define EXPORT extern "C" __declspec (dllexport) D>EXPORT int CALLBACK bou(int x); D>EXPORT int CALLBACK bou(int x) D>{ D>for(;x==1{ D>int Z=GetKeyState(VK_ADD);//Если кнопка + зажата то возвращается значение меньше 0 D>for(;Z<0 D>{/*Выполняются какието действия*/} D>Sleep(100);//Чтоб не нагружать проц D>}
А где выход из циклов? Ты что-то совершено не так делаешь. функция bou должна возвращать управление....
Третий Рим должен пасть!
Re[2]: dll некоректно работает в windowsForm проге HELP
Здравствуйте, GhostCoders, Вы писали:
GC>А где выход из циклов? Ты что-то совершено не так делаешь. функция bou должна возвращать управление....
Ну я какбы плонировал сделать выход из обоих циклов по нажатью другой клавиши... Или эт всеравно не верно?
ДА и такой еще вопрос : Можно ли вообще при помоши функции GetKeyState глобально перехватить нажатие клавиши?
Re[3]: dll некоректно работает в windowsForm проге HELP
Здравствуйте, Diman88, Вы писали:
D>Ну я какбы плонировал сделать выход из обоих циклов по нажатью другой клавиши... Или эт всеравно не верно? D>ДА и такой еще вопрос : Можно ли вообще при помоши функции GetKeyState глобально перехватить нажатие клавиши?
Я не особо спец по GUI, но как я понял, что GetKeyState() выбирает сообщения из очереди сообщений текущего потока.
Так как в консольных приложениях, наверное, если главный поток не реализует цикл прокачки сообщений, то существует какой-то дополнительный
поток, создаваемый системой.
Поэтому логично, что в windowsForm программе Вы выбираете все сообщения из очереди, и GetKeyState() или блокируется или выдает неверные значения.
Попробуйте вместо нее использовать GetAsyncKeyState().
А еще лучше в windowsForms приложении реализуйте обработчик сообщений от клавиатуры, а в DLL поместите только логику работы
с введенными клавишами, вычислениями, но не работу с клавиатурой.
Да и не нужно в этом случае использовать DLL. Все сделайте в windowsForm приложении.
Третий Рим должен пасть!
Re[4]: dll некоректно работает в windowsForm проге HELP
Здравствуйте, Diman88, Вы писали:
D>Если я делаю все не правильно то пожалуйсто дайте пример верного кода...
С такой постановкой вопроса я думаю, что тут никто ничего не ответит, а не то что код правильный писать
Потому как неясно чего вы хотите вообще получить, это раз,
и еще у вас архитектурная ошибка, это два.
Сделайте все в windowsForms приложении
Третий Рим должен пасть!
Re[4]: dll некоректно работает в windowsForm проге HELP