I think your best bet would be to use the MouseUp event which fires just before Click. MouseUp hands you the x,y, shift and button variables just like MouseDown and will allow you to code just like Click.
I can't think of any situation where you couldn't mimic Click directly from MouseUp but if you really need it then you can use Win32 api functions to get your info. Here's a qucik overview:
To get the x,y:
Use GetCursorPos() to get the x,y values in screen coordinates
Use ScreenToClient() to convert the coords to your map hWnd's coords. Remember all api calls are in pixel so convert from pixels to twips if necessary
To get the shift key (or ctrl etc):
Use GetAsyncKeyState() and pass VK_LSHIFT/VK_RSHIFT. Pass VK_LBUTTON/VK_RBUTTON to get the mouse button states. The function return a long value that is 1 if the key/button is depressed.