#include <Windows.h>#include <stdio.h>int main(){ MSG msg; while (GetMessage(&msg, NULL, 0, 0)) { if (msg.message == WM_LBUTTONDOWN) // 判断消息类型 { POINT p = { LOWORD(msg.lParam), HIWORD(msg.lParam) }; // 获取鼠标坐标 printf("Mouse left button down at (%d, %d)\n", p.x, p.y); } TranslateMessage(&msg); DispatchMessage(&msg); } return 0;}这一段代码可以读取鼠标在哪个窗口的坐标
时间: 2024-01-27 09:04:16 浏览: 127
这段代码不能直接读取鼠标在哪个窗口的坐标。它只是在Windows操作系统中使用消息机制来获取鼠标左键按下时的坐标,并没有直接读取鼠标所在的窗口。
如果需要读取鼠标在哪个窗口的坐标,可以使用Windows API函数GetCursorPos获取鼠标坐标,然后使用WindowFromPoint函数获取该坐标所在的窗口句柄。示例代码如下:
```
#include <Windows.h>
#include <stdio.h>
int main()
{
POINT p;
HWND hwnd;
if (GetCursorPos(&p))
{
hwnd = WindowFromPoint(p);
printf("Mouse is in window 0x%x at (%d, %d)\n", hwnd, p.x, p.y);
}
else
{
printf("Failed to get mouse coordinates.\n");
}
return 0;
}
```
该代码先使用GetCursorPos函数获取鼠标坐标,然后使用WindowFromPoint函数获取该坐标所在的窗口句柄,并输出窗口句柄和坐标。需要注意的是,该代码只能在Windows操作系统中运行。
相关问题
怎么用vc++运行下面的代码,#include <windows.h> #include <stdio.h> #pragma comment(lib, "user32.lib") HHOOK g_hHook = NULL; LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) { if (nCode >= 0) { KBDLLHOOKSTRUCT* p = (KBDLLHOOKSTRUCT*)lParam; char ch = (char)p->vkCode; printf("%c\n", ch); } return CallNextHookEx(g_hHook, nCode, wParam, lParam); } int main() { g_hHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardProc, NULL, 0); if (g_hHook == NULL) { printf("Failed to set hook!\n"); return 1; } printf("Press any key to quit.\n"); MSG msg; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } UnhookWindowsHookEx(g_hHook); return 0; }
VC 指的是 Visual C++ 吗?如果是的话,你可以这样来运行代码:
1. 打开 Visual C++,在菜单栏选择文件 -> 新建 -> 工程。
2. 在弹出的“新建工程”窗口中,选择控制台应用程序,然后点击下一步。
3. 在下一个窗口中,输入你的工程名称,并选择一个合适的保存位置,然后点击下一步。
4. 在下一个窗口中,选择一个合适的项目模板,然后点击完成。
5. 你的工程就创建好了,你可以在左边的解决方案资源管理器中找到你的工程,并在右边的编辑器中编写代码。
6. 在编写完代码之后,在菜单栏选择调试 -> 开始执行(或按下 F5 键),你的代码就会在 VC 中运行。
希望这些信息能够帮到你。
C语言Windows.h库函数及其使用例子
Windows.h 是 Windows 操作系统的头文件,其中包含了大量的函数和常量,用于 Windows 应用程序的开发。下面是一些常用的 Windows.h 库函数及其使用例子:
1. MessageBox 函数
该函数用于显示一个消息框,提示用户执行某些操作或显示一些信息。它的原型如下:
```c
int MessageBox(
HWND hWnd,
LPCTSTR lpText,
LPCTSTR lpCaption,
UINT uType
);
```
其中,hWnd 为消息框的父窗口句柄,lpText 为消息文本,lpCaption 为消息框的标题,uType 为消息框的类型。下面是一个例子:
```c
#include <Windows.h>
int main()
{
MessageBox(NULL, "Hello, World!", "Message", MB_OK);
return 0;
}
```
该程序会弹出一个消息框,显示 "Hello, World!",标题为 "Message",并且有一个 OK 按钮。
2. GetWindowText 函数
该函数用于获取指定窗口的文本内容。它的原型如下:
```c
int GetWindowText(
HWND hWnd,
LPTSTR lpString,
int nMaxCount
);
```
其中,hWnd 为窗口句柄,lpString 为输出缓冲区,nMaxCount 为输出缓冲区的大小。下面是一个例子:
```c
#include <Windows.h>
#include <stdio.h>
int main()
{
HWND hWnd = GetDesktopWindow();
TCHAR title[256] = { 0 };
GetWindowText(hWnd, title, sizeof(title));
printf("Desktop title: %s\n", title);
return 0;
}
```
该程序会获取桌面窗口的标题,并打印出来。
3. CreateWindow 函数
该函数用于创建一个窗口。它的原型如下:
```c
HWND CreateWindow(
LPCTSTR lpClassName,
LPCTSTR lpWindowName,
DWORD dwStyle,
int x,
int y,
int nWidth,
int nHeight,
HWND hWndParent,
HMENU hMenu,
HINSTANCE hInstance,
LPVOID lpParam
);
```
其中,lpClassName 为窗口类名,lpWindowName 为窗口标题,dwStyle 为窗口样式,x 和 y 分别为窗口左上角的坐标,nWidth 和 nHeight 分别为窗口的宽和高,hWndParent 为窗口的父窗口句柄,hMenu 为菜单句柄,hInstance 为当前实例句柄,lpParam 为创建窗口时传递的参数。下面是一个例子:
```c
#include <Windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASS wc = { 0 };
wc.lpfnWndProc = WndProc;
wc.hInstance = hInstance;
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wc.lpszClassName = "MyWindowClass";
RegisterClass(&wc);
HWND hWnd = CreateWindow(
"MyWindowClass",
"Hello, World!",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL
);
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
MSG msg = { 0 };
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
```
该程序会创建一个窗口,并显示 "Hello, World!"。当用户关闭窗口时,程序会退出。
阅读全文