Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > MFC в VC++ 2008


Автор: ARMALITE 26.1.2010, 00:33
Добрый день. В настоящий момент я начал изучать программирование с использованием MFC в среде MSVC++ 2008. Читаю книжку Шеферда Джорджа (программироване на MSVC++ в среде .NET). В самом начале дается пример, который у меня не получается скомпилировать:

Код

#include <afxwin.h>

class CMyApp: public CWinApp
{ public:
  virtual BOOL InitInstance(); };

class CMyFrame: public CFrameWind
{ public:
  CMyFrame();

  protected:
  afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  afx_msg void OnPaint();
  DECLARE_MESSAGE_MAP() };

CMyApp theApp;

BOOL CMyApp::InitInstance()
{ m_pMainWnd=new CMyFrame();
  m_pMainWnd->ShowWindow(m_nCmdShow);
  m_pMainWnd->UpdateWindow();
  return TRUE; }

BEGIN_MESSAGE_MAP(CMyFrame,CFrameWnd)
  ON_WM_LBUTTONDOWN()
  ON_WM_PAINT()
END_MESSAGE_MAP()

CMyFrame::CMyFrame()
{ Create(NULL,"MyAPPApplication"); }

void CMyFrame::OnLButtonDown(UINT nFlags,CPoint point)
{ TRACE("Entering CMyFrame::OnLButtonDown - %lf, [%d;%d]\n",(long)nFlags,point.x,point.y); }

void CMyFrame::OnPaint()
{ CPaintDC dc(this);
dc.TextOut(0,0,"Hello World!!"); }


Компилятор сообщает следующее:
Цитата

myapp.cpp(38) : fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?


При попытке добавить в злосчастный код stdafx.h злосчастная студия ругается, как будто я никаких библиотек вообще не подключил (где видит название классов/функции, пишет что они не определены)

Кстати, еще объясните пожалуйста, если я создаю пустой проект, и создаю исходный файл с вышепредставленным кодом, почему студия выдает такую ошибку:
Цитата

afx.h(24) : fatal error C1189: #error :  Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]


Заранее благодарю.

Добавлено через 1 минуту и 57 секунд
PS: в первом вопросе я создавал не просто пустой проект, а пустой MFC-проект. Поэтому ошибки разные.

Автор: ller 26.1.2010, 01:32
Потому что в файле stdafx.h нужно самому вписывать требуемые заголовочные файлы, по умолчанию, там по моему всего лишь парочка прописана. А проще было не создавать проект с предкомпелированными заголовками, из за этого весь сыр бор. И во второй ошибке черным по белому написано как это исправить...

Добавлено через 17 секунд
Please #define _AFXDLL or do not use /MD[d]

Автор: ARMALITE 26.1.2010, 10:55
Понял, спасибо. Вопрос закрыт.

Добавлено через 10 секунд
Понял, спасибо. Вопрос закрыт.

Автор: bsa 26.1.2010, 13:13
ARMALITE, у многих практикующих программистов есть мнение, что MFC изучать не стоит. Вот наиболее популярные причины:
1. жить ей осталось не долго
2. ужасный дизайн
3. жесткая привязка к определенной ОС.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)