Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Простейшее оконное приложение MFC, глюк или в коде ошибка? 
V
    Опции темы
MasterOfMuppets
Дата 29.3.2010, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 28.2.2010

Репутация: нет
Всего: 1



Набрал проект прямо из учебника Давыдова по MFC. Вот код:
MainThread.hpp
Код

#ifndef _MainThread_hpp
#define _MainThread_hpp
#define WINVER 0x0501
#define _WIN32_WINNT 0x0501
#include <afxwin.h>

class MainThread: public CWinApp 
{

//Methods
public:
    virtual BOOL InitInstance();
};

#endif


MainThread.cpp
Код

#include "MainThread.hpp"
#include "FrameWnd.hpp"

BOOL MainThread::InitInstance()
{
    FrameWnd      *pFrame;

    pFrame = new FrameWnd;
    ASSERT_VALID(pFrame);
    pFrame->Create(
        NULL,
        "Test MFC",
        WS_VISIBLE | WS_OVERLAPPEDWINDOW,
    CRect(300, 50, 800, 500)
        );
        this->m_pMainWnd = pFrame;

        return TRUE;
}


FrameWnd.hpp
Код

#ifndef _FrameWnd_hpp
#define _FrameWnd_hpp
#define WINVER 0x0501
#define _WIN32_WINNT 0x0501
#include <afxwin.h>

class FrameWnd: public CFrameWnd
{
//Methods

protected:
    afx_msg void OnPaint();

    DECLARE_MESSAGE_MAP();
};

#endif


FrameWnd.cpp
Код

#include "FrameWnd.hpp"

BEGIN_MESSAGE_MAP( FrameWnd, CFrameWnd )
    ON_WM_PAINT()
END_MESSAGE_MAP()

afx_msg void FrameWnd::OnPaint()
{

    return afx_msg void();
}


main.cpp
Код

#include "MainThread.hpp"

MainThread MainThread;


Убрал весь код по рисованию фигурок в окне из обработчика он пайнт.
С настройками разобрался, скомпилил и запустил. Всё-бы хорошо, но есть одна странность:
user posted image
Что в коде не так?
PM MAIL   Вверх
Earnest
Дата 30.3.2010, 08:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Странность-то в чем?

Добавлено через 3 минуты и 54 секунды
Цитата(MasterOfMuppets @  29.3.2010,  20:12 Найти цитируемый пост)
#include "FrameWnd.hpp"
afx_msg void FrameWnd::OnPaint()
{
    return afx_msg void();
}

Ага, вижу. Вот она, твоя странность.
Во-первых, строка   "return afx_msg void();" полный... бред.
Во-вторых, у тебя приложение непрерывно занимается прорисовкой, хотя ты считаешь, что оно ничего не делает. Поставь TRACE в эту функцию - сильно удивишься.

Либо вообще убери обработчик OnPaint (достаточно закомментировать его в карте сообщений), либо оставь там одно предложение - на будущее -
CPaintDC dc (this);


--------------------
...
PM   Вверх
MasterOfMuppets
Дата 30.3.2010, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 28.2.2010

Репутация: нет
Всего: 1



Спасибо smile

Это сообщение отредактировал(а) MasterOfMuppets - 30.3.2010, 17:16
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0419 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.