Операционная система Microsoft Windows 3.1 для программиста -том 2


Листинг 3.5. Файл dlgcombo\dlgcombo.cpp - часть 3


// Отмена диалоговой панели. case IDCANCEL: { // Устанавливаем флаг завершения диалога EndDialog(hdlg, 0); return TRUE; } } } } return FALSE; }

Функция WinMain аналогична использованной в предыдущем приложении. Она создает главное окно и кнопку с надписью "Open..." для создания диалоговой панели.

В функции главного окна приложения WndProc обрабатывается сообщение WM_COMMAND, поступающее от кнопки. В ответ на это сообщение приложение создает модальную диалоговую панель, вызывая функцию DialogBox:

case WM_COMMAND: { if(wParam == IDB_Button1) { DialogBox(hInst, "SELECT_FILE", hwnd, (DLGPROC)DlgProc); } return 0; }

Обратите внимание, что в качестве последнего параметра функции DialogBox указан непосредственный адрес функции диалога. Мы не стали использовать функцию MakeProcInstance и создавать переходник, так как для трансляции приложения была использована система разработки Borland C++ for Windows версии 3.1, а функция диалога описана с ключевым словом _export.

Обработчик сообщения WN_INITDIALOG, расположенный в функции диалога DlgProc, заполняет список COMBOBOX именами файлов и каталогов, расположенных в текущем каталоге, а также именами дисковых устройств. Для этого он вызывает функцию DlgDirListComboBox:

case WM_INITDIALOG: { DlgDirListComboBox(hdlg, "*.*", IDC_COMBO, IDC_STATIC, DDL_READWRITE | DDL_READONLY | DDL_HIDDEN | DDL_SYSTEM | DDL_DIRECTORY | DDL_DRIVES | DDL_ARCHIVE); return TRUE; }

В качестве первого параметра этой функции передается идентификатор диалоговой панели.

Второй параметр является указателем на строку шаблона имен файлов. Мы отображаем имена всех файлов, поэтому в качестве шаблона используется строка "*.*".

Третий параметр - идентификатор заполняемого списка COMBOBOX. Этот список получит сообщение CB_DIR, что и приведет к заполнению последнего именами файлов, каталогов и дисковых устройств.

Четвертый параметр - идентификатор статического органа управления, в котором будет отображаться путь к текущему каталогу, включающий имя диска.




Начало  Назад  Вперед