C++ Printf擦除屏幕(使用MoSync库)

C++ Printf擦除屏幕(使用MoSync库),c++,mosync,C++,Mosync,我有一些简单的代码如下所示: 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"); 这会运行,但当它像这样时: print

我有一些简单的代码如下所示:

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("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()
,但我想知道是否有打印功能也可以工作。

这是预期的行为,将在单独的屏幕中显示文本。另一种选择是允许您在绘制区域中绘制文本

您的代码可能如下所示:

//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,但它看起来像是诅咒或咒语;如果是这样的话,将其与直接写入
stdout
类似
printf
可能是个坏主意。为什么不使用
MaDrawText()
?这就是我正在使用的。我只是不知道为什么
printf
会擦除屏幕。我不确定这是否对于各种C++库是正常的。对于代码> Prtff<代码>,屏幕是不正常的,但是我想MySyc可能会把屏幕放在一个模式中,其中不同的字符被解释。我会尝试在
printf
之前添加一个类似
sleep(5)
的调用,以确保是
printf
在执行此操作。了解您运行的环境(操作系统、终端仿真器等)也会有所帮助。