Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
3 / 3 / 0
Регистрация: 18.08.2009
Сообщений: 40

Ошибка преобразования формата

27.10.2009, 11:47. Показов 1600. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вопрос №1
C++
1
2
3
4
5
#ifdef MEMORY_MAPPED_FILES
    if (m_dibFile.AttachMapFile(dlg.GetPathName(),
            TRUE) == TRUE) { // share
        Invalidate();
    }
Выдает ошибку:
error C2664: 'CDib::AttachMapFile' : cannot convert parameter 1 from 'CString' to 'const char *'
В строке TRUE) == TRUE) { // share

Вопрос №2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
BOOL CDib::AttachMapFile(const char* strPathname, BOOL bShare) // for reading
{
    // if we open the same file twice, Windows treats it as 2 separate files
    // doesn't work with rare BMP files where # palette entries > biClrUsed
    HANDLE hFile = ::CreateFile(strPathname, GENERIC_WRITE | GENERIC_READ,
        bShare ? FILE_SHARE_READ : 0,
        NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
    ASSERT(hFile != INVALID_HANDLE_VALUE);
    DWORD dwFileSize = ::GetFileSize(hFile, NULL);
    HANDLE hMap = ::CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, 0, NULL);
    DWORD dwErr = ::GetLastError();
    if(hMap == NULL) {
        AfxMessageBox(_T("Empty bitmap file"));
        return FALSE;
    }
    LPVOID lpvFile = ::MapViewOfFile(hMap, FILE_MAP_WRITE, 0, 0, 0); // map whole file
    ASSERT(lpvFile != NULL);
    if(((LPBITMAPFILEHEADER) lpvFile)->bfType != 0x4d42) {
        AfxMessageBox(_T("Invalid bitmap file"));
        DetachMapFile();
        return FALSE;
    }
    AttachMemory((LPBYTE) lpvFile + sizeof(BITMAPFILEHEADER));
    m_lpvFile = lpvFile;
    m_hFile = hFile;
    m_hMap = hMap;
    return TRUE;
}
Выдает ошибку:
Error 3 error C2664: 'CreateFileW' : cannot convert parameter 1 from 'const char *' to 'LPCWSTR'
В строке:NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

Вопрос №3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
BOOL CDib::CopyToMapFile(const char* strPathname)
{
    // copies DIB to a new file, releases prior pointers
    // if you previously used CreateSection, the HBITMAP will be NULL (and unusable)
    BITMAPFILEHEADER bmfh;
    bmfh.bfType = 0x4d42;  // 'BM'
    bmfh.bfSize = m_dwSizeImage + sizeof(BITMAPINFOHEADER) +
            sizeof(RGBQUAD) * m_nColorTableEntries + sizeof(BITMAPFILEHEADER);
    // meaning of bfSize open to interpretation
    bmfh.bfReserved1 = bmfh.bfReserved2 = 0;
    bmfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) +
            sizeof(RGBQUAD) * m_nColorTableEntries; 
    HANDLE hFile = ::CreateFile(strPathname, GENERIC_WRITE | GENERIC_READ, 0, NULL,
        CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    ASSERT(hFile != INVALID_HANDLE_VALUE);
    int nSize =  sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) +
                sizeof(RGBQUAD) * m_nColorTableEntries +  m_dwSizeImage;
    HANDLE hMap = ::CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, nSize, NULL);
    DWORD dwErr = ::GetLastError();
    ASSERT(hMap != NULL);
    LPVOID lpvFile = ::MapViewOfFile(hMap, FILE_MAP_WRITE, 0, 0, 0); // map whole file
    ASSERT(lpvFile != NULL);
    LPBYTE lpbCurrent = (LPBYTE) lpvFile;
    memcpy(lpbCurrent, &bmfh, sizeof(BITMAPFILEHEADER)); // file header
    lpbCurrent += sizeof(BITMAPFILEHEADER);
    LPBITMAPINFOHEADER lpBMIH = (LPBITMAPINFOHEADER) lpbCurrent;
    memcpy(lpbCurrent, m_lpBMIH,
        sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * m_nColorTableEntries); // info
    lpbCurrent += sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * m_nColorTableEntries;
    memcpy(lpbCurrent, m_lpImage, m_dwSizeImage); // bit image
    DWORD dwSizeImage = m_dwSizeImage;
    Empty();
    m_dwSizeImage = dwSizeImage;
    m_nBmihAlloc = m_nImageAlloc = noAlloc;
    m_lpBMIH = lpBMIH;
    m_lpImage = lpbCurrent;
    m_hFile = hFile;
    m_hMap = hMap;
    m_lpvFile = lpvFile;
    ComputePaletteSize(m_lpBMIH->biBitCount);
    ComputeMetrics();
    MakePalette();
    return TRUE;
}
выдает ошибку:
Error 4 error C2664: 'CreateFileW' : cannot convert parameter 1 from 'const char *' to 'LPCWSTR'

С чем связаны данные ошибки?И как их исправить?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.10.2009, 11:47
Ответы с готовыми решениями:

Ошибка преобразования формата
Выдает вот такую ошибку Error 1 error C2664: 'int CDC::GetTextFaceW(int,LPTSTR) const' : cannot convert parameter 2 from 'char ' to...

Ошибка преобразования формата
Выдает вот такую ошибку в строке 8.Как решить данную проблему? Error 8 error C2664: 'int CDC::GetTextFaceW(int,LPTSTR) const' : cannot...

XML ошибка формата
не знаю куда еще написать, браузер при открытии xml пишет XML Parsing Error: not well-formed Location:...

4
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
27.10.2009, 11:49
char замени на TCHAR
и любые строки преобразуй к такому виду: "ля-ля-ля" => _T("ля-ля-ля")
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
28.10.2009, 09:20
Можно вместо параметра CString попробовать вот так в функцию запихивать
C++
1
2
CString sPath = "тут твой путь";
AttachMapFile((LPCTSTR)(sPath.GetBuffer(sPath.GetLength())), BOOL bShare)
0
3 / 3 / 0
Регистрация: 18.08.2009
Сообщений: 40
28.10.2009, 10:06  [ТС]
Не понял куда это необходимо вставить?
Вот описание моей функции:
C++
1
BOOL AttachMapFile(const char* strPathname, BOOL bShare = FALSE);
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
28.10.2009, 11:43
Ты написал компилятор ругается на CString я и пишу передавай в качестве параметра
(LPCTSTR)(sPath.GetBuffer(sPath.GetLengt h())) - в этом случае ты из CString получаешь LPTSTR которую преобразуешь потом в const char...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.10.2009, 11:43
Помогаю со студенческими работами здесь

Ошибка преобразования 'char [10]' в 'LPCWSTR'
Я изучаю API функции по книге Win32 API автор Юрий Щупак. Набрал программу "hello Word" второй вариант на Visual 2008. Запустил и...

MSSQL: преобразования формата даты
В базе MS SQL хранятся даты вида: '2011.03.28 11:02:58' . Когда я хочу вывести эти данные в браузер или записать в другую таблицу PHP...

Преобразования числа из входного формата (10 сс) в выходной (5 и 14 сс)
Спроектируйте и реализуйте приложение для преобразования число из входного формата (10сс) в выходной (5 и 14сс). Я вообще ноль в этом,...

Макрос для преобразования формата данных
Доброго времени суток! У меня такая ситуация. Есть дата в текстовом формате (в строке формула присутствует ', формат данных общий),...

Сохранение RGB изображения после преобразования в файл *.bmp формата
Вот такая ситуация у меня: Есть bmp рисунок и мне нужно сделать с него 24-битную картинку. Вообщем все операции над преобразованием я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru