Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DrawItem - как использовать 
:(
    Опции темы
oper54
  Дата 24.6.2005, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Хочу изменить стандартные контролы.
Для создания контролов насколько я знаю - наследуют класс нужного контрола или CWnd,
в этом классе используют DrawItem для изменения прорисовки контрола (например класс круглой кнопки).
Если можно пример(с коментариями) создания контрола с использованием этой функции,
или ссылку на документацию по теме создания контролов.
PM MAIL   Вверх
En_t_end
Дата 24.6.2005, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



oper54
Есть очень хороший ресурс по контролам, там по идее должны быть исходники... www.codeproject.com -> http://www.codeproject.com/script/articles/subcat.asp?id=3
Посмотри... там их много.
PM MAIL ICQ Skype GTalk Jabber   Вверх
JoyEx
Дата 24.6.2005, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дядя
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 21.6.2005
Где: Москва, РФ

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



MSDN

Visual C++ MFC Samples

CTRLTEST Sample: Implements Custom Controls -> Example: Owner Drawing (Menu and List Box)

А принцип там простой: в DrawItem() получаете контекст (HDC) окна и сами в нем рисуете, а в MeasureItem() можно установить размеры.

Код


void ... MeasureItem(LPMEASUREITEMSTRUCT lpMIS)
{
    lpMIS->itemHeight = MY_ITEM_HEIGHT;
}

void ... DrawItem(LPDRAWITEMSTRUCT lpDIS)
{

CDC* pDC = CDC::FromHandle(lpDIS->hDC);

}


Это сообщение отредактировал(а) JoyEx - 24.6.2005, 19:44


--------------------
Если ты уже никого не боишься, значит ты самый страшный 
PM IM ICQ AOL YIM MSN   Вверх
lioness
Дата 17.9.2008, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А кто бы подсказал, почему я ВООБЩЕ не прихожу в DrawItem? 

Это мой контрол в диалоге:
Код

    CListBoxAdvancedEx        m_myListbox;


Fixed для Owner Draw в свойствах поставила. 

Это в моем классе CListBoxAdvancedEx.h  для модернизированного ListBox-a
Код

    public:
    virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);


И в процедуре 

Код

/////////////////////////////////////////////////////////////////////////////
// CListBoxAdvancedEx message handlers

void CListBoxAdvancedEx::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) 
{
    // TODO: Add your code to draw the specified item
    CDC cdc;

               и так далее..

я не бываю сАААвсем  smile 
PM MAIL   Вверх
Earnest
Дата 18.9.2008, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



А связывание через DDX_Control есть?


--------------------
...
PM   Вверх
lioness
Дата 18.9.2008, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Да. В диалоге есть:

Код

void DMyDialog::DoDataExchange(CDataExchange* pDX)
{
    //{{AFX_DATA_MAP(CStartwerteDlg)
.....
    DDX_Control(pDX, IDC_LIST_LASTFALL, m_myListbox);
.....
    //}}AFX_DATA_MAP
}


и информация в этот ListBox заносится совершенно правильно. Мне нужно было только, чтобы некоторые строки стояли в красном цвете. Красный цвет в соответствующее поле заношу при m_myListbox.addLine.  То есть, я бываю в процедуре класса CListBoxAdvancedEx.срр

Я не посещаю DrawItem в классе CListBoxAdvancedEx. Ведь точно ни в какую таблицу этот event не заносится? Должно автоматически прерываться?  Чего в супе не хватает...?
PM MAIL   Вверх
lioness
Дата 22.10.2008, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Никто ничего не ответил, но так тайна и осталась покрытая мраком.
Я взяла другой класс, который производный от 

Код

class AFX_EXT_CLASS CListCtrlAdvanced : public CListCtrl


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


 




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


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

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