Russian Qt Forum
Ноябрь 02, 2024, 05:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Из winXP в win98 ?  (Прочитано 12048 раз)
Tonal
Гость
« Ответ #15 : Декабрь 27, 2006, 07:46 »

CreateFileMapping Нормально работает в win9x. Я его довольно плотно использовал.
Хотя есть некоторые отличия.
Покажи код - может заметим грабельки.
Записан
shyrik
Гость
« Ответ #16 : Декабрь 27, 2006, 16:14 »

Это *.h файл. Проверенно, что не срабатывает CreateFileMapping. При чём номер ошибки 0  :twisted:  :oops:

Код:
#ifndef CFileMap_classes_H
#define CFileMap_classes_H

#include <windows.h>
#include <stdio.h>
#define CFILE_INIT dwSize(0), hFile(INVALID_HANDLE_VALUE), hMap(0), lpMapView(0)
void Error(const wchar_t *es);
class CFileMap
{
public:
    CFileMap(): CFILE_INIT {}
    CFileMap(LPCTSTR path, bool write=false): CFILE_INIT
    {
Open(path, write);
    }
    CFileMap(LPCTSTR path, DWORD size): CFILE_INIT
    {
        if(size) Create(path, size);
    }
    ~CFileMap() { CloseMap(); }
   // operator bool(){ return (hFile!=INVALID_HANDLE_VALUE); }
    void    CloseMap();
    bool    Open(LPCTSTR path, bool write);
    bool    Create(LPCTSTR path, DWORD size);

    BYTE*   Base(){ return reinterpret_cast<BYTE*>(lpMapView); }
    DWORD   Size(){ return dwSize; }
protected:
    DWORD   dwSize;
private:
    bool    OpenInternal(LPCTSTR path, DWORD dwAccess, DWORD dwCreation, DWORD flProtect,
                        DWORD dwPageAccess, DWORD size=0);
    HANDLE  hFile, hMap;
    LPVOID  lpMapView;
};
 
inline void CFileMap::CloseMap()
{
    if(hMap) CloseHandle(hMap);
    hMap=0;
    if(lpMapView) UnmapViewOfFile(lpMapView);
    lpMapView=0;
    if(hFile!=INVALID_HANDLE_VALUE) CloseHandle(hFile);
    hFile=INVALID_HANDLE_VALUE;
    dwSize=0;
}


inline bool CFileMap::OpenInternal(LPCTSTR path, DWORD dwAccess, DWORD dwCreation,
                                   DWORD flProtect, DWORD dwPageAccess, DWORD size)
{
    if(hFile!=INVALID_HANDLE_VALUE) CloseMap();
    hFile=CreateFile(path, dwAccess, FILE_SHARE_READ, 0, dwCreation,
                       FILE_ATTRIBUTE_NORMAL, 0);
    if(hFile==INVALID_HANDLE_VALUE)
   
    {  
   
        return false;
    }
       
 if(!size) size=GetFileSize(hFile, 0);
   
    hMap=CreateFileMapping( hFile, 0, flProtect , 0, size, 0);
    if(!hMap)
   
    {  
     FILE *f=fopen("log2.txt","wt");
        fprintf(f,"ERROR %ld\n",GetLastError());
        fclose(f);
        CloseMap();
        return false;
    }


    lpMapView=MapViewOfFile(hMap, dwPageAccess, 0, 0, size);
    if(!lpMapView)
   
    {
   
        CloseMap();
        return false;
    }
    dwSize=size;
    return true;
}

inline bool CFileMap::Create(LPCTSTR path, DWORD size)
{
    return OpenInternal(path, GENERIC_READ|GENERIC_WRITE, CREATE_ALWAYS,
                        PAGE_READWRITE, FILE_MAP_WRITE, size);
}

inline bool CFileMap::Open(LPCTSTR path, bool write)
{
    if(write) return OpenInternal(path, GENERIC_READ|GENERIC_WRITE, OPEN_EXISTING,
                                  PAGE_READWRITE, FILE_MAP_READ|FILE_MAP_WRITE);
    else return OpenInternal(path, GENERIC_READ, OPEN_EXISTING, PAGE_READONLY, FILE_MAP_READ);
}

#endif //CFileMap_classes_H


добавлено спустя 6 часов 49 минут:

 Всем спасибо за помощь, разобрался... Работает. С наступающим НГ!!! :wink:
Записан
Tonal
Гость
« Ответ #17 : Декабрь 27, 2006, 19:43 »

И в чём было дело?
Записан
nata267
Гость
« Ответ #18 : Август 12, 2011, 14:21 »

Тоже возникла проблема, компилировала на windows 7, а при запуске на win98 ошибка при запуске - файл QTWEBKIT4.dll связан с отсутствующим компонентом USER32.dll:GetLastInputInfo.
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #19 : Август 12, 2011, 15:26 »

Последняя Qt официально поддерживавшая win98 - 4.4.3.
Qt 4.5.X де-факто совместима с Win98, кроме WebKit, OpenGL и Phonon.
Qt 4.6.X b и выше - практически полностью Win2k+.
Записан
nata267
Гость
« Ответ #20 : Октябрь 13, 2011, 11:02 »

Последняя Qt официально поддерживавшая win98 - 4.4.3.
Qt 4.5.X де-факто совместима с Win98, кроме WebKit, OpenGL и Phonon.
Qt 4.6.X b и выше - практически полностью Win2k+.

у меня WebKit используется , версия 4.5.1, поэтому и не пошло наверно
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.109 секунд. Запросов: 22.