В настоящее время я программирую интерфейс между некоторым кодом C ++ и Java с использованием JNI.
Я получаю некоторые события в моем графическом интерфейсе, которые я хочу передать обработчику событий C ++.
Поэтому я вызываю функцию, написанную на Java.
public void sendToEventQueue( AWTEvent evt ) {
Mudkiptz.Main.fctC_sendEvent( evt );
}
Этот метод находится в абстрактном классе EventHdl, который я использовал в качестве суперкласса для keyEventHandler, в котором я перегружаю keyTyped (KeyEvent) для отправки KeyEvent в мой обработчик событий C ++ с помощью ранее объявленного метода.
Моя проблема в том, что я хочу получить свой keyEvent keyCvent из KeyEvent, который я передал.
JNIEXPORT void JNICALL Java_Mudkiptz_Main_fctC_1sendEvent
(JNIEnv* env, jclass, jobject evt) {
// Obtenir les infos (Get information)
jclass keyEventClass = env->FindClass("java/awt/event/KeyEvent");
if( env->IsInstanceOf(evt, keyEventClass) ) {
jmethodID getKeyCode = env->GetMethodID(keyEventClass, "getKeyCode", "()I");
int keyCode = 0;
keyCode = env->CallIntMethod(evt, getKeyCode);
}
// getInstance()
Application::obtenirInstance()->getEventQueue()->push( evt );
}
Но это не работает ... :( Я не привык к JNI, поэтому это может быть легкой ошибкой, тем не менее, я был бы очень признателен за помощь.
Редактировать: Я должен был быть более точным. Метод возвращается, но keyCode всегда равен нулю, когда он должен давать keyCode. спасибо!
Спасибо!