我在Windows中使用PDCurses和Visual Studio 2017.该库是使用MSVC编译器编译的,我根据README使用它编制了win32a版本。我做了一些测试,并能够将库链接到一些小型测试程序。
然后我尝试测试this howto中找到的关于如何使用鼠标的示例,但Visual Studio告诉我getmouse
函数没有收到任何参数(它应该收到MEVENT*
}参数)。 Intellisense指出我的声明
unsigned long getmouse(void);
看curses.h
我找到了位
#ifdef NCURSES_MOUSE_VERSION
# define getmouse(x) nc_getmouse(x)
#endif
nc_getmouse
确实收到了正确的论点:
int nc_getmouse(MEVENT *);
也许我在构建库时忘了设置一些选项?
有人可以在这里给我一个指导吗?这是我第一次使用这个库。
答案 0 :(得分:0)
好吧,您使用的是ncurses鼠标API,而不是本机PDCurses API。这很好,但是如果你想这样做,你应该在包含curses.h之前#define NCURSES_MOUSE_VERSION。来自PDCurses文档:
nc_getmouse() returns the current mouse status in an MEVENT
struct. This is equivalent to ncurses' getmouse(), renamed to
avoid conflict with PDCurses' getmouse(). But if you define
NCURSES_MOUSE_VERSION (preferably as 2) before including
curses.h, it defines getmouse() to nc_getmouse(), along with a
few other redefintions needed for compatibility with ncurses
code. nc_getmouse() calls request_mouse_pos(), which (not
getmouse()) is the classic equivalent.