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.