PSD, хорошая идея.
Итак: все компоненты протестированы под WInXP, однако должны работать под любыми вынями.
Написаны на VC7.
IEButton.cpp
IEButton.h - кнопка с картинкой, возможно функционирование в 3 различных видах:
1.) - обыкновенная кнопка (только текст)
2.) - кнопка с иконкой (через функцию bool SetIcon(UINT nID,bool redraw)
3.) - самое интересное - кнопка с иконкой и тенью, то есть при наводе указателя на кнопку появляется другая иконка (отличная от основной), чаще используется для подсветки.
(функция - bool SetIcon(UINT nIDIcon,UINT nIDShadow,bool redraw)
IEEdit.cpp
IEEdit.h - едит бокс для числовых форматов,
работает в следующих вариантах (определяются при вызове конструктора
CIEEdit(const CString& LastStr=_T(""),
const bool mDouble=false,
const bool mInt=false,
const bool mLess=false,
const bool mMore=false,
const bool mnonZero=false);
1.)m_Int=false m_Double=false - просто строка
2.)m_Int=false m_Double=true
m_Int=true m_Double=true - едит бокс для double
3.)m_Int=true m_Double=false - едит бокс для Int
Для 2 и 3 комбинации:
1.)m_Less=false m_More=false - весь спектр решений (от минус беск до плюс беск)
m_Less=true m_More=true
2.)m_Less=false m_More=true m_nonZero=false - >=0;
3.)m_Less=false m_More=true m_nonZero=true - >0; (строго больше)
4.)m_Less=true m_More=false m_nonZero=false - <0;
5.)m_Less=true m_More=false m_nonZero=true - <=0;
IEPropertyList.cpp
IEPropertyList.h - лист свойств (как в C++Builder или в VC7) (для нормальной работы требуется - IEEdit)
Возможны следующие типы итемов (то есть свойств):
1.)заголовок или узел (ReadOnly)
2.)стандартный едит
3.)едит для double >0
4.)едит для double >=0
5.)едит для double
6.)едит для int >0
7.)едит для int >=0
8.)едит для int
9.)комбо бокс
10.) статический текст - едит бокс стилем ReadOnly.
При получении и покидании фокуса итемом - компонент шлет соответствующие мессаги.
IERichEditOtchet.cpp
IERichEditOtchet.h - нужен для создания (динамически) ReadOnly отчетов о чем-нить. Что интересно - можно загонять строки в Unicode (хотя формат RTF - это не поддерживает), не надо знать формата RTF. Работает следующим образом - функциями класса
void AddStr(const CString& str,
const bool Bold=false, //жирность
const bool Underline=false, //подчеркнутость
const bool Italic=false, //курсив
const bool Left=true, //выравнивание
const bool Center=false,
const bool Right=false,
const int yHeight=200);
Добавляются абзацы текста с указанным форматированием (yHeight - в твипсах (вроде так называется)), после добавления всех строк вызывается функция MakeOtchet() - которая отчет и генерит полностью. Работает через SetWindowText.