Функция CommDlgExtendedError

Declare Function CommDlgExtendedError Lib "comdlg32.dll" () As Long

Платформа

Win 95/98, Win NT

CommDlgExtendedError возвращает код ошибки от последней функции общего диалогового окна. Эта функция не возвращает коды ошибки для любой другой функции API; для этого существует GetLastError. Значение возвращения функции неопределено, если последний запрос функции общего диалога был успешен. В случае ошибки, значения возвращения - один из следующих флагов ошибки общего диалога:

CDERR_DIALOGFAILURE = &HFFFF
Функция не может открыть окно общего диалогового окна.
CDERR_FINDRESFAILURE = &H6
Функция не сумела найти желательный ресурс.
CDERR_GENERALCODES = &H0
Ошибка свойства общего диалогового окна.
CDERR_INITIALIZATION = &H2
Функция потерпела неудачу в течение инициализации (вероятно недостато памяти).
CDERR_LOADRESFAILURE = &H7
Функция не сумела загрузить желательный ресурс.
CDERR_LOADSTRFAILURE = &H5
Функция не сумела загрузить желательную строку.
CDERR_LOCKRESFAILURE = &H8
Функция не сумела блокировать желательный ресурс.
CDERR_MEMALLOCFAILURE = &H9
Функция не сумела распределить достаточную память.
CDERR_MEMLOCKFAILURE = &HA
Функция не сумела блокировать память.
CDERR_NOHINSTANCE = &H4
Функция не обеспечена описателем экземпляра (если требовалось).
CDERR_NOHOOK = &HB
Функция не обеспечена имеющим силу дескриптором функции обработчика прерываний (если требовалось).
CDERR_NOTEMPLATE = &H3
Функция не обеспечена шаблоном (если требовалось).
CDERR_REGISTERMSGFAIL = &HC
Функция не сумела успешно зарегистрировать сообщение окна.
CDERR_STRUCTSIZE = &H1
Функция обеспечена неверным размером структуры.
CFERR_CHOOSEFONTCODES = &H2000
Ошибка общего диалогового окна Выбор шрифта
CFERR_MAXLESSTHANMIN = &H2002
Функция обеспечена максимальным значением размера шрифта меньшим,чем возможный минимальный размер шрифта.
CFERR_NOFONTS = &H2001
Функция не смогла найти никаких шрифтов.
FNERR_BUFFERTOOSMALL = &H3003
Функция обеспечена слишком маленьким буфером имен файла.
FNERR_FILENAMECODES = &H3000
Ошибка общего диалогового окна Открытие файла или Сохранение файла.
FNERR_INVALIDFILENAME = &H3002
Функция обеспечена или получила неверное имя файла.
FNERR_SUBCLASSFAILURE = &H3001
Функция имела недостаточную память, чтобы классифицировать список.
FRERR_BUFFERLENGTHZERO = &H4001
Функция обеспечена недействительным буфером.
FRERR_FINDREPLACECODES = &H4000
Ошибка общего диалогового окна Поиск или Замена.
PDERR_CREATEICFAILURE = &H100A
Функция не сумела создать информационный контекст.
PDERR_DEFAULTDIFFERENT = &H100C
Функция говорит, что параметры, обеспеченные описанием заданным по умолчанию принтером, и фактические параметры настройки заданного по умолчанию принтера различны.
PDERR_DNDMMISMATCH = &H1009
Данные в этих двух структурах данных описывают различные принтеры (то есть,содержат) противоречивую информацию.
PDERR_GETDEVMODEFAIL = &H1005
Драйвер принтера не сумел инициализировать DEVMODE структуру.
PDERR_INITFAILURE = &H1006
Функция потерпела неудачу в течение инициализации.
PDERR_LOADDRVFAILURE = &H1004
Функция не сумела загрузить желательный драйвер устройства.
PDERR_NODEFAULTPRN = &H1008
Функция не смогла найти заданный по умолчанию принтер.
PDERR_NODEVICES = &H1007
Функция не смогла найти никаких принтеров.
PDERR_PARSEFAILURE = &H1002
Функция не сумела проанализировать связанные принтером строки в WIN.INI.
PDERR_PRINTERCODES = &H1000
Ошибка общего диалогового окна Печать
PDERR_PRINTERNOTFOUND = &H100B
Функция не смогла найти информацию в WIN.INI относительно требуемого принтера.
PDERR_RETDEFFAILURE = &H1003
Описатели к структурам данных, были отличные от нуля даже при том, что функцию спрашивали возвратить информацию относительно заданного по умолчанию принтера.
PDERR_SETUPFAILURE = &H1001
Функция не сумела загрузить желательные ресурсы.

Пример

' Открываем диалоговое окно Открытие файла и даем ему недостаточный размер буфера
' затем показываем код ошибки.
Dim filebox As OPENFILENAME  ' структура для создания общего диалогового окна
Dim fname As String  ' имя файла
Dim retval As Long  ' возвращаемое значение
Dim errcode As long  ' код ошибки

' настраиваем вид окна
filebox.lStructSize = Len(filebox)  ' размер структуры
filebox.hwndOwner = Form1.hWnd  ' дескриптор формы,вызываемой функцией.
filebox.lpstrTitle = "Пример с API"  ' текст заголовка в диалоговом окне
' определяем тип файлов
filebox.lpstrFilter = "Файлы txt" & vbNullChar & "*.txt" & vbNullChar & "Все файлы" & vbNullChar & "*.*" & vbNullChar & vbNullChar
filebox.lpstrFile = ""  ' ОШИБКА: пустой буфер!
filebox.nMaxFile = 0  ' длина файла и буфер для полного имени
filebox.lpstrFileTitle = Space(255)  ' Инициализируем буфер, который получает имя файла файла
filebox.nMaxFileTitle = 255  ' длина буфера для имени файла
' показываем только существующие,скрытые и только для чтения файлы
filebox.flags = OFN_PATHMUSTEXIST Or OFN_FILEMUSTEXIST Or OFN_HIDEREADONLY

' открываем общее диалоговое окно
retval = GetOpenFileName(filebox)
If retval = 0 Then  ' произошла ошибка или нажата кнопка Отмена
  errcode = CommDlgExtendedError()  ' получаем код ошибки для GetOpenFileName
  If errcode = FNERR_BUFFERTOOSMALL Then
    Debug.Print "Буфер слишком маленький, чтобы содержать имя файла."
  If errcode = FNERR_INVALIDFILENAME Then
    Debug.Print "Недействительное имя файла."
End If
  End If
End If

Схожие функции: GetLastError
Категория
Общий диалог

В начало.