Поделиться через


Обработка сообщений панели управления

Функция обратного вызова CPlApplet обрабатывает все сообщения, отправленные элементу панели управления Windows. Сообщения, отправленные функции, имеют определенный порядок. Точно так же элемент .cpl требует, чтобы сообщения обрабатывались определенным образом.

Во-первых, функция CPlApplet получает сообщение CPL_INIT при первой загрузке элемента панели управления Windows. Функция должна выполнять любую инициализацию, например выделение памяти и возвращать ненулевое значение. Если CPlApplet не удается завершить инициализацию, он должен вернуть ноль, указав Windows прекратить связь и освободить библиотеку DLL.

Затем, если сообщение CPL_INIT выполнено успешно, Windows отправляет сообщение CPL_GETCOUNT. Затем функция должна вернуть количество элементов панели управления, поддерживаемых файлом .dll.

Затем функция CPlApplet получает одно CPL_INQUIRE сообщение и одно сообщение CPL_NEWINQUIRE для каждого элемента панели управления, поддерживаемого файлом .dll. Функция заполняет CPLINFO или структуру NEWCPLINFO сведениями о вашем элементе, например, его имя, значок и описательную строку. Большинство приложений должны обрабатывать сообщение CPL_INQUIRE и игнорировать сообщение CPL_NEWINQUIRE. Сообщение CPL_INQUIRE предоставляет информацию в виде, которую Windows может кэшировать, что приводит к значительно более высокой производительности. Сообщение CPL_NEWINQUIRE используется только в том случае, если необходимо изменить значок вашего элемента или отображать строки в зависимости от состояния компьютера. Элементы панели управления, использующие CPL_NEWINQUIRE, не могут находиться поиск меню "Пуск" в Windows Vista, так как он зависит от кэширования.

функция CPlApplet далее получает сообщение CPL_DBLCLK в виде уведомления о том, что пользователь выбрал значок, представляющий элемент панели управления. Функция может получать это сообщение в любое количество раз. Сообщение содержит идентификатор элемента и указатель lpData, которые возвращаются в структуре CPLINFO или NEWCPLINFO при вызове CPL_INQUIRE или CPL_NEWINQUIRE. Функция должна отображать соответствующее диалоговое окно и обрабатывать последующие входные данные пользователя.

Кроме CPL_DBLCLK, сообщение CPL_STARTWPARMS можно отправить, если элемент панели управления вызывается с входными параметрами, например из командной строки или из другой программы. Сообщение содержит идентификатор элемента вместе с дополнительной строкой параметров.

Перед завершением управления приложением CPlApplet получает сообщение CPL_STOP один раз для каждого элемента панели управления, поддерживаемого файлом .dll. Сообщение содержит идентификатор элемента панели управления и указатель lpData, возвращенный в структуре CPLINFO или NEWCPLINFO в вызове CPL_INQUIRE или CPL_NEWINQUIRE. Функция должна освободить любую память, выделенную для указанного диалогового окна.

После последнего CPL_STOP сообщения CPlApplet получает CPL_EXIT сообщение. Функция должна освободить всю оставшуюся выделенную память и отменить регистрацию всех частных классов окон, которые она могла бы зарегистрировать. Сразу после возврата функции из этого сообщения Windows освобождает элемент панели управления путем вызова функции FreeLibrary.

элементы панели управления

рекомендации по работе с пользователем

регистрация элементов панели управления

Использование CPLApplet

Запуск элементов панели управления

Расширение элементов Панели управления

назначение категорий панели управления

создание ссылок на задачи с возможностью поиска для элемента панели управления

доступ к панели управления в безопасном режиме в Windows Vista