Micheal___ 2022-08-01 18:14 采纳率: 50%
浏览 87
已结题

C语言,怎么实现点击鼠标后,移动就画线,松开鼠标后就不画呢?

我是初学者,在慕课上看的翁恺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;

}

  • 写回答

2条回答 默认 最新

  • Python-AI Xenon 2022-08-02 14:31
    关注

    可以参考一下:

    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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月14日
  • 已采纳回答 8月6日
  • 修改了问题 8月1日
  • 修改了问题 8月1日
  • 展开全部

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效