在实际编程应用中,当程序需要用较长的时间来处理某些计算时,这段时间有可能使WINDOWS启动屏幕保护,这样程序的处理会相对变得更长。那么如何在运行程序时自动关闭屏幕保护呢?
WINDOWS在启动屏幕保护前会向已激活的程序发送一个WM_SYSCOMMAND消息,并将该消息的WPARAM参数设置为SC_SCREENSAVE。我们可利用C++ BUILDER中的TApplication类的OnMessage事件来处理WINDOWS发来的这条消息,如果在接收到的消息后将handled参数设为true,这个响应的消息值就可以阻止屏幕保护运行。
在C++ BUILDER 4.0的过程如下:
1、从主菜单中选择File | New APPlication 来创建一个新的空工程文件。然后在Forn 上加上一个Label对象,设置其Caption为”此程序将关闭WINDOWS屏幕保护”。
2、在程序头文件unit1.h中对成员函数ProcessMessage的声明加到TForm1的定义中。
1 2 3 4 5 6 7 8 9 |
class TForm1 : public TForm { __published: // IDE-managed Components TLabel *Label1; private: // User declarations void __fastcall ProcessMessage(TMsg &message,bool &handled); public: // User declarations __fastcall TForm1(TComponent* Owner); }; |
3、在unit1.cpp中,在程序中增加ProcessMessage函数语句:
1 2 3 4 5 6 7 8 |
void __fastcall TForm1::ProcessMessage(TMsg &message,bool &handled) { if(message.message==WM_SYSCOMMAND &&message.wParam==SC_SCREENSAVE) { handled=true; } } |
4、在TForm1的构造函数增加以下代码:
1 2 3 4 5 |
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Application->OnMessage=ProcessMessage; } |