颜色支持,控制台应用2011-01-07知足者颜色支持控制台应用保存用户设置我读了你在 2001年7月 的专栏文章“怎样创建256色工具条”(编者注:中文译文参见在线杂志第11期)。然而我听说,除非你的IE浏览器为3.0或以后的版本,否则,Windows95 不支持256色工具条,在这种情况下,应用程序将使用一个默认的16位色工具条。我怎样能够判断一个256位色或更高颜色位的工具条是否被支持?Bayland Park

我喜欢这样——现在是2004年了,我仍能得到关于 Windows95 的问题。有一种简单的方法可以知道当前屏幕或窗口支持多少位颜色, 只要获取窗口或屏幕设备上下文的句柄(HDC),然后调用 GetDeviceCaps (得到设备性能),就可以得到颜色位面(PLANS)和每个象素所含的比特位(BITSPIXEL),两者相乘就可以得到在某个象素中总的比特位数。
CWindowDC dc(NULL);
int nPlanes = dc.GetDeviceCaps(PLANES);
int nBitsPixel = dc.GetDeviceCaps(BITSPIXEL);
int totalBits = nPlanes * nBitsPixel;
通常,对于一个256色系统或者16位、24位或32位的真彩系统来说,其颜色位面是1,每个象素的比特位数是8。GetDeviceCaps 能够得到许多有用的信息,像逻辑英寸象素的个数、屏幕高宽比率、光栅性能和其它一些信息。我写过一个小程序ColorBits (如 Figure 1 所示)。你 可从本文开始处的链接下载这个程序的源代码。

Figure 1 ColorBits我见到过一些即可以作为控制台应用程序运行,也可以作为基于Windows的应用程序运行的程序。即:如果你在命令提示符键入程序的名字,它就会作为一个普通的基于 Windows 的应用程序运行;如果你输入一个命令行选项,如:“-batch”,它就会以批处理模式作为一个控制台应用程序运行,同时所有输出被定向到控制台。请问这个功能是怎么做的?Joe Tadmann

我没法告诉你其它的应用程序是怎么这样做的,因为在 Window 中,总是有多种方法来给操作系统加壳,但是我可以向你展示实现这种功能的一种途径---通过 Visual Studio.NET 来实现。也许你没有注意到,你可以在命令提示符键入 devenv 来启动 Visual Studio .NET,这时,Windows 启动 其图形用户界面。但是如果你键入 devenv 的同时再加上一个命令行开关,例如,-? 表示帮助,-bulid 表示编译并生成你的工程,它将以控制台模式运行,没有用户交互界面。例如:
devenv -build MyProject.sln
上面这行命令生成解决方案文件 MyProject.sln。遗憾的是,自从GUI(图形用户界面)出现以后,太多的程序员已经忘了命令行的强大功能,这些强大的命令行功能使用户能以批处理模式从脚本中运行你的应用程序。你可以 确信微软的那帮家伙是不会在 Visual Studio 中打开某个工程来生成他们的产品的!如果你写了一个确实能实现某些功能的程序,比如,把.wav文件转换成.mp3,或者通过计算预测股票, 这些功能适合用批处理接口来实现。如果你的程序没有人守着就不能成批压缩收藏的音乐乐曲或分析前一天的股票信息,那你的程序有什么好的呢?