Posts Tagged ‘Windows’

从 Windows 7 开始吧

Windows 7,用了一段时间,感觉很好,如果你有2G内存,那建议还是升级吧,有钱正版,没钱MSDN 7600 18165加个那个什么神key,电话激活一下,甭提有多清爽。

使用Windows 7考虑的最多的还是其兼容性问题,先前我也曾因此而一而再再而三的推迟升级,主要是考虑VS8在其下的安装使用情况,不过在经过一段时间的体验后,发现,嗯,没问题,常用的软件没问题,小众的软件也基本无恙,Xp上能运行的,Windows 7中几乎都可以正常使用。至于那些很久没有更新的,已被作者遗弃的,懂行的小小改动下文件,大多也都能使用,当然了,至于那特变态的,咱们还是另寻其他类似的软件吧,大千世界,无独有偶嘛,没必要抱残守缺。

对于从XP直接上升到Win 7的我,让我感到欣喜的当然是其Aero界面和超级任务栏了,用一个词形容,就是色艺俱佳。打开Win 7 aero 再使用支持此特性的软件,整体上让人看着很华丽,有种怎么看怎么酷的感觉。

Win 7的超级任务栏可谓是这个版本的系统中最让人眼前一亮的特性了。通过把程序钉在任务栏上,Win 7的超级任务栏替换了以前Xp中快速启动栏的功能,同时也避免了在桌面摆放很多杂而乱的快捷方式问题。不仅如此,其他诸如Jump list的功能也是非常的实用。整体而言,Win 7 超级任务栏在功能上和苹果的dock栏已越来越接近了。

说说关于超级任务栏的使用问题,鉴于任务栏的长度有限,对于常用程序使用较多的朋友,可能觉得这个任务栏的不够用,虽然其内置提供了翻页切换的功能,但操作上总不是那么方便,至于通过Win 键加查找的方式,就更无效率可言了。对此,推荐 Object dock 中的 Tab dock 来配合Win 7的超级任务栏一起使用,把其他不便于钉在任务栏的程序快捷方式放入其中,这样便大大提高了程序选择的方便性。另外推荐一款名叫 Circle Dock 的软件,功能和 Tab Dock 差不多,只是比较两款软件的资源消耗和运行情况,我还是推荐使用 Tab Dock。因为经过使用发现,Circle Dock 在操作过程中,CPU占用相对较高,没有Tab Dock感觉流畅,可能是因为 C# 开发的缘故吧,速度上稍显逊色,不过两款软件在内存占用上都不高,仅仅才一二十兆左右,相比较Win 7系统启动后就要占个几百兆的内存而言,保持这两个软件中的任何一款随机运行在当下标配2G的内存环境下已无大碍了。因此,为了某些操作的方便和快捷,使用一些优秀的第三方软件,或是什么美化软件,已经可以无视资源占用情况了。

OK,time to show…

Windows 7 Desktop with tab dock of Object Dock

Windows 7 Desktop with tab dock of Object Dock

关于 #define WINVER

最近在在把一些程序从VC6迁移到VS2008,由此而关注到了Winodws版本的定义问题。

关于版本定义的关键无外乎为程序头文件中对于#define WINVER 和 #define _WIN32_WINNT 的使用,具体为:

#define WINVER 0xXXXX
#define _WIN32_WINNT 0xXXXX

该定义一般用于标示程序对运行环境的要求,另外在某些头文件中也有这样的宏定义。如果版本匹配的话就会在编译的时候将这些内容编译,否则就不编译。

定义正确的Windows版本,不仅关系到程序的正确编译,同时也关系到程序的正确运行;在升级的过程中,我就碰到了程序编译正确但运行出错的问题。实例稍候再续。

版本的定义关系到被编译到程序中的内容,这里主要是指系统提供的功能代码。Windows各个版本的功能虽然大差不差,但特定于某个系统功能还是存在的,于是关系到这些功能的API代码也就有所不一样。当我们在程序中定义了错误的系统版本,被编译进程序的内容便可能包含当前系统不支持的代码片段,这样的程序即使可能正确编译通过,但在运行的时候,由于在当前系统中找不到相应的内容资源,从而发生错误。这一点熟悉动态链接库(DLL)的人都很清楚,其实该问题就是和系统动态链接库有关。

Example:
下面为一段获取系统信息提示框的字体信息的代码片段:(编译环境从VC6迁移至VS2008,运行系统为Windows XP)

// Retrieves the message font info
NONCLIENTMETRICS ncm;
ncm.cbSize = sizeof(NONCLIENTMETRICS);
VERIFY(SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &ncm, 0));
 
// Creates the font according to the message font info
m_Font.CreateFontIndirect(&(ncm.lfMessageFont));

程序在VC6下编译运行都正确,迁移至VS2008后,编译正确,但运行时出错。原因是SystemParametersInfo调用失败,这和其传入的参数有关,根本在于 NONCLIENTMETRICS 这个结构体变量的定义。
(more…)

Windows Longhorn Concept Video

  以下这部视频是微软在出席2003年PDC会议上,展示其下一代操作系统Longhorn(也就是目前正在开发的Windows Vista,Longhorn是它的开发代码)时的情景,从视频可看到当时预定的许多炫耀的功能,不知在目前的Vista是否还能找到它们的身影。[Via:Downloadsquad]