curs_getyx(3x) curs_getyx(3x)
getyx, getparyx, getbegyx, getmaxyx - curses カーソルとウインドウの座標を取得するマクロ
#include <curses.h> void getyx(WINDOW *win, int y, int x); void getparyx(WINDOW *win, int y, int x); void getbegyx(WINDOW *win, int y, int x); void getmaxyx(WINDOW *win, int y, int x);
マクロ getyx は指定のウインドウの現在のカーソル位置を 2 つの整数変数 y と x の中に格納します。 マクロ getparyx は、win が子ウインドウの場合、親ウインドウに 相対的な子ウインドウの開始位置の座標を 2 つの整数変数 y と x の 中に格納します。 そうでない場合、y と x に -1 を格納します。 マクロ getbegyx と getmaxyx はそれぞれ指定のウインドウの 現在の開始位置の座標とサイズを getyx のように格納します。
これらのマクロの戻り値は未定義です。 (ですから代入文の右辺値として使ってはいけません。)
これらのインターフェイスはすべてマクロです。 変数 y と x の前に "&" は必要ありません。
マクロ getyx, getparyx, getbegyx, getmaxyx は XSI Curses standard, Issue 4 に記載されています。 この実装はさらに、curses の古いバージョンとの互換性のために 関数 getbegx, getbegy, getcurx, getcury, getmaxx, getmaxy, getparx, getpary を提供しています。 X/Open Curses はこれに対処していませんが、多くの実装は これらのマクロに対応する値を含む WINDOW 構造体のメンバを 提供しています。 移植性のために最善なのは、WINDOW 中のデータを使うことに 頼らないことです。いくつかの実装は WINDOW を不透明としている からです (メンバを直接使うことを許していない)。 不透明な構造体の問題だけでなく、異なる実装では、同じような 名前のメンバが同じような値を持っていないかもしれません。 たとえば、ncurses における WINDOW._maxx と WINDOW._maxy の 値は (少なくとも release 1.8.1 からは) 他のいくつかの実装の それと異なっています。 この違いはマクロ getmaxyx によって隠されているのです。
curses(3x), curs_legacy(3x), curs_opaque(3x) curs_getyx(3x)