falla.zhang

导航

WINCE 控制台

1.标准win32
在Win32 Window应用程序中启用Console输出
在某些时候,我们可能需要在Win32窗口应用程序中打开控制台窗口,打印一些消息,或者作为当前程序的另外一个人机交互界面,或者为了帮助调试程序。为了达到这种效果,需要了解函数AllocConsole和C-Runtime的freopen函数。
AllocConsole函数会为当前的窗口程序申请一个Console窗口。这是MSDN上对AllocConsole的介绍:
AllocConsole

The AllocConsole function allocates a new console for the calling process.

BOOL AllocConsole(void);函数调用成功,返回非零值,调用不成功则返回0.

在为当前窗口程序申请到console后,我们需要调用C-Runtime的freopen函数将标准输出(stdout)重定位到新申请的console。
freopen的原型如下:
FILE *freopen(
   const char *path,
   const char *mode,
   FILE *stream
);我们调用的时候是这么着传入参数的:
freopen("CONOUT$","w",stdout);其中"CONOUT$"是指代当前console的特殊字符串,"w"表明以written模式打开这个console,stdout指代的是系统的标准输出设备。

下面是整个的代码:

if(AllocConsole())
{
  freopen("CONOUT$","w",stdout);
  printf("hello, world!");
}

2.请问如何在WINCE下写console程序(控制台程序,DOS界面的)?
使用EVC下的WCE   Application项目,入口函数是WinMain()  
因为WCE下的控制台和DOS窗口是不一样的,WCE下的控制台是一个窗口,因此没有所谓的Console程序,如果你在WinMain()中使用printf语句那么将输出到这个窗口中。  
同时WCE的模拟器好像没有提供这个控制台窗口,它是要在定制CE平台时选择的。因此在模拟器上运行好像没有结果。

posted on 2010-02-01 10:55  falla.zhang  阅读(1784)  评论(0编辑  收藏  举报