На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

About Screen Savers



The Desktop application in Windows Control Panel lets users select from a list of screen savers, specify how much time should elapse before the screen saver is started, configure screen savers, and preview screen savers. Screen savers are loaded automatically when Windows starts or when a user activates the screen saver feature by using Control Panel.

Once a screen saver is chosen, Windows monitors keystrokes and mouse movements, starting the screen saver after a period of inactivity. However, Windows does not start the screen saver if any of the following conditions exist:

· The active application is not a Windows-based application.
· A computer-based training (CBT) window is present.
· The active application receives the WM_SYSCOMMAND message with wParam set to the SC_SCREENSAVE value, but does not pass the message to the DefWindowProc function.



Screen savers contain specific exported functions, resource definitions, and variable declarations. The static-link library SCRNSAVE.LIB contains the main function and other startup code required for a screen saver. When a screen saver starts, the startup code in SCRNSAVE.LIB creates a full-screen window. The window class for this window is declared as follows.

WNDCLASS cls;

cls.hCursor = NULL;
cls.hIcon = LoadIcon(hInst, MAKEINTATOM(ID_APP));
cls.lpszMenuName = NULL;
cls.lpszClassName = "WindowsScreenSaverClass";
cls.hbrBackground = GetStockObject(BLACK_BRUSH);
cls.hInstance = hInst;
cls.style = CS_VREDRAW | CS_HREDRAW |
CS_SAVEBITS | CS_DBLCLKS;
cls.lpfnWndProc = (WNDPROC) ScreenSaverProc;
cls.cbWndExtra = 0;
cls.cbClsExtra = 0;


To create a screen saver, most developers create a source-code module containing three required functions and link them with SCRNSAVE.LIB. A screen saver module is responsible only for configuring itself and for providing visual effects.
One of the three required functions in a screen saver module is ScreenSaverProc. This function processes specific messages and passes any unprocessed messages back to SCRNSAVE.LIB. Following are some of the typical messages processed by ScreenSaverProc.

Message Meaning
WM_CREATE Retrieve any initialization data from the file REGEDIT.INI. Set a window timer for the screen saver window. Perform any other required initialization.
WM_ERASEBKGND Erase the screen saver window and prepare for subsequent drawing operations.
WM_TIMER Perform drawing operations.
WM_DESTROY Destroy the timer(s) created when the application processed the WM_CREATE message. Perform any additional required cleanup.


ScreenSaverProc passes unprocessed messages to SCRNSAVE.LIB by calling the DefScreenSaverProc function. The following table describes how this function processes various messages.

Message Action
WM_SETCURSOR Sets the cursor to the null cursor, removing it from the screen.
WM_PAINT Paints the screen background.
WM_LBUTTONDOWN Terminates the screen saver.
WM_MBUTTONDOWN Terminates the screen saver.
WM_RBUTTONDOWN Terminates the screen saver.
WM_KEYDOWN Terminates the screen saver.
WM_MOUSEMOVE Terminates the screen saver.
WM_ACTIVATE If wParam is FALSE, terminates the screen saver.


The second required function in a screen saver module is ScreenSaverConfigureDialog. This function displays a dialog box that enables the user to configure the screen saver. (Thus, an application must provide a corresponding dialog box template.) Windows displays the configuration dialog box when the user chooses the Setup button in the Screen Saver box in the Desktop application in Control Panel. The data entered by the user with the configuration dialog box is stored in the REGEDIT.INI file.

The third required function in a screen saver module is RegisterDialogClasses. This function must be called by all screen saver applications. However, applications that do not require special windows or custom controls in the configuration dialog box can simply return TRUE. Applications requiring custom controls or special windows should use this function to register the corresponding window classes.
In addition to creating a module that supports the three functions just described, a screen saver should supply an icon. This icon is visible only when the screen saver is run as a standalone application. (To be run by Control Panel, a screen saver must have the .SCR filename extension; to be run as a standalone application, it must have the .EXE filename extension.) The icon must be identified in the screen saver's resource file by the constant ID_APP, which is defined in the header file SCRNSAVE.H.

One final requirement is a screen saver description string. The resource file for a screen saver must contain a descriptive string that Control Panel displays as the screen saver name. The description string must be the first string in the resource file's string table (identified with the ordinal value 1).


Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

Об Экранных Спасителях



Приложение Настольной системы на Панели Управления Окна позволяет потребителям выбор из списка экранных спасителей, определять сколько время должно истекать прежде, чем экранный спаситель будет начат, будет сконфигурирован экранные спасители и просматривать экранных спасителей. Экранные спасители загружаются автоматически когда Окно начинает или когда потребитель активизирует экранную характеристику спасителя используя Панель Управления.

Как только экранный спаситель будет выбран, Окно проверяет нажатия клавиши и перемещения мыши, начинающие экранного спасителя после периода inactivity. Тем не менее, Окно не запускает экранного спасителя если любое из следующих условий существуют:

Активное приложение не является базирующимся приложением Окна.
Машинная подготовка окна (CBT) присутствует.
Активное приложение получает сообщение WM_SYSCOMMAND с wParam установленное в величину SC_SCREENSAVE, но не передает сообщение в функцию DefWindowProc.



Экранные спасители содержат специфические экспортируемые функции, определения ресурса, и переменные декларации. Статическая связь библиотеки SCRNSAVE.LIB содержит основную функцию и другой код запуска необходимую для экранного спасителя. Когда экранный спаситель начинается, код запуска в SCRNSAVE.LIB создает полное-экранное окно. Класс окна для этого окна объявляется следующим образом.

cls WNDCLASS;

cls.hCursor = НЕДЕЙСТВИТЕЛЬНЫЙ;
cls.hIcon = LoadIcon(hInst, MAKEINTATOM(ID_APP));
cls.lpszMenuName = НЕДЕЙСТВИТЕЛЬНЫЙ;
cls.lpszClassName = "WindowsScreenSaverClass";
cls.hbrBackground = GetStockObject(BLACK_BRUSH);
cls.hInstance = hInst;
cls.style = CS_VREDRAW | CS_HREDRAW | CS_SAVEBITS | CS_DBLCLKS;
cls.lpfnWndProc = (WNDPROC) ScreenSaverProc;
cls.cbWndExtra = 0;
cls.cbClsExtra = 0;


Для того, чтобы создавать экранного спасителя, большинство разработчиков создают исходный-кодовый модуль, содержащий три требовавшееся функционирует и связывает им с SCRNSAVE.LIB. Экранный модуль спасителя ответственный только для выбора конфигурации себя и для обеспечения визуальных эффектов.
Одна из трех необходимых функций в экранном модуле спасителя - ScreenSaverProc. Эта функция обрабатывает специфические сообщения и передает любые unprocessed сообщения на SCRNSAVE.LIB. Следующее является некоторыми типичными сообщениями обработанными ScreenSaverProc.

Значение Сообщения
WM_CREATE Извлекает любые данные инициализации из файла REGEDIT.INI. Установите таймер окна для экранного окна спасателя. Выполните любую другую необходимую инициализацию.
WM_ERASEBKGND Стирает экранное окно спасателя и готовится к последующим операциям чертежа.
WM_TIMER Выполняет операции чертежа.
WM_DESTROY Уничтожает таймер(таймеры) созданный когда приложение обрабатывало сообщение WM_CREATE. Выполните любую дополнительную необходимую очистку.


ScreenSaverProc ПЕРЕДАЕТ unprocessed сообщения на SCRNSAVE.LIB вызывая функцию DefScreenSaverProc. Следующая таблица описывает как эти различные сообщения функциональных процессов.

Действие Сообщения
WM_SETCURSOR Устанавливает курсору в недействительный курсор, удаление это с экрана.
WM_PAINT Закрашивает экранный фон.
WM_LBUTTONDOWN Завершает экранного спасателя.
WM_MBUTTONDOWN Завершает экранного спасателя.
WM_RBUTTONDOWN Завершает экранного спасателя.
WM_KEYDOWN Завершает экранного спасателя.
WM_MOUSEMOVE Завершает экранного спасателя.
WM_ACTIVATE Если wParam - ЛОЖЬ, завершает экранного спасателя.


Вторая необходимая функция в экранном модуле спасателя - ScreenSaverConfigureDialog. Эта функция отображает диалогового блока, который позволяет пользователя, чтобы конфигурировать экранного спасателя. (Таким образом, приложение должно обеспечить соответствующий диалоговый шаблон блока.) Windows отображает диалогового блока конфигурации когда пользователь выбирает кнопку Установки в Экранном блоке Спасателя в приложении Desktop на Панели Управления. Данные введенные пользователем с диалоговым блоком конфигурации загружены в файл REGEDIT.INI.

Третья необходимая функция в экранном модуле спасателя - RegisterDialogClasses. Эта функция должна быть вызвана всеми экранными приложениями спасателя. Тем не менее, приложения, что не требовать специальное окно или обычай регулируется в диалоговом блоке конфигурации может просто возвращать ИСТИНУ. Приложения, требующие заказные элементы управления или специальное окно должно использовать эту функцию, чтобы регистрировать соответствующие классы окна.
Дополнительно к созданию модуля, которое поддерживает три функции только что описанных, экранный спасатель должен поставлять иконку. Эта иконка видимая только когда экранный спасатель запущен как автономное приложение. (Чтобы быть руководить Панелью Управления, экранный спасатель должен иметь .SCR filename расширение; чтобы быть запускать как автономное приложение, это должно иметь .EXE filename расширение.) Иконка должна назваться в файле ресурса экранного спасателя константой ID_APP, которая определена в файле заголовка SCRNSAVE.H.

Одно конечное требование является строкой описания экранного спасателя. Файл ресурса для экранного спасателя должен содержать описательную строку, что Панель Управления отображает как экранное имя спасателя. Описание строки должно быть первой строкой в таблице файловой строки ресурса (идентифицированное порядковой величиной 1).


Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz