Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.72/43: Рейтинг темы: голосов - 43, средняя оценка - 4.72
23 / 23 / 5
Регистрация: 17.09.2008
Сообщений: 130
1

windows.h and afx.h

05.02.2010, 23:31. Показов 8775. Ответов 6
Метки нет (Все метки)

Добрый вечер!

Есть проект, где используются винапишные функции и следовательно подключена 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?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.02.2010, 23:31
Ответы с готовыми решениями:

Программа перестает компилироваться после подключения библиотеки <Afx.h>
#include &quot;stdafx.h&quot; #include &lt;fstream&gt; #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt;...

Afx.h
добрый день. подскажите пожалуйста. делаю #define _AFXDLL #include &lt;afx.h&gt; в консольном приложении...

Windows 8.1 обновилась недавно до Windows 10, при этом перестала запускаться Windows 7, установленная второй
Купил ноут, на котором была предустановлена Windows 8.1. Но так как некоторые программы под ней не...

Беспроводная сеть Windows XP- Windows 7, Windows 7 подключается но пишет что без доступа к интернету.
Компьютер под управлением Windows XP посредством USB адаптера D-Link (WiFi точка) дает WiFi на...

6
Эксперт С++
2921 / 1270 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
05.02.2010, 23:33 2
#include <afxwin.h> вместо всего перечисленного достаточно.
1
23 / 23 / 5
Регистрация: 17.09.2008
Сообщений: 130
05.02.2010, 23:45  [ТС] 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 до этого не юзал.
0
Эксперт С++
2921 / 1270 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
06.02.2010, 11:21 4
Приведи минимальный пример кода, воспроизводящего эту ошибку.
0
23 / 23 / 5
Регистрация: 17.09.2008
Сообщений: 130
06.02.2010, 12:45  [ТС] 5
Есть у меня класс для работы с файлами.
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
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 в этом классе

C++
1
2
3
4
5
6
7
8
class MyClass
{
public:
    ...
private:
   CFile file1;
   HANDLE hFile;
};
возникают приведенные выше ошибки.
0
Эксперт С++
2921 / 1270 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
06.02.2010, 13:24 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>
0
23 / 23 / 5
Регистрация: 17.09.2008
Сообщений: 130
06.02.2010, 21:47  [ТС] 7
Все разобрался. Собака была в другом месте зарыта. Что касается использования WinApi и MFC, то у меня все случилось так:

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

Все сработало.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.02.2010, 21:47

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Что лучше: Windows XP SP3, Windows Vista SP2 или Windows 7 SP1?
Что лучше: Windows Vista Ultimate SP2, Windows XP SP3 или Windows Se7en Максимальная Pre SP1 в...

Рухнула Windows 8 на ноутбуке Dell. Как установить заново Windows 8 или Windows 7?
при попытке восстановить систему с widows 8 пишет что не удалось восстановить,ни одним из...

Во время переустановки Windows 7 сохранила Windows XP как Windows.old - что с ней делать?
у меня стоял widows xp я сделал переустановку и поставил windows 7 во время переустановки windows 7...

Возможно ли после переустановки Windows с установочного диска с Windows 8 снова обновиться до Windows 10?
Так получилось, что у меня начал сильно глючить софт, как мне сказали, что я напорталчил при первой...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.