Привет всем.
Я пишу игру на DirectX7 и у меня возникла следующая проблема. Мне надо сделать кнопку. У кнопки 3 состояния: up (ненажата), down (курсор мыши над кнопкой и нажата левая кнопка мыши) и over (курсор мыши над кнопкой). Вопрос: как определить, что нажата левая кнопка мыши??? Я использую код:
HRESULT hRes;
DIDEVICEOBJECTDATA dod;
DWORD dwElements = 1;
while(!bDone){
hRes = pDIMouse->GetDeviceData(sizeof(DIDEVICEOBJECTDATA), &dod, &dwElements, 0);
if(hRes == DIERR_INPUTLOST){
pDIMouse->Acquire();
hRes = pDIMouse->GetDeviceData(sizeof(DIDEVICEOBJECTDATA), &dod, &dwElements, 0);
}
if(FAILED(hRes) || dwElements == 0)
return mousedata;
switch(dod.dwOfs){
...
case DIMOFS_BUTTON0:
if(dod.dwData & 0x80){
...
}
break;
}
}
но вот, что получается: когда я нажимаю кнопку мыши моя кнопка становится down и тут же возвращается в over, хотя кнопка мыши все еще нажата.
PS. Хотелось бы укидеть код, заранее спасибо.
31.03.03 16:33: Перенесено модератором из 'Прочее' — H_D
Здравствуйте, Reunion, Вы писали:
R>Привет всем.
R>Я пишу игру на DirectX7 и у меня возникла следующая проблема. Мне надо сделать кнопку. У кнопки 3 состояния: up (ненажата), down (курсор мыши над кнопкой и нажата левая кнопка мыши) и over (курсор мыши над кнопкой). Вопрос: как определить, что нажата левая кнопка мыши??? Я использую код:
скип-скип-скип
R>но вот, что получается: когда я нажимаю кнопку мыши моя кнопка становится down и тут же возвращается в over, хотя кнопка мыши все еще нажата.
все проще — по приходу события надо утстановить флаг, что кнопка нажата... по приходу нового события она сбросится...
событие сообщает лишь о том, что состояние изменилось...
при этом 0x80 — кнопка "нажалась", 00 — "отпустилась"

... << RSDN@Home 1.0 beta 6a >>
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))