WEB开发网
开发学院软件开发VC 颜色支持,控制台应用 阅读

颜色支持,控制台应用

 2006-07-20 11:38:36 来源:WEB开发网   
核心提示: [MainWindow]X=282Y=442Width=417Height=234如你所见, IniFile 提供了两个函数,颜色支持,控制台应用(7),SaveWinPos 和 RestoreWinPos.表示保存/恢复窗口位置,Figure 6 是其实现代码,Jim 还指出: GetM
[MainWindow]
X=282
Y=442
Width=417
Height=234

如你所见, IniFile 提供了两个函数,SaveWinPos 和 RestoreWinPos.表示保存/恢复窗口位置。Figure 6 是其实现代码,非常简单。保存/恢复函数调用了更多的原始函数,如 GetIntVal 和SetVal 来读/写键/值对。然后这些函数又用托管服务 (interop services )调用 Win32 API 函数 GetPrivateProfileInt 和 WritePrivateProfileString, 从而完成实际的对 INI 文件的读/写。唯一的技巧是当你恢复窗口位置时,如果你想要你的窗体(Form)关注它的位置(Form.Location)(关于这方面更多信息, 参见 2003年4月的专栏文章)。你必须记住用下面这的一行代码:

form.StartPosition = FormStartPosition.Manual;

机敏的读者会想起我还欠一个关于对 INI 文件构造函数第二个参数的解释。Win32 的Get/WriteProfileXxx 都有一个参数是一个 INI 文件名。如果你传一个相对文件名, 如“foo.ini”,Windows 便在 WINDOWS 目录下进行查找。如果你给一下绝对路径名,它便使用这个绝对路径。你可能要基于每个用户来保存窗口 的位置(Jans 应该得到她最后一次使用程序的窗口位置,而不 Fred 的),你也许想把 INI 文件放到用于你的程序的用户应用数据文件夹里。这就是第二个参数 useAppDataPath 的作用,如果你给它赋值为 true,IniFile 就会在用户应用数据文件夹里找 INI 文件。

IniFile 是怎么做到的呢?这个 Application 类做这这种事情很简单:Application.UserAppDataPath 保存着用户数据文件夹的路径名。 这是一个其长无比的路径名,如:\Base\[CompanyName]\[ProductName]\[ProductVersion],其中 Base 就像C:\Documents and Settings\[username]\Application Data。 任何时候其版本管理都是免为其难的, 公共语言运行时添加了一个产品版本号到这个路径中,从你的视角看,它既是一个特性,同时也是一个灾难:如果你在版本号中使用星号(例如:1.0.*)以便让框架每次编译都创建一个新的版本号,很多程序员这么做,那么你会最终会有上百个文件夹——每次重编译或运行时都会产生一个新的文件夹。也许微软的那帮家伙打算从事磁盘生意,你可以从版本号中删除星号,或者是删除路径名中的版本部分,仰或将文件放到别处。和往常一样,你总是可以从本文顶部的链接处得到全部源代码。

更新

在我2003年11月的专栏文章里,我谈到了怎样通过枚举窗口以到弹出菜单的HWND(窗口句柄)以及用特定的类名“#32768”查找窗口。读者 Jim White 提出下列技巧:如果你用NULL作为窗口句柄调用 GetMenuItemRect,Windows 会返回一个弹出式窗口的 HWND---神奇吧!!这也 恰好证明了即使像我这样的所谓专家每天也能学到许多东西。Jim 还指出: GetMenuItemRect 的这个技巧应用在“在 Windows 2000 和 Windows XP上很风光,但是在 Windows 98 上就歇菜了,尽管 MSDN上坚持说可以”。

上一页  2 3 4 5 6 7 

Tags:颜色 支持 控制台

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接