| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Расшарить метафайл. |
| Автор: FurryFreeman 18.3.2006, 23:53 |
| Кзаалось бы, проще некуда: hFile=CreateFile("1234.emf", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL); hMapping=CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, 0, "gg"); hMapping=OpenFileMapping(FILE_MAP_READ, FALSE, "gg"); HDC hdc = CreateDC("DISPLAY", NULL, NULL, NULL); PlayMetaFile(hdc,hMapping); DeleteDC(hdc); Но не работает. Причём отдельно всё работает - если метафайл открыть так: hMapping=GetMetaFile("1234.emf"); PlayMetaFile(hdc,hMapping); ..,то всё прекрасно рисуется. Можно вместо метафайла отобразить в память текстовый файл, и через Data=MapViewOfFile(hMapping, FILE_MAP_READ, 0, 0, 0); S1=LPSTR(malloc(100)); memcpy(S1, Data, 100); SetWindowText(hStatic, S1); free(S1); ...посмотреть его содержимое, то есть отображение как таковое тоже работает. Видимо ф-ции PlayMetaFile не нравится формат хэндлера hMapping, возвращаемого ф-ей OpenFileMapping.. Или я в другом месте дурак? |
| Автор: FurryFreeman 19.3.2006, 00:49 |
| Да, точно, OpenFileMapping возвращает хендл меппинга файла, а PlayMetaFile надо именно хендл файла. |
| Автор: Fixin 19.3.2006, 20:27 |
| А зачем ты через маппинг передаешь файл? Передай то что просит. |