На главную

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 | Скачать Вниз

Creating Control Panel Applications



Although a Control Panel application may support more than one dialog box, it processes all requests through the single CPlApplet function. In the following example, the Control Panel application supports three dialog boxes that let the user set preferences for a component stereo system attached to the computer. The example uses an application-defined StereoApplets array that contains three structures, each corresponding to one of the dialog boxes. Each structure contains all the information required by the CPL_INQUIRE message, as well as the dialog box template and dialog box procedure required by the CPL_DBLCLK message. The code demonstrates how to fill the structures in the StereoApplets array.

#define NUM_APPLETS 3

typedef struct tagApplets
{
int icon; // icon resource identifier
int namestring; // name-string resource identifier
int descstring; // description-string resource identifier
int dlgtemplate; // dialog box template resource identifier
DLGPROC dlgfn; // dialog box procedure
} APPLETS;

APPLETS StereoApplets[NUM_APPLETS] =
{
AMP_ICON, AMP_NAME, AMP_DESC, AMP_DLG, AmpDlgProc,
TUNER_ICON, TUNER_NAME, TUNER_DESC, TUNER_DLG, TunerDlgProc,

TAPE_ICON, TAPE_NAME, TAPE_DESC, TAPE_DLG, TapeDlgProc,
};

HANDLE hinst = NULL;

LONG CALLBACK CPlApplet(hwndCPL, uMsg, lParam1, lParam2)
HWND hwndCPL; // handle of Control Panel window
UINT uMsg; // message
LPARAM lParam1; // first message parameter
LPARAM lParam2; // second message parameter
{
int i;
LPCPLINFO lpCPlInfo;

i = (int) lParam1;

switch (uMsg) {
case CPL_INIT: // first message, sent once

hinst = GetModuleHandle("ecp.cpl");
return TRUE;

case CPL_GETCOUNT: // second message, sent once
return NUM_APPLETS;
break;

case CPL_INQUIRE: // third message, sent once per application
lpCPlInfo = (LPCPLINFO) lParam2;
lpCPlInfo->lData = 0;
lpCPlInfo->idIcon = StereoApplets[i].icon;
lpCPlInfo->idName = StereoApplets[i].namestring;
lpCPlInfo->idInfo = StereoApplets[i].descstring;

break;

case CPL_DBLCLK: // application icon double-clicked
DialogBox(hinst,
MAKEINTRESOURCE(StereoApplets[i].dlgtemplate),
hwndCPL, StereoApplets[i].dlgfn);
break;

case CPL_STOP: // sent once per application before CPL_EXIT
break;

case CPL_EXIT: // sent once before FreeLibrary is called
break;

default:
break;

}
return 0;
}



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

Создание Панели Управления Приложений



Хотя Панель Управления приложения может поддержать более, чем один диалоговый ящик, она обрабатывает все просьбы через единственную функцию CPlApplet. В следующем примере, Панель Управления приложения поддерживает три общаться ящики, что позволять, чтобы потребитель устанавливает предпочтения для компонентной стерео системы приложенной к компьютеру. Пример использует определенный прикладной массив StereoApplets, который содержит три структуры, каждый соответствующий в один из диалоговых ящиков. Каждая структура содержит всю информацию требовавшуюся сообщением CPL_INQUIRE, а также диалоговый шаблон блока и диалогового блока процедуры требовались сообщением CPL_DBLCLK. Код демонстрирует как, чтобы заполнять структуры в массиве StereoApplets.

#define NUM_APPLETS 3

typedef struct tagApplets
{
int иконка; // иконный идентификатор ресурса namestring int; // имя-строка идентификатора ресурса descstring int; // описание-строка идентификатора ресурса int dlgtemplate; // ресурс шаблона диалогового идентификатора блока DLGPROC dlgfn; // диалоговый блок процедуры } ВВОДЫ;

ВВОДЫ StereoApplets[NUM_APPLETS] =
{
AMP_ICON, AMP_NAME, AMP_DESC, AMP_DLG, AmpDlgProc, TUNER_ICON, TUNER_NAME, TUNER_DESC, TUNER_DLG, TunerDlgProc,

TAPE_ICON, TAPE_NAME, TAPE_DESC, TAPE_DLG, TapeDlgProc,
};

РУЧКА hinst = НЕДЕЙСТВИТЕЛЬНЫЙ;

ДОЛГО (ДЛИНОЙ) CALLBACK CPlApplet(hwndCPL, uMsg, lParam1, lParam2) HWND hwndCPL; // ручка Панели Управления окна UINT uMsg; // сообщение LPARAM lParam1; // первый параметр сообщения LPARAM lParam2; // параметр сообщения секунды
{
int i;
LPCPLINFO lpCPlInfo;

я = (int) lParam1;

ключ (uMsg) {
случай CPL_INIT: // первое сообщение, посланное как только

hinst = GetModuleHandle("ecp.cpl");
возвращайтесь ВЕРНО;

случай CPL_GETCOUNT: // сообщение секунды, посланное как только возврат NUM_APPLETS;
прерывание;

случай CPL_INQUIRE: // третье сообщение, посланное как только за приложение lpCPlInfo = (LPCPLINFO) lParam2;
lpCPlInfo->lData = 0;
lpCPlInfo->idIcon = StereoApplets[i].icon;
lpCPlInfo->idName = StereoApplets[i].namestring;
lpCPlInfo->idInfo = StereoApplets[i].descstring;

прерывание;

случай CPL_DBLCLK: // прикладная иконка щелкала двойное количество DialogBox(hinst,
MAKEINTRESOURCE(StereoApplets[i].dlgtemplate), hwndCPL, StereoApplets[i].dlgfn);
прерывание;

случай CPL_STOP: // посланное как только за приложение перед прерывание CPL_EXIT;

случай CPL_EXIT: // посланное как только прежде, чем FreeLibrary будет вызван прерывание;

умолчание: прерывание;

}
возврат 0;
}



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