Обработка сообщений панель управления
Функция обратного вызова 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.
Связанные темы
-
Создание ссылок на задачи, доступные для поиска, для элемента панель управления
-
Доступ к панель управления в безопасном режиме в Windows Vista