Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не перерисовывается дочернее окно 
:(
    Опции темы
Altern
Дата 30.3.2006, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте. У меня следующая проблема. Не перерисовывается дочернее окно тогда, когда я того хочу. Ни UpdateWindow(), ни RedrawWindow() ни Invalidate() не помогают. Вероятно я не понимаю до конца приницпов функционирования программы. Точнее не "вероятно", а так оно и есть. Но проблема остается, решить не получается.

Дочернее окно создается следующим образом:
Код

void CChildtestView::OnInitialUpdate() 
{
    CView::OnInitialUpdate();
        MyWnd *wnd = new MyWnd;
    if(m_hWnd)
        wnd->    CreateEx(
                      WS_EX_OVERLAPPEDWINDOW,
                      NULL, "Test",
                      WS_CHILD | WS_TABSTOP | WS_VISIBLE |  WS_OVERLAPPEDWINDOW,
                      50, 
                      50, 
                      300, 
                      300, 
                      m_hWnd, 
                      NULL);
}


При нажатии правой клавишей в клиентской области окна выводится текст:
Код

void MyWnd::OnLButtonDown(UINT nFlags, CPoint point) 
{
    CClientDC dc(this);
    dc.TextOut(10, 10, "hello");
    CWnd::OnLButtonDown(nFlags, point);
}


При нажатии левой клавиши мыши это все должно стираться:
Код

void MyWnd::OnRButtonDown(UINT nFlags, CPoint point) 
{

    RedrawWindow();
    CWnd::OnRButtonDown(nFlags, point);
}


Но этого не происходит. smile

Класс MyWnd производный от CWnd.

Заранее спасибо за любую подсказку.
PM MAIL   Вверх
zhgutov
Дата 30.3.2006, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

// some.h
// ...

class MyWnd: public CWnd
{
public:
    MyWnd ();

protected:
    bool flag;

    afx_msg void OnPaint ();
    afx_msg void OnLButtonDown (UINT nFlags, CPoint point);
    afx_msg void OnRButtonDown (UINT nFlags, CPoint point);

    // ...
};

// ...

// some.cpp
// ...

BEGIN_MESSAGE_MAP (MyWnd, CWnd)
    ON_WM_PAINT ()
    ON_WM_LBUTTONDOWN ()
    ON_WM_RBUTTONDOWN ()
    // ...
END_MESSAGE_MAP ()

MyWnd::MyWnd (): flag (false) // ...
{
    // ...
}

void MyWnd::OnPaint () 
{
    CPaintDC dc (this);
    if (flag)
    {
        dc.TextOut (10, 10, "hello");
    }
}

void MyWnd::OnLButtonDown (UINT nFlags, CPoint point)
{
    flag = true;
    Invalidate ();
}

void MyWnd::OnRButtonDown (UINT nFlags, CPoint point)
{
    flag = false;
    Invalidate ();
}

// ...

Не тестировал, но должно сработать.

Это сообщение отредактировал(а) zhgutov - 30.3.2006, 21:09
--------------------
Приполз. Увидел. Укусил.
PM MAIL   Вверх
Altern
Дата 30.3.2006, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



и что имелось в виду? добавить флаг типа bool? и как его использовать?
PM MAIL   Вверх
zhgutov
Дата 30.3.2006, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Там прокрутка есть: ниже показано.
--------------------
Приполз. Увидел. Укусил.
PM MAIL   Вверх
B2_Russia
Дата 30.3.2006, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В доску свой :)
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 3.7.2003
Где: Тверь

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



Попробуй так:
Код

InvalidateRect(NULL,TRUE);


или

Код

SendMessage(this->m_hWnd, WM_PAINT, 0,0);

PM WWW ICQ   Вверх
Altern
Дата 1.4.2006, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



не работает. ни с флагами, ни InvalidateRect(NULL,TRUE), ни ::SendMessage(this->m_hWnd, WM_PAINT, 0,0)

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


 




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


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

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