Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Содание приложения для пузырьковой сортировки, создание приоржения для визуализации сор 
:(
    Опции темы
Demians20
  Дата 28.9.2009, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



мне нужно создать диалог в котором я буду реализовывать визуализацию сортировки 
проблема в графическом выводе 
вывожу данные через WM_Paint но тогда изображение маргает 
я думаю сделать отдельную функцию и в ней реализовать вывод 
в конце ее буду делать Update();  

для работы с окружностью использую класс CCircle в котором описаны все параметры для круга 
далее в зависимости сколько пользователь выбрал элементов закидываю все обьекты CCircle в vector<CCircle> m_BuffCircle
ну и соответственно при рисовании буду в цыкле обращаться ко всем элементам брать координаты и свойства
но возникла проблема как сделать правильно вывод  
может у кого есть примеры или какие то идеи получше ?


Это сообщение отредактировал(а) Demians20 - 28.9.2009, 17:11
PM MAIL   Вверх
jonie
Дата 28.9.2009, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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





--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Demians20
Дата 28.9.2009, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



спасибо посмотрим

Добавлено через 55 секунд
я вообще вот как делаю
Код

MainDlg.h


class CMainDlg : public CDialogImpl<CMainDlg>, public CUpdateUI<CMainDlg>,
        public CMessageFilter, public CIdleHandler
{
protected:
    vector<CCircle> m_BuffCircle;
    int m_countr;

public:
    enum { IDD = IDD_MAINDLG };
    
    CMainDlg();
    ~CMainDlg();

    virtual BOOL PreTranslateMessage(MSG* pMsg);
    virtual BOOL OnIdle();

    BEGIN_UPDATE_UI_MAP(CMainDlg)
    END_UPDATE_UI_MAP()

    BEGIN_MSG_MAP(CMainDlg)
        //MESSAGE_HANDLER(WM_PAINT, OnPaint)
        MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
        MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
        COMMAND_ID_HANDLER(ID_APP_ABOUT, OnAppAbout)
        COMMAND_ID_HANDLER(IDOK, OnOK)
        COMMAND_ID_HANDLER(IDCANCEL, OnCancel)
        COMMAND_ID_HANDLER(ID_PUSIRK, OnPusireck)
        COMMAND_ID_HANDLER(ID_COUNTER, OnCounter)
        COMMAND_ID_HANDLER(ID_EXIT, OnExit)
    END_MSG_MAP()

    LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
    LRESULT OnDestroy(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
    //LRESULT OnPaint(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
    LRESULT OnAppAbout(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
    LRESULT OnOK(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
    LRESULT OnCancel(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
    
    LRESULT OnPusireck(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
    LRESULT OnCounter(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
    LRESULT OnExit(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/);

private:
    void CloseDialog(int nVal);
    int Randomize();
    BOOL FindNumber(int inum);
    void CirclePushBack();
    void OnPaint();

MainDlg.cpp
.....
void CMainDlg::CirclePushBack()
{
    m_BuffCircle.clear();

    for (int i = 0; i<m_countr; i++)
    {
        CCircle objCircle;
        objCircle.SetNumber(Randomize());
        objCircle.SetCoordCCircle(i*30 + 20 + 20*(i-1), -30);
        m_BuffCircle.push_back(objCircle);  
    }
}

void CMainDlg::OnPaint()
{
    HDC hDC;
        hDC = GetDC();

    SetGraphicsMode(hDC, GM_ADVANCED);
    SetMapMode(hDC, MM_LOENGLISH);

//  GetClientRect( (LPRECT) &rect);
//  DPtoLP(hDC, (LPPOINT) &rect, 2);

    SelectObject(hDC, GetStockObject(HOLLOW_BRUSH));

    CBrush m_myBrush;
    CBrush *m_myOldBrush;
    m_myBrush.CreateSolidBrush(RGB(147, 240, 220)); 
    ::SelectObject(hDC, m_myBrush); 


    if (m_BuffCircle.size() != NULL)
    {
        vector<CCircle>::iterator iterCircl;
        for (iterCircl = m_BuffCircle.begin(); iterCircl < m_BuffCircle.end(); iterCircl++)
        {
            RECT rect;
            int iX, iY, iR;

            if((*iterCircl).GetCoordCCircle(iX, iY, iR))
            {
                rect.left = iX - iR;
                rect.top = iY + iR;
                rect.right = iX + iR;
                rect.bottom = iY - iR;
                Ellipse(hDC, rect.left, rect.top, rect.right, rect.bottom);
                PTSTR pBuf = (PTSTR)_alloca(4*sizeof(TCHAR));
                ATLASSERT(pBuf);
//              sprintf_s(pBuf, 4,"%d", (*iterCircl).GetNumber());
//              DrawText(hDC,  pBuf, -1, &rect, DT_SINGLELINE|DT_CENTER|DT_VCENTER);

            }

        }
    
    }

    UpdateWindow();
    return ;
}


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


 




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


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

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