I am makng a program that finds the mouse position then reads it out i have got that working so far but it only works inside the program window so is there any way to fix this without dramaticly changing my code? thanks in advance
Printable View
I am makng a program that finds the mouse position then reads it out i have got that working so far but it only works inside the program window so is there any way to fix this without dramaticly changing my code? thanks in advance
Something like this?
PHP Code:
#include <iostream>
#include <windows.h>
int main()
{
while ( EOF )
{
POINT Cursor_Pos;
GetCursorPos ( & Cursor_Pos );
std :: cout << "\b\b\b\b\b\b\b\b\b\b\b\b\b\b" << Cursor_Pos.x << " " << Cursor_Pos.y << " ";
Sleep ( 10 );
}
}
What OS, and where is your code?
Whatever, assumed Windows as above.
Code:while(true)
{
POINT Cursor_Pos;
GetCursorPos ( & Cursor_Pos );
std::cout << "\r" << Cursor_Pos.x << "\t" << Cursor_Pos.y;
Sleep( 10 );
}
To Tonto:
The displayed output with the carriage return character and the tab character will be incorrect,
you will see something like: 0 06411.
No I will not. What?
You will need another tab character at the end to overwrite the remain characters.
What remaining characters? A CR just goes to the beginning of the line.
I am using windows xp and a dev C++ compiler and i would try to put this into a window program now because i found out what i needed heres my code so if it is possible can i put this in a window program?
Code:#include <stdlib.h>
#include <iostream>
#include <windows.h>
using namespace std;
int main ()
{
char str1[ 80 ];
int x = 10;
int y = 100;
int v;
int b;
POINT pt; // cursor location
cout << "Hello World this is mouse test!" << endl;
cout << "Moving to first Position" << endl;
while ( x < 150 ) {
GetCursorPos(&pt);
sprintf( str1,"%d x %d",pt.x,pt.y );
cout << str1;
system ("cls");
x++;
}
cout << "Press ENTER to continue..." << endl;
cin.get();
return 0;
}
Have you seen how much code is needed to make a window?
ya i have would you like me to post the window code i want to use?
You can if you want...I am sure I will be overwhelmed in noobyness!
Ok heres the code i got it from the dev examples so its not completely noobish
Code:#include <windows.h>
/* Declare Windows procedure */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
/* Make the class name into a global variable */
char szClassName[ ] = "WindowsApp";
int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)
{
HWND hwnd; /* This is the handle for our window */
MSG messages; /* Here messages to the application are saved */
WNDCLASSEX wincl; /* Data structure for the windowclass */
/* The Window structure */
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure; /* This function is called by windows */
wincl.style = CS_DBLCLKS; /* Catch double-clicks */
wincl.cbSize = sizeof (WNDCLASSEX);
/* Use default icon and mouse-pointer */
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL; /* No menu */
wincl.cbClsExtra = 0; /* No extra bytes after the window class */
wincl.cbWndExtra = 0; /* structure or the window instance */
/* Use Windows's default color as the background of the window */
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
/* Register the window class, and if it fails quit the program */
if (!RegisterClassEx (&wincl))
return 0;
/* The class is registered, let's create the program*/
hwnd = CreateWindowEx (
0, /* Extended possibilites for variation */
szClassName, /* Classname */
"Windows App", /* Title Text */
WS_OVERLAPPEDWINDOW, /* default window */
CW_USEDEFAULT, /* Windows decides the position */
CW_USEDEFAULT, /* where the window ends up on the screen */
544, /* The programs width */
375, /* and height in pixels */
HWND_DESKTOP, /* The window is a child-window to desktop */
NULL, /* No menu */
hThisInstance, /* Program Instance handler */
NULL /* No Window Creation data */
);
/* Make the window visible on the screen */
ShowWindow (hwnd, nFunsterStil);
/* Run the message loop. It will run until GetMessage() returns 0 */
while (GetMessage (&messages, NULL, 0, 0))
{
/* Translate virtual-key messages into character messages */
TranslateMessage(&messages);
/* Send message to WindowProcedure */
DispatchMessage(&messages);
}
/* The program return-value is 0 - The value that PostQuitMessage() gave */
return messages.wParam;
}
/* This function is called by the Windows function DispatchMessage() */
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message) /* handle the messages */
{
case WM_DESTROY:
PostQuitMessage (0); /* send a WM_QUIT to the message queue */
break;
default: /* for messages that we don't deal with */
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
NO I meant my noobness.
Then comes gettign your code into that.
i also know how to make a static box buttons and a input box(single or multi-line)...
with the controls.
oooo i get it lol
I am sure I saw something somewhere about just putting a DOS program into a window rather DOS box...maybe google it?
k ill try that thx
Or you can just TextOut/DrawText the buffer you sprintf'ed in your last code in your WindowProcedure.
Code:case WM_PAINT:
{
char str[256];
POINT cursorPos;
HDC hDC;
PAINTSTRUCT pS;
hDC = BeginPaint(hWnd, &pS);
GetCursorPos(..);
sprintf(str, ..);
TextOut(hDC, x, y, str, strlen(str));
EndPaint(hwnd, &pS);
break;
}
thats works but how can i out that in a loop so it works when i move the mouse?
Use WM_MOUSEMOVE instead of WM_PAINT, and then use GetDC and ReleaseDC instead of BeginPaint and EndPaint.
well that got rid of the blingking but it still only works while the crurser inside the window.
I tried to do it on one way, it worked but I really don't recommend you to use it. Though, if you want the code, I'll post it.
k i would like to see the code i might be able to build of it
Put this in your WINAPI WinMain, now your program also reacts when your mouse isn't on your window:
I used an Edit class window to write the mouse position to:PHP Code:
for ( ; ; )
{
if ( PeekMessage ( & msg, NULL, 0, 0, PM_REMOVE ) )
{
if ( msg.message == WM_QUIT )
{
break;
}
TranslateMessage ( & msg );
DispatchMessage ( & msg );
}
else
{
Mouse_Pos();
}
Sleep ( 10 );
}
As I said before, there are many ways to do this better, I wouldn't use it like this but this may give you some ideas.PHP Code:
void Mouse_Pos()
{
POINT Cursor_Pos;
GetCursorPos ( & Cursor_Pos );
char Cursor_X [ 256 ],
Cursor_Y [ 256 ];
itoa ( Cursor_Pos.x, Cursor_X, 10 );
itoa ( Cursor_Pos.y, Cursor_Y, 10 );
strcat ( Cursor_X, " " );
strcat ( Cursor_X, Cursor_Y );
HWND Main,
Edit;
Main = FindWindow ( "YourMainWindowClass", "YourMainWindowCaption" );
Edit = FindWindowEx ( Main, NULL, "Edit", NULL );//To find the Edit class window on your main window
SendMessage ( Edit, WM_SETTEXT, ( WPARAM ) strlen ( Cursor_X ), ( LPARAM ) Cursor_X );
}