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;

}

可以参考一下:

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);
}