On 14/01/2014 at 08:34, xxxxxxxx wrote:
User Information:
Cinema 4D Version: 13
Platform: Windows ;
Language(s) : C++ ;
---------
Hi,
I'm trying to get the width of the UI border around the editor window so I can subtract it from the mouse cursor position. So that I can get the mouse coordinates for just the editor window.
BFM_INPUT_X & BFM_INPUT_Y include the border areas in their calculations. And GetCursorInfo() is not available in tag plugins.
It works fine for me in python. But I can't get it to work in C++.
Python
mx = msg[c4d.BFM_INPUT_X]
my = msg[c4d.BFM_INPUT_Y]
bd = doc.GetActiveBaseDraw()
win = bd.GetEditorWindow()
wx, wy = win.Local2Screen()
print mx-wx #<---- prints 41
print my-wy #<---- prints 109
C++
Bool DrawTool::MouseInput(BaseDocument *doc, BaseContainer &data, BaseDraw *bd, EditorWindow *win, const BaseContainer &msg)
{
BaseContainer state;
while (GetInputState(BFM_INPUT_MOUSE, BFM_INPUT_MOUSELEFT, state)) //While the left mouse button is pressed
{
if (state.GetLong(BFM_INPUT_VALUE) == 0) break; // Break out of the loop when left mouse button is NOT pressed
LONG mx = state.GetLong(BFM_INPUT_X);
LONG my = state.GetLong(BFM_INPUT_Y);
LONG wx, wy;
bd->GetEditorWindow()->Screen2Local(&wx, &wy);
mx = mx-wx; //<----Gibberish...memory addresses? 858991498
my = my-wy; //<----Gibberish...memory addresses? 858991498
GePrint(LongToString(mx));
}
return TRUE;
}
What am I doing wrong?
Is there another way to get the mouse coordinates for just the editor window?
Something that I can use in things like tag plugins that doesn't support GetCursorInfo().
-ScottA