Mengatasi lost focus pada Direct Input

Direct Input adalah salah satu bagian dari DirectX yang digunakan untuk memanajemen inputan user baik berupa keyboard, joystick, mouse, dan lain sebagainya. Belakangan ini dakuw lagi mencoba menggunakan direct input untuk memproses inputan keyboard. Inputan user tersebut diawasi dalam sebuah looping. Tapi muncul sebuah masalah…
Ketika program kita kehilangan fokus (user mengklik program lain atau menekan alt+tab), kemudian setelah program kita mendapatkan fokus kembali, direct input tidak lagi bekerja. Hmm.. Setelah usut punya usut, ternyata direct input gagal meng-acquire device ketika program kehilangan fokus. Di dokumentasi Software Development Kit (SDK) juga tidak menyertakan sample untuk menghandle direct input ketika program kehilangan fokus. Gimana ya caranya mengetahui direct input gagal di acquire?. Di contoh direct input pada dokumentasi SDK, ada sebuah komentar yang mengatakan bahwa dalam sebuah looping, kita bisa menangkap error yang dibuat oleh direct input, sehingga kita bisa tahu direct input kehilangan fokus atau tidak. Jadi dakuw mengikuti nasehat komentar tersebut, dan berhasilūüėÄ. So here is the damn stuff :

// hr adalah HRESULT
// lpdiDevice adalah LPDIRECTINPUTDEVICE8
hr=lpdiDevice->GetDeviceState(sizeof(buffer),(LPVOID)&buffer);

if(FAILED(hr)){

 if(hr = DIERR_INPUTLOST){

 	hr=lpdiDevice->Acquire();

 }

}

Kode tersebut diletakan dibagian awal dari sebuah looping direct input. Anggaplah kita sedang membuat function looping untuk menangkap inputan keyboard, maka kode diatas diletakan dibagian awal function looping. Yang pernah punya masalah yang sama silahkan mencoba kode diatasūüėÄ.

Pos ini dipublikasikan di post. Tandai permalink.

Satu Balasan ke Mengatasi lost focus pada Direct Input

  1. rhyena berkata:

    saya mau bertanya gmana pengertian lost focus

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s