Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

GetOpenFileName - тип аргумента

5.6K
17 июля 2006 года
TYyYT
8 / / 19.01.2004
Подскажите пожалуйста.
Я пытаюсь вызвать стандартный диалог открытия файла через GetOpenFileName, но появляется ошибка error C2664: 'GetOpenFileNameA' : cannot convert parameter 1 from 'OPENFILENAME *__w64 ' to 'LPOPENFILENAMEA'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

Сейчас пробую писать под MVC++.NET, раньше под VC6 эта функция вполне работала.
Кусочек листинга функции, где появляется ошибка (извиняюсь, что много текста, просто может я структуру не так описал):

typedef struct tagOFN
{
DWORD lStructSize;
HWND hwndOwner;
HINSTANCE hInstance;
LPCTSTR lpstrFilter;
LPTSTR lpstrCustomFilter;
DWORD nMaxCustFilter;
DWORD nFilterIndex;
LPTSTR lpstrFile;
DWORD nMaxFile;
LPTSTR lpstrFileTitle;
DWORD nMaxFileTitle;
LPCTSTR lpstrInitialDir;
LPCTSTR lpstrTitle;
DWORD Flags;
WORD nFileOffset;
WORD nFileExtension;
LPCTSTR lpstrDefExt;
DWORD lCustData;
LPOFNHOOKPROC lpfnHook;
LPCTSTR lpTemplateName;
#if (_WIN32_WINNT >= 0x0500)
void * pvReserved;
DWORD dwReserved;
DWORD FlagsEx;
#endif // (_WIN32_WINNT >= 0x0500)
} OPENFILENAME, *LPOPENFILENAME;

OPENFILENAME ofnPath;
......

char szTemp[] = "GNT Files (*.gnt)\0*.gnt\0All Files (*.*)\0*.*\0";
//char szTemp[] = "All Files (*.*)\0";

ofnPath.lStructSize = sizeof( OPENFILENAME );
ofnPath.hwndOwner = edithwnd;
ofnPath.hInstance = 0;
ofnPath.lpstrFilter = (LPSTR)szTemp;
ofnPath.lpstrCustomFilter = NULL;
ofnPath.nMaxCustFilter = 0;
ofnPath.nFilterIndex = 1;
ofnPath.lpstrFile = (LPSTR)FileName;
ofnPath.nMaxFile = sizeof( FileName );
ofnPath.lpstrFileTitle = NULL;
ofnPath.nMaxFileTitle = 0;
ofnPath.lpstrInitialDir = NULL;
ofnPath.lpstrTitle="Открыть файл с исходным текстом...";
ofnPath.Flags=OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|OFN_PATHMUSTEXIST;
ofnPath.nFileOffset = 0;
ofnPath.nFileExtension=0;
ofnPath.lpstrDefExt="*";
ofnPath.lCustData=NULL;
ofnPath.lpfnHook=NULL;
ofnPath.lpTemplateName=NULL;

if(GetOpenFileName(&ofnPath)==TRUE)
{
openedF=CreateFile(
(LPSTR)FileName, // pointer to name of the file
GENERIC_READ, // access (read-write) mode
FILE_SHARE_READ, // share mode
NULL, // pointer to security attributes
OPEN_EXISTING, // how to create
FILE_ATTRIBUTE_NORMAL, // file attributes
NULL); // handle to file with attributes to copy

В MSDN вроде она также описана в примерах (пробовал компилировать кусок примера — та же ошибка), правда MSDN не самый уж новый.
8.8K
17 июля 2006 года
The_Ice
109 / / 04.04.2006
погоди, ты структуру OPENFILENAME сам описывал?
5.6K
17 июля 2006 года
TYyYT
8 / / 19.01.2004
Да, я уже понял что .NET такого не потерпит... (4часа теста млин)

Просто в VC6 оно именно так и работало - оттуда прям кусочек выдрал. Спасибо у мну уже руки выпрямились немного.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог