c - getmousestate函数 打开BGI库

标签 c bgi

我目前正在使用 C 的过时开放 BGI 库,因为这是我的大学希望我们做的,但我不知道如何使用这个函数。

extern void getmousestate(g_mousestate *state);

定义:

void getmousestate(g_mousestate * state)
{
    CHECK_GRAPHCS_INITED
    state->x = sharedStruct->mouseX;
    state->y = sharedStruct->mouseY;
    state->buttons = sharedStruct->mouseButton;
}

g_mousestate 定义:

typedef struct mousestate {
    int x, y;
    int buttons;
}g_mousestate;

sharedStruct 定义:

static SHARED_STRUCT * sharedStruct;

SHARED_STRUCT 定义:

typedef struct
{
  int mouseX, mouseY;
  int mouseButton;
  int keyCode;
  int keyLetter;
  int visualPage;
} SHARED_STRUCT;

我尝试做的事情是打电话:

g_mousestate *a;
getmousestate(a->x);

但是我不知道要初始化什么...

我以为这个函数可以告诉我鼠标的位置以及按下的按钮等,但我不知道如何正确调用该函数。非常新手,如有任何帮助,我们将不胜感激。

最佳答案

OK,初学者,让我们开始吧。你想做的:

g_mousestate *a;
getmousestate(a->x);

获取鼠标的 x 位置。首先请注意,您已将 a 声明为指针,但尚未为其分配内存(它尚未指向任何内容)。所以首先你必须有 g_mousestate 对象的内存:

g_mousestate a;
getmousestate(&a);

现在 a 不再是一个指针,而是一个对象,您通过使用 a 的地址将指针传递给 getmousestate 函数& 运算符(“地址”)。

您不需要再做任何事情,因为如果您查看函数的定义,您会看到所有成员都由它填充。

关于c - getmousestate函数 打开BGI库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49027801/

相关文章:

c - 解释devm_kzalloc参数和用法

c - 如何在给定边长的情况下找到斜角四面体的面的角度

C代码,这个控制语句程序缺少什么?

c - 在 C 和 Labview 之间共享一个变量?

c - 读取文件的第一行不起作用

c++ - 在代码块中运行我的第一个图形程序

c - SIOCADDRT 的 IPv6 等价物是什么?

c++ - 在不使用 graphics.h 的 pieslice() 的情况下,在 C 中生成一个 "pieslice"

c++ - 无法在 VS Code 中多次使用预启动任务

c++ - C++ 中的 B 样条曲线