我是初学者,在慕课上看的翁恺ls的课,但是他并没有讲这些。我在网上也没找到是哪个函数来表示。。来个大神教教吧。这是我目前的程序,该程序只要一移动鼠标,就会画线。(第一个头文件是翁恺教授让我们添加的一些自定义函数,在一个项目里面)
#include "acllib.h"
#include<stdio.h>
void MouseListener(int x,int y,int button,int event)
{ static int ox=100;/起始坐标/
static int oy=100;
printf("x=%d,y=%d,button=%d,event=%d\n",x,y,button,event);
beginPaint();
line(ox,oy,x,y);
endPaint();
ox=x,oy=y;
}
void keyListener(int key, int event)
{
printf("key=%d,event=%d\n",key,event);
}
int Setup()
{
initConsole();
initWindow("test",DEFAULT, DEFAULT, 800,800);
registerMouseEvent(MouseListener);
registerKeyboardEvent(keyListener);
beginPaint();
endPaint();
return 0;
}
可以参考一下:
int main()
{
// 初始化图形窗口
initgraph(640, 480);
ExMessage m; // 定义消息变量
while (true)
{
// 获取一条鼠标或按键消息
m = getmessage(EM_MOUSE | EM_KEY);
switch (m.message)
{
case WM_MOUSEMOVE:
// 鼠标移动的时候画红色的小点
putpixel(m.x, m.y, RED);
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 键退出程序
}
}
// 关闭图形窗口
closegraph();
return 0;
}
用消息
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_LBUTTONDOWN: //按下左键
break;
case WM_LBUTTONUP: //抬起左键
break;
case WM_MOUSEMOVE: //移动鼠标
break;
case WM_DESTROY: //退出善后
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, message, wParam, lParam);
}