赞
踩
- #include <graphics.h>
- #include <Windows.h>
- #include <stdio.h>
- int main()
- {
- int rW = GetSystemMetrics(SM_CXSCREEN); // 屏幕宽度 像素
- int rH = GetSystemMetrics(SM_CYSCREEN); // 屏幕高度 像素
-
- HWND hwnd = initgraph(rW, rH, EW_DBLCLKS); // 初始化绘图窗口并获取窗口句柄(以 EasyX 为例)
-
- LONG l_WinStyle = GetWindowLong(hwnd, GWL_STYLE); // 获取窗口信息
- // 设置窗口信息 最大化 取消标题栏及边框
- SetWindowLong(hwnd, GWL_STYLE, (l_WinStyle | WS_POPUP | WS_MAXIMIZE) & ~WS_CAPTION & ~WS_THICKFRAME & ~WS_BORDER);// 直接修改窗口样式
- // SendMessage(hwnd, WM_SYSCOMMAND, SC_MOVE | HTCAPTION, 0);
- SetWindowPos(hwnd, HWND_TOP, 0, 0, rW, rH, 0);
- ExMessage m; // 定义消息变量
- FILE* fp = fopen("a.txt", "w+");
-
- POINT point;
- char buff[1024] = { 0 };
- while (true)
- {
- // 获取一条鼠标或按键消息
- m = getmessage(EM_MOUSE | EM_KEY);
- GetCursorPos(&point);
- ScreenToClient(hwnd, &point); // 将鼠标指针位置转换为窗口坐标
- if (point.x < 0 || point.y < 0 || point.x > rW || point.y > rH)
- {
- fprintf(fp, "在窗口外\n");
- sprintf(buff, "在窗口外 源pos:%d %d 转换后pos:%d %d", m.x, m.y, point.x, point.y);
- // cleardevice();
- outtextxy(200, 200, buff);
- }
- else
- {
- fprintf(fp, "在窗口内\n");
- sprintf(buff, "在窗口内 源pos:%d %d 转换后pos:%d %d", m.x, m.y, point.x, point.y);
- // cleardevice();
- outtextxy(200, 200, buff);
- }
- switch (m.message)
- {
- case WM_MOUSEMOVE:
- // 鼠标移动的时候画红色的小点
- putpixel(m.x, m.y, RED);
- SendMessage(hwnd, WM_SYSCOMMAND, SC_MOVE | HTCAPTION, 0);
- /*point.x = m.x;
- point.y = m.y;*/
-
- break;
- case WM_LBUTTONDBLCLK:
- SetWindowPos(hwnd, HWND_TOP, 0, 0, rW, rH, SWP_NOSIZE);
- break;
- case WM_LBUTTONDOWN:
- // 如果点左键的同时按下了 Ctrl 键
- if (m.ctrl)
- // 画一个大方块
- rectangle(m.x - 10, m.y - 10, m.x + 10, m.y + 10);
- else
- // 画一个小方块
- rectangle(m.x - 5, m.y - 5, m.x + 5, m.y + 5);
- break;
-
- case WM_KEYDOWN:
- if (m.vkcode == VK_ESCAPE)
- return 0; // 按 ESC 键退出程序
- break;
- }
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。