   When to call Acquire on the mouse and keyboard?
  I can't seem to find documentation on when to acquire the mouse and keyboard.  Sometimes it works during program startup, sometimes it fails.  Right now I'm pretty much ignoring the return value and Acquire()ing every time through the message loop (which really sucks).  When are you supposed to do it?~BenDilts( void );   
  You should acquire whenever your window gains focus. The reason it might sometimes fail on startup is that the window may not have been given focus at the time the acquire is called.In general, you can just test the return value from your polling functions (GetDeviceData(), etc.). If the return value indicates device not acquired, then call Acquire() and try again.;  That's a good reply Dave Hunt,Just to extend Mr. Hunt's reply let me point you to some guides on DirectInput and input in general.Direct Input Tutorial 1 : Using the KeyboardIf you follow this tutorial I am sure you will grasp the concept quickly and armed with Mr. Hunt's reply you will be well on your way.Just keep in mind some fundamental "things". The general rule that I always follow is, when using a component such as DirectInput. Make sure your window/application is up and running and then instantiate and initiate your DirectInput class/component. This will eliminate some errors so you can debug easier.I hope this has been helpful.Take care.   