Для "обнаружения" курсора в нужной нам позиции опишем функцию:
Код HTML:
BOOL  cRender::IsInBox(int x,int y,int w,int h)
{
POINT MousePosition;
GetCursorPos(&MousePosition);
ScreenToClient(GetForegroundWindow(),&MousePosition);
return(MousePosition.x >= x && MousePosition.x <= x + w && MousePosition.y >= y && MousePosition.y <= y + h);
}
в класс cRender пишем прототип:
Код HTML:
BOOL  IsInBox(int x,int y,int w,int h);
Для работы с кнопками можно использовать метод GetAsyncKeyState(Байт_код), но с ней иногда бывают проблеммы(залипание, фантомное срабатывание иногда просто не действует), поэтому опишем свою функцию.
Прототип:
Код HTML:
BOOL  State_Key(int Key,DWORD dwTimeOut);
Key - байт код клавиши
dwTimeOut - время до возможности повторного действия в Мсек(не совсем точное определение)

Вне класса cRender определим структуру:
Код HTML:
static struct _Keys
{
bool        bPressed;
DWORD       dwStartTime;
}kPressingKeys[256];
Сама функция выглядит так:
Код HTML:
BOOL  cRender::State_Key(int Key,DWORD dwTimeOut)
{
if(HIWORD(GetKeyState(Key)))
{
  if(!kPressingKeys[Key].bPressed || (kPressingKeys[Key].dwStartTime && (kPressingKeys[Key].dwStartTime + dwTimeOut) <= GetTickCount()))
  {
   kPressingKeys&#91;Key&#93;.bPressed = TRUE;
   if( dwTimeOut > NULL )
    kPressingKeys[Key].dwStartTime = GetTickCount();
   return TRUE;
  }
}
else
  kPressingKeys[Key].bPressed = FALSE;
return FALSE;
}