Printf 擦除屏幕(使用 MoSync 库)
Posted
技术标签:
【中文标题】Printf 擦除屏幕(使用 MoSync 库)【英文标题】:Printf erases the screen (using the MoSync library) 【发布时间】:2013-10-29 19:12:57 【问题描述】:我有一些看起来像这样的简单代码:
printf("Press zero or back to exit\n");
maSetColor(0x0055ff);
maFillRect(10,10,100,100);
maUpdateScreen();
这会运行,但是当它是这样的时候:
maSetColor(0x0055ff);
maFillRect(10,10,100,100);
maUpdateScreen();
printf("Press zero or back to exit\n");
printf
擦除屏幕。
这是为什么?这是printf()
的正常属性吗?我应该使用不同的打印功能在所有内容上打印,而不是擦除所有内容吗?我知道我可以改用 MoSync 的 MaDrawText()
,但我想知道是否有一个也可以使用的打印功能。
【问题讨论】:
你怎么知道是printf
抹掉了屏幕?我对mosync不熟悉,但它看起来类似于curses或ncurses;如果是这样,将它与像printf
一样直接写入stdout
可能是个坏主意。为什么不想使用MaDrawText()
?
这就是我正在使用的。我只是不知道为什么printf
会擦除屏幕。我不确定这对于各种 C++ 库是否正常。
printf
擦除屏幕是不正常的,但我想 mosync 可能会将屏幕置于某种模式,其中正常字符的解释不同。我会尝试在printf
之前添加类似sleep(5)
的调用,以确保是printf
正在这样做。了解您正在运行的环境(操作系统、终端仿真器等)也会有所帮助。
【参考方案1】:
这是预期行为,printf()
将在单独的屏幕中显示文本。另一种方法是maDrawText(int left, int top, const char* str);
,它允许您在绘画区域中绘制文本。
您的代码可能如下所示:
//Draw the Rectangle
maSetColor(0x0055ff);
maFillRect(10,10,100,100);
//Draw the text
maSetColor(0xffffff);
maDrawText(10,10,"Press zero or back to exit");
//Update the screen to reflect changes
maUpdateScreen();
您的第一个示例有效,因为您在更新屏幕之前调用了该函数,因此 printf() 不会在您当前的绘图之上绘制。
【讨论】:
以上是关于Printf 擦除屏幕(使用 MoSync 库)的主要内容,如果未能解决你的问题,请参考以下文章
由于 std::pair 导致的 GCC (MoSync) 中的 C++ 构建错误