#include<windows.h>
#include<stdlib.h>
#include<string.h>
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam);
BOOL InitWindowsClass(HINSTANCE hInstance);
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow);
HWND hWndMain;
RECT rect1;//矩形结构体,记录了图形的信息
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
MSG Message;
if(!InitWindowsClass(hInstance))//初始化窗口类
return FALSE;
if(!InitWindows(hInstance,nCmdShow))//初始化窗口
return FALSE;
while(GetMessage(&Message,0,0,0))
{
TranslateMessage(&Message);//消息循环
DispatchMessage(&Message);
}
return Message.wParam;
}
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)
{
HDC hDC;
WORD x,y;//鼠标位置
HCURSOR hCursor;
static BOOL bCircle=FALSE,bRect=FALSE;//绘制圆和矩形的标志变量
PAINTSTRUCT ps;
x=LOWORD(lParam);//得到鼠标的位置
y=HIWORD(lParam);
switch(iMessage)
{
case WM_LBUTTONDOWN://处理按下鼠标左键的消息
if(wParam&MK_CONTROL)//同时按下ctrl键
{
bCircle=TRUE;
bRect=FALSE;
rect1.left=x;
rect1.top=y;
}
else if(wParam&MK_SHIFT)//同时按下上档键时
{
bRect=TRUE;
bCircle=FALSE;
rect1.left=x;
rect1.top=y;
}
else
{
bRect=FALSE;
bCircle=FALSE;
}
break;
case WM_LBUTTONUP:
bRect=FALSE;
bCircle=FALSE;
break;
case WM_MOUSEMOVE://处理鼠标移动信息
rect1.right=x;
rect1.bottom=y;
if(bRect==TRUE||bCircle==TRUE)
{
InvalidateRect(hWnd,NULL,TRUE);//发出重绘消息
}
break;
case WM_PAINT:
hDC=BeginPaint(hWnd,&ps);
if(bCircle==TRUE)
{
Ellipse(hDC,rect1.left,rect1.top,rect1.right,rect1.bottom);//绘制圆形
}
if(bRect==TRUE)
{
Rectangle(hDC,rect1.left,rect1.top,rect1.right,rect1.bottom);//绘制矩形
}
EndPaint(hWnd,&ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
return 0;
}
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow)
{
HWND hWnd;
hWnd=CreateWindow("6_5",
"鼠标显示实例程序",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
0,
CW_USEDEFAULT,
0,
NULL,
NULL,
hInstance,
NULL);
if(!hWnd)
return FALSE;
hWndMain=hWnd;
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}
BOOL InitWindowsClass(HINSTANCE hInstance)
{
WNDCLASS wndclass;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH));
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hInstance=hInstance;
wndclass.lpfnWndProc=WndProc;
wndclass.lpszClassName="6_5";
wndclass.lpszMenuName=NULL;
wndclass.style=0;
return RegisterClass(&wndclass);//返回窗口注册值
}
6_5.rar_site:www.pudn.com_鼠标 画圆
版权申诉
191 浏览量
2022-09-14
16:12:13
上传
评论
收藏 1.1MB RAR 举报
JaniceLu
- 粉丝: 79
- 资源: 1万+
最新资源
- MATLAB大数据仿真案例-蚁群算法(ACO)用于求解旅行商(TSP)问题.rar
- MySQL基础知识-个人笔记.rar
- Project8.ipynb
- Python实现BWO-LSTM白鲸算法优化长短期记忆神经网络时间序列预测(完整源码和数据)
- C语言实现文件读写操作的几种常用方法-C 语言.rar
- RK 3568 Android11 版本的梯形校正补丁
- 基于pyqt yolov5 dlib的驾驶员行为监控系统源码+模型.zip
- python代码案例详解-旅行商问题的多种求解算法.rar
- 单相电力电子负载仿真,PWM整流+单相并网逆变
- C语言功能模块(配置文件读取 、debug日志记录等).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈