J'ai créé une application win32 en visual-C++ mais cette programmation n'imprimant pas la souris coordonne tous les autres événements fonctionnant correctement quelqu'un peut-il me dire comment obtenir les coordonnées de la souris dans l'application visual-C++ win32?coordonnées de la souris dans l'application visual-C++ win32?
en espérant une réponse rapide et positive.
// ttt.cpp : Defines the entry point for the application.
// TO Demonstrate the Mouse Events
#include "windows.h"
#include "stdafx.h"
#include "stdio.h"
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
int x,y;
LPCWSTR msgdown = (LPCWSTR)L"Left Mouse Button Down" ;
LPCWSTR msgup = (LPCWSTR)L"Left Mouse Button UP" ;
LPCWSTR msgdblclk = (LPCWSTR)L"Left Mouse Button Dbl clk" ;
LPCWSTR rmsgdown = (LPCWSTR)L"Right Mouse Button Down" ;
LPCWSTR rmsgup = (LPCWSTR)L"Right Mouse Button UP" ;
LPCWSTR rmsgdblclk = (LPCWSTR)L"Right Mouse Button Dbl clk" ;
LPCWSTR rwheel = (LPCWSTR)L"Mousescroll" ;
//LPCWSTR txtmsg = (LPCWSTR)L"position" ;
LPCWSTR mouse = (LPCWSTR)L"Mouse" ;
switch (msg)
{
case WM_CLOSE:
DestroyWindow(hWnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_LBUTTONDOWN:
MessageBox(hWnd,msgdown,mouse,MB_OK);
break;
case WM_LBUTTONUP:
MessageBox(hWnd,msgup,mouse,MB_OK);
break;
case WM_LBUTTONDBLCLK:
MessageBox(hWnd,msgdblclk,mouse,MB_OK);
break;
case WM_RBUTTONUP:
MessageBox(hWnd,rmsgup,mouse,MB_OK);
break;
case WM_RBUTTONDOWN:
MessageBox(hWnd,rmsgdown,mouse,MB_OK);
break;
case WM_RBUTTONDBLCLK:
MessageBox(hWnd,rmsgdblclk,mouse,MB_OK);
break;
case WM_MOUSEWHEEL:
MessageBox(hWnd,rwheel,mouse,MB_OK);
break;
char text[50];
POINT p;
sprintf(text,"Mouse Position: X=%d, Y=%d",p.x,p.y);
LPCWSTR textmsg = (LPCWSTR)text;
SetWindowText(hWnd,textmsg);
break;
/*POINT pt;
GetCursorPos(&pt);
int a = (int)pt.x;
int b = (int)pt.y;*/
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
LPCTSTR className=(LPCTSTR)"Mouse Test";
WNDCLASSEX wc;
wc.cbSize =sizeof(WNDCLASSEX);
wc.style =CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
wc.lpfnWndProc =WndProc;
wc.cbClsExtra =0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL,IDI_WINLOGO);
wc.hCursor = LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW +1);
wc.lpszMenuName = NULL;
wc.lpszClassName = className;
wc.hIconSm = LoadIcon(NULL,IDI_WINLOGO);
MessageBoxA(NULL,"mouse events","mouse",MB_OK);
if(!RegisterClassEx(&wc))
{
MessageBox(NULL,(LPCWSTR)"Error Registering Class",(LPCWSTR)"Error RegisterClassEx",MB_OK | MB_ICONERROR);
return 1;
}
HWND hwmd = CreateWindowEx(0,className,(LPCWSTR)L"Mouse Test",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,400,300,NULL,NULL,hInstance,NULL);
ShowWindow(hwmd,SW_SHOWDEFAULT);
UpdateWindow(hwmd);
if(!hwmd)
{
MessageBox(NULL,(LPCWSTR)"Error Creating Window",(LPCWSTR)"Error CreateWindowEx",MB_OK | MB_ICONERROR);
return 1;
}
MSG msg;
while(GetMessage(&msg,NULL,0,0)>0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
Avec le code affiché, vous n'atteindrez jamais le code qui imprime la position de la souris. Vous cassez avant, toujours. En outre, la conversion d'un tampon de caractères en tampon de caractères larges ne fonctionnera pas non plus. Vous devez toujours utiliser des caractères larges ou remplacer votre code actuel pour utiliser TCHAR. –
pouvez-vous me dire comment obtenir les coordonnées de la souris alors? –