سؤال

قد تكون هذه مشكلة في فهمي مع اللعنات أكثر من بيرل، لكن الرجاء مساعدتي. أنا أستخدم cedses.pm التي تعمل بشكل جيد للغاية إلا عندما أحاول إنشاء لعنات "نافذة". رمز المثال:

use Curses;
initscr;
$w=newwin(1,1,40,40);
$w->addstr(20,20,"Hello");
$w->refresh;
refresh;
endwin;

نواتج لا شيء. عدم استخدام نافذة تعمل بشكل جيد:

use Curses;
initscr; 
$w=newwin(1,1,40,40); 
addstr(20,20,"Hello"); 
refresh; 
endwin; 
هل كانت مفيدة؟

المحلول

تحتاج إلى الحصول على حججك في المكان المناسب، وليس من السهل أن نتذكر الرقم الذي هو ما. يجب أن أنظر إليها دائما بعد محاولة جميع التباديلات الخاطئة أولا. أنا فقط أنظر إلى صفحات الرجل للواجهة C ثم قم بتغييرها إلى بناء جملة بيرل.

ال newwin وظيفة، موثقة في curs_window. صفحة الرجل، يأخذ:

newwin( height, width, starty, startx )

قمت بإعداد نافذة كانت ذات صف واحد عريض عمود واحد، بدءا من الصف 40 العمود 40. ومع ذلك، فأنت تقول addstr لوضع نص في الصف 20 العمود 20 في تلك النافذة. هذا خارج الإطار 1x1 الذي قمت بإعداده، لذلك لا ترى أي شيء.

جرب هذا لمعرفة ما إذا كان يعمل لك. إذا كان ذلك يعمل، فحاول ضبط قيم النافذة للحصول على الإطار الذي تريده.

use Curses;
initscr;

$w = newwin(
    1,       # height (y)
    COLS(),  # width  (x)
    0,       # start y
    1        # start x
    );

$w->addstr( 
    0,       # relative y to window
    0,       # relative x to window
    "Hello" 
    );

$w->refresh();

sleep 10;
endwin;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top