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

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.71
nazavrik
22 / 22 / 2
Регистрация: 17.09.2008
Сообщений: 130
#1

windows.h and afx.h - C++

05.02.2010, 23:31. Просмотров 4345. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.02.2010, 23:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос windows.h and afx.h (C++):

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

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

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

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

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

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

6
CheshireCat
Эксперт С++
2893 / 1242 / 78
Регистрация: 27.05.2008
Сообщений: 3,382
05.02.2010, 23:33 #2
#include <afxwin.h> вместо всего перечисленного достаточно.
1
nazavrik
22 / 22 / 2
Регистрация: 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
CheshireCat
Эксперт С++
2893 / 1242 / 78
Регистрация: 27.05.2008
Сообщений: 3,382
06.02.2010, 11:21 #4
Приведи минимальный пример кода, воспроизводящего эту ошибку.
0
nazavrik
22 / 22 / 2
Регистрация: 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
CheshireCat
Эксперт С++
2893 / 1242 / 78
Регистрация: 27.05.2008
Сообщений: 3,382
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
nazavrik
22 / 22 / 2
Регистрация: 17.09.2008
Сообщений: 130
06.02.2010, 21:47  [ТС] #7
Все разобрался. Собака была в другом месте зарыта. Что касается использования WinApi и MFC, то у меня все случилось так:

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

Все сработало.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2010, 21:47
Привет! Вот еще темы с ответами:

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

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

Запуск в Windows 7 образа Windows XP Mode на виртуальной машине Windows Virtual PC - Windows 7
Столкнулся со следующей проблемой. После установки Virtual PC для Windows 7 (64-бит) и Windows XP Mode попытался скопировать файл файлы...

При установке Windows 7 или Windows Vista распоковка Windows не идет - Windows 7
Все привет Столкнулся с такой проблемой,когда начинаю устанавливать Windows7 или Vista распоковка винды не идет,но комп не виснет ...


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

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
06.02.2010, 21:47
Ответ Создать тему
Опции темы

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