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


Автор: S.A.G. 15.11.2007, 19:54
Есть два файла, один - хидер, другой - исходник. Оба включены в "Empty Application", тип проекта "Win32 Project" в студии 2005 8.0.50727.806. Они, поидее, представляют собой простейшее приложение на MFC.

1 файл:
Код
#include <afxwin.h>
//Класс основного окна приложения
class CMainWin: public CFrameWnd
{
    public:
    CMainWin();

    //Объявление карты сообщений
    DECLARE_MESSAGE_MAP();
}
//Класс приложения. Должен существовать только один экземпляр этого класса
//Член-функция InitInstance() вызывается при запуске приложения
class CApp: public CWinApp
{
    public:
    BOOL InitInstance();
};

2 файл:
Код
#include <afxwin.h>
#include <string.h>
#include "MainClasses.h"
//Создание одного и только одного экземпляра приложения
CApp App;
//Реализация
BOOL CApp::InitInstance()
{
    //Создание главного окна приложения и его отображение
    //Член CApp::m_pMainWnd - это указатель на объект главного окна
    m_pMainWnd = new CMainWin;
    m_pMainWnd->ShowWindow(SW_RESTORE);
    m_pMainWnd->UpdateWindow();
    //Сигнализируем MFC об успешной инициализации приложения
    return TRUE;
}
CMainWin::CMainWin()
{
    //Создание окна с заголовком
    //Используется встроенный в MFC класс окна, поэтому первый параметр 0
    this->Create(0, "Простейшее приложение на MFC");
}
//Реализация карты сообщений
BEGIN_MESSAGE_MAP(CMainWin /*класс окна*/, CFrameWnd /*Класс-предок*/)
END_MESSAGE_MAP();

"Юникод" отключен в настройках. После компиляции пишет что нужно либо подключить MFC как "shared DLL", либо убрать какую-то опцию в настройках. Захожу в свойства проекта -> ставлю шаред длл, пробую компилить. Тут оно выдает такую строчку - "WINVER not defined. Defaulting to 0x0502 (Windows Server 2003)" и далее следует куча ошибок (не распознало версию винды?).

Подскажите, плиз, как это побороть?

Автор: Dblma 15.11.2007, 20:30
По-поводу "WINVER not defined. Defaulting to 0x0502 (Windows Server 2003)" - это нормально и уменя рабочие проекты так же пишут. Так что проблема не в этом. Присылай те ошибки, которые после этого варнинга приходят.

Автор: S.A.G. 15.11.2007, 20:31
Все, с главной проблемой разобрался. Меня сбила пропущенная точка с запятой, из-за нее среда нагенерила кучу ошибок, а я подумал что криво подключил библиотеку.

Но вот эта строчка не исчезла - "WINVER not defined. Defaulting to 0x0502 (Windows Server 2003)". Может забить на нее? Какие могут быть негативные последствия?

Автор: zkv 16.11.2007, 01:42
Цитата(S.A.G. @  15.11.2007,  20:31 Найти цитируемый пост)
Но вот эта строчка не исчезла - "WINVER not defined. Defaulting to 0x0502 (Windows Server 2003)". Может забить на нее? Какие могут быть негативные последствия? 

наведи курсором на WINVER и жми F1 там тебе расскажут, что будет значить этот макрос, при разных значениях.
Грубо говоря он характеризует под какой версией винды будет работать твое приложение, таким образом от него будет зависеть, какие возможности ты сможешь использовать. 

Автор: Rapalex 16.11.2007, 11:39
Пример:
Код

// Modify the following defines if you have to target a platform prior to the ones specified below.
// Refer to MSDN for the latest info on corresponding values for different platforms.
#ifndef WINVER                // Allow use of features specific to Windows XP or later.
#define WINVER 0x0501        // Change this to the appropriate value to target other versions of Windows.
#endif

#ifndef _WIN32_WINNT        // Allow use of features specific to Windows XP or later.                   
#define _WIN32_WINNT 0x0501    // Change this to the appropriate value to target other versions of Windows.
#endif                        

#ifndef _WIN32_WINDOWS        // Allow use of features specific to Windows 98 or later.
#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later.
#endif

#ifndef _WIN32_IE            // Allow use of features specific to IE 6.0 or later.
#define _WIN32_IE 0x0600    // Change this to the appropriate value to target other versions of IE.
#endif


Добавлено через 2 минуты и 50 секунд
Это в stdafx.h запихнуть надо (в начало).

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