当前位置: 首页 > 图文教程 > 开发语言 > VC++ > 增加状态栏按钮及其它......

VC++
宏的妙用
泛型编程与设计新思维
C++中的虚函数(一)
C++模板元编程
C++多态技术
通用结构复制函数
<C++实践系列>C++中的虚函数(virtual function)
<C++实践系列>C++中的引用(reference)
<C++实践系列>C++中的异常(exception)
<C++实践系列>C++中的模板(template)
构造函数中的this指针
串行化(Serialization)
二进制浏览、编辑的实现
介绍一个模板动态数组
VC++界面一揽子解决方案(第三版) 介绍
VC++通用GIS功能开发解决方案 2.0v 介绍
确定有穷自动机分析内核
委托、信号和消息反馈的模板实现技术
按照类型名称动态创建对象
Boost中应用的泛型编程技术

VC++ 中的 增加状态栏按钮及其它......


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 99 ::
收藏到网摘: n/a

C++ Q&A 专栏...


原著:Paul DiLascia

翻译:lowiq



原文出处:MSDN Magazine December 2001(C++ Q&A)

原代码下载:CQA0112.exe (52KB)

  1. 停止屏幕保护
  2. 侦测屏幕的分辨率
  3. 增加状态栏按钮
我正在写一个紧急情况警报程序,根据所收到的警报消息,我的程序必须能够停止屏幕保护程序或者节能模式并显示显示报警消息,当然也可以 在屏幕保护程序之上显示报警消息。我尝试了用 SetWindowPos(&wndTopMost...),结果不灵,在 Windows 2000 的屏保中也没有成功。我的程序要在 Windows 2000 里运行,请问如何在特定的事件发生时终止屏幕保护?
Jungkun
早期在 Windows 3.1 和 Windows 98 时代,你只需获取活动窗口,并且简简单单地发送一条 WM_CLOSE 消息即可:
PostMessage(GetActiveWindow(),WM_CLOSE,0,0); 
  是不是看来很简单?但在Windows 2000下,这个方法不再有效。Windows 2000 中有单独的桌面概念,所以,屏保程序是运行在一个名叫 Screeen-Saver 的特殊桌面中。使用 GetActiveWindow 或是 GetForegroundWindow 是找不到屏保的窗口的,因为它们运行在其他的桌面下。所以,你必须打开 该桌面,枚举它的窗口,然后发送 WM_CLOSE 消息给它。
有关细节参见 Figure 1。

我用 C++ 如何侦测屏幕的分辨率是 640X480 还是 600X800 ?
Amir Dashti
Tehran
只需简单地调用 GetSystemMetrics:
// width int cx = GetSystemMetrics(SM_CXSCREEN); // height int cy = GetSystemMetrics(SM_CYSCREEN); 
  GetSyStemMetrics 是一个很容易使用的函数,它可以用来获得各种类型的全局尺寸,象一个图标的大小或是窗口标题栏的高度。在Windows 2000中 ,有些像 SM_CXVIRTUALSCREEN 和 SM_CYVIRTUALSCREEN 这样的新参数,可以用了获得多监视器系统屏幕虚拟尺寸。无论作为一个 Windows 新丁还是一个老鸟,都应该仔细察看 GetSystemMetrics 的文档,学习所有你能获得不同的系统参数尺寸。详见最新的 Platform SDK 中的 GetSystemMetrics。 这个函数是你经常要用的一个函数,每一版的 Windows 中都有新的变化。

这可能是一个比较简单的问题,我想知道如何在某个应用程序的状态栏添加按钮,就像 Windows 快速启动栏里的按钮那样?

Guru India

我怎样才能在应用程序的状态栏上增加一个按钮或是一个编辑控件(带有上下键的),就象你在 1997 年 MSJ C++ Q&A 专栏中做的 VIRGIL 那样?
Jef Pavlat

状态栏是基于 Windows 通用控件 msctls_statusbar32,这个通用控件并不提供任何方法来添加子窗口。这是不是意味着我们就没有办法解决上面提出的问题呢?当然不!在 Windows 中,在 某些控件或是窗口中添加子窗口并不是将它们作为这些控件的子窗口,而是作为这些控件的兄弟窗口。在现在这种情况下,你有两个选择:一是建立一个“超级状态栏“,它包含一个普通状态栏 以及其它控件子窗口(就像 Windows 结合列表框和编辑框而合成的组合框一样);第二、你也可以直接将按钮或是其它控件直接加在主框架上,就像是状态栏,工具栏 或视图的兄弟窗口一样。
  至于决定使用那种方法取决于你的设计