Форум программистов, компьютерный форум CyberForum.ru

windows.h and afx.h - C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.71
nazavrik
 Аватар для nazavrik
22 / 22 / 2
Регистрация: 17.09.2008
Сообщений: 130
05.02.2010, 23:31     windows.h and afx.h #1
Добрый вечер!

Есть проект, где используются винапишные функции и следовательно подключена windows.h. Встала необходимость использовать в нем класс CFile (MFC), при попытке подключить afx.h и объявить объект класса CFile компилятор ругается матом.

Код
> error C2146: syntax error : missing ';' before identifier 'cFileOut'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
и что еще хуже

Код
 Error directive: WINDOWS.H already included.  MFC apps must not #include <windows.h>
Собственно вопрос. Можно как-нибудь безболезненно использовать в проекте MFC?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.02.2010, 23:31     windows.h and afx.h
Посмотрите здесь:

C++ Программа перестает компилироваться после подключения библиотеки <Afx.h>
C++ Программировани Shell для Windows (замена Windows Explorer)
C++ WinAPI SendMessage в Windows XP и Windows 7
Windows 8 или Windows 7 для C++Builder 6 что делать и как C++ Builder
Visual C++ Служба Windows (Windows Service) создание С++
C++ Как переписать драйвера Windows ХР по Windows 7?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CheshireCat
Эксперт С++
2909 / 1237 / 78
Регистрация: 27.05.2008
Сообщений: 3,318
05.02.2010, 23:33     windows.h and afx.h #2
#include <afxwin.h> вместо всего перечисленного достаточно.
nazavrik
 Аватар для nazavrik
22 / 22 / 2
Регистрация: 17.09.2008
Сообщений: 130
05.02.2010, 23:45  [ТС]     windows.h and afx.h #3
Пробовал и так. Если вместо всего перечисленного использовать #include <afxwin.h>, то все хорошо компилится пока не объявлять какой-нить MFCшный класс.

Если я объявляю объект:

Код
CFile f;
Выводится:

Код
error C2065: 'CFile' : undeclared identifier
error C2146: syntax error : missing ';' before identifier 'f'
error C2065: 'f' : undeclared identifier
Может я где туплю? MFC до этого не юзал.
CheshireCat
Эксперт С++
2909 / 1237 / 78
Регистрация: 27.05.2008
Сообщений: 3,318
06.02.2010, 11:21     windows.h and afx.h #4
Приведи минимальный пример кода, воспроизводящего эту ошибку.
nazavrik
 Аватар для nazavrik
22 / 22 / 2
Регистрация: 17.09.2008
Сообщений: 130
06.02.2010, 12:45  [ТС]     windows.h and afx.h #5
Есть у меня класс для работы с файлами.

Код
class MyFile
{
public:
     MyFile(const char *pPath)
     {
         hFile = CreateFile(...);
         if(hFile==INVALID_HANDLE)
         {...}
     }

    ~MyFile()
    {
       if(bFileIsOpen)
          CloseHandle(hFile);
    }

     ReadFromFile(char *Buffer, size_t bufLen)
     {
          //ReadFile(...);
     }
     WriteToFile(char *Buffer, size_t bufLen)
     {
         //WriteFile(...);
     }
private:
    HANDLE hFile;
};
Методов больше, поэтому я не могу отказаться от этого класса. Но приведенные методы нужно переделать под методы класса CFile.

При попытке определить объект CFile в этом классе

Код
class MyClass
{
public:
    ...
private:
   CFile file1;
   HANDLE hFile;
};
возникают приведенные выше ошибки.
CheshireCat
Эксперт С++
2909 / 1237 / 78
Регистрация: 27.05.2008
Сообщений: 3,318
06.02.2010, 13:24     windows.h and afx.h #6
А у тебя в проекте вообще используется MFC ? Ну, если сам не разберешься, выложи весь проект куда-нить на FTP и приведи ссылку, погляжу.....
Вот кусок из stdafx.h:
C++
1
2
3
4
5
6
7
8
9
#include <afxwin.h>         // Ядро MFC и стандартные компоненты
#include <afxext.h>         // Расширения MFC
#include <afxdisp.h>        // Классы автоматизации MFC
 
#include <afxdtctl.h>        // Поддержка MFC для общих элементов управления Internet Explorer 4
#include <afxcmn.h>            // Поддержка MFC для общих элементов управления Windows
 
#include <afxsock.h>        // Расширения сокетов MFC
#include <afxmt.h>
nazavrik
 Аватар для nazavrik
22 / 22 / 2
Регистрация: 17.09.2008
Сообщений: 130
06.02.2010, 21:47  [ТС]     windows.h and afx.h #7
Все разобрался. Собака была в другом месте зарыта. Что касается использования WinApi и MFC, то у меня все случилось так:

Подключил #include <afxwin.h> до включения #include <windows.h>. Наличие/отсутствие последнего дальше не играет никакой роли. Одновременно указал в свойствах Use MFC Static Library.

Все сработало.
Yandex
Объявления
06.02.2010, 21:47     windows.h and afx.h
Ответ Создать тему
Опции темы

Текущее время: 03:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru