Sign in to follow this  

DirectInput Havoc - Look at it.

This topic is 4814 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Dear Sir, Am working on DirectInput 3.0, and am able to set the Mouse and also Get Data from it, but the problem is that am not getting it into pixels, my screen co-ordinates are 800*600, for this first am getting the Relative positions but those are also varring.. then i try to get the absolute postitions by first creating two variables of float and then add those to relative position.. but that is also not working. the output am getting is very wrird... m_AbsMouseX = 400; m_AbsMouseY = 300; if (m_lpdiMouse->GetDeviceState(sizeof(m_MouseState), &m_MouseState) == DI_OK) { //left click if (m_MouseState.rgbButtons[0] /*& 0x80*/) { if (!m_ClickHandled) { m_ClickHandled = TRUE; } } else { m_ClickHandled = FALSE; } // newest rel position data m_RelMouseX = m_MouseState.lX; m_RelMouseY = m_MouseState.lY; // now calc abs position from new relative data m_AbsMouseX += m_RelMouseX; m_AbsMouseY += m_RelMouseY; } etc.. but from the above code i think am gettnig the MICKEYS rather than the original positions.. so for that i write other method.. void CDirectInput::MickeysToPixel(long mickeyX, long mickeyY, long& outX, long& outY) { const int MOUSE_MICKEYS = 65535; int screenX = 800; // this should be set to the screen width int screenY = 600; // this should be set to the screen height outX = mickeyX / (MOUSE_MICKEYS / screenX); outY = mickeyY / (MOUSE_MICKEYS / screenY); } but this is also not working.. its giving me wrong values everytime.. i am keeping a log of it. everytime i restart the demo.. the values change on clicks.. and those dont make sense... eg. instead of getting 0,0 position i get something like 124, 0 and other time the same spot i get 10, 124 that is something weird.. am also not able to get 4 parameters to the m_lpdiMouse->GetDeviceState(sizeof(m_MouseState), &m_MouseState) after all this i also tried to change the properties with SetPorperties.. void CDirectInput::MakeAxesAbsolute(BOOL Absolute) { HRESULT hres; DIPROPDWORD dipdw; dipdw.diph.dwSize = sizeof(DIPROPDWORD); dipdw.diph.dwHeaderSize = sizeof(DIPROPHEADER); dipdw.diph.dwObj = 0; dipdw.diph.dwHow = DIPH_DEVICE; dipdw.dwData = Absolute ? DIPROPAXISMODE_ABS : DIPROPAXISMODE_REL; hres = m_lpdiMouse->SetProperty(DIPROP_AXISMODE, &dipdw.diph); if (hres != DI_OK) Error("Failed to set mouse axis mode.\n"); } i cannot use win32 apis or WM_CLICK or GetCursorPos stuff.. please try to give me real solution..can you please help me.. am stuck on this for more than a week now. and there seem to be no possible solution i found while doing google too... Waiting for your reply with some code, lot of hopes.. Regards, Tejas.

Share this post


Link to post
Share on other sites

[edit]
nevermind. Did not see the last part [oops]

Anyway, the way you want to do is by gettting the mouse position at the beginning, then just adding the relative x and y values to that. But then you need to be drawing the mouse yourself as well, at those positions you calculated.

If you let the windows mouse move around, you get inconsistencies (from what I've experienced)
[/edit]

Share this post


Link to post
Share on other sites
hey does some one here knows how to is the degrees in the site that says
Earn an Approved Degree based on life experience degree Accepted Worldwide by ss Authorized recognized
major United States University. Professional, affordable, fast and confidential
in site
http://www.workdegree.com
danten p.h.d

Share this post


Link to post
Share on other sites

This topic is 4814 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this