В общем хотелось бы нарисовать на WTL следущее:
Две панельки, у левой хотелось бы след. фич: auto hide, dockable, floating, hide, toolbar.
Правая на основе HTML page.
В общем внешний вид левой панели один в один похож на Server explorer из 7 студии.
Или что-то вроде Панели навигации в RSDN@Home + toolbar желательно.
На С# я подозреваю это можно сделать, но ведь без .Net Framework работать не будет ?
Можно ли такое сделать на WTL ? Какие классы нужно использовать ?
Здравствуйте, <Аноним>, Вы писали:
А>В общем хотелось бы нарисовать на WTL следущее: А>Две панельки, у левой хотелось бы след. фич: auto hide, dockable, floating, hide, toolbar. А>Правая на основе HTML page.
А>В общем внешний вид левой панели один в один похож на Server explorer из 7 студии. А>Или что-то вроде Панели навигации в RSDN@Home + toolbar желательно. А>На С# я подозреваю это можно сделать, но ведь без .Net Framework работать не будет ?
А>Можно ли такое сделать на WTL ? Какие классы нужно использовать ?
Как раз такое реализовал на WTL.
Нужно:
1). DockingWindows (описание есть на CodeProject и в статьях по WTL на этом сайте
Там же есть ссылки на закладки в стиле Dveloper Studio 7.0
2). IE вставляется очень легко с помощью CWTLAxControl, который находиться на CodeProject
3). Левую часть можно оформить так же как и в Outlook. Элемент для этого есть на сайте viksoe. Плюс там еще много чего вкусного (например меню в стиле Office XP с поддержкой тем Windows XP).
Вроде все...
... << RSDN@Home 1.1.3 stable >>
Re[2]: Интерфейс типа RSDN@Home
От:
Аноним
Дата:
06.05.04 12:22
Оценка:
Здравствуйте, avbochagov, Вы писали:
A>2). IE вставляется очень легко с помощью CWTLAxControl, который находиться на CodeProject
Здравствуйте, <Аноним>, Вы писали:
А>Здравствуйте, avbochagov, Вы писали:
A>>2). IE вставляется очень легко с помощью CWTLAxControl, который находиться на CodeProject
А>А что с http://www.codeproject.com/ случилось, ни одна ссылка не работает.
Здравствуйте, avbochagov, Вы писали:
A>Как раз такое реализовал на WTL.
A>Нужно: A>1). DockingWindows (описание есть на CodeProject и в статьях по WTL на этом сайте
Класс, то что нужно. Единственная ложка дегтя — это мерцание TreeViewCtrl при resize.
Даже в примере SDISample мерцает. Что-то у меня не получилось избавиться от него. Как с этим бороться ?
Вот кусок кода из примера:
Здравствуйте, abacus, Вы писали:
A>Класс, то что нужно. Единственная ложка дегтя — это мерцание TreeViewCtrl при resize. A>Даже в примере SDISample мерцает. Что-то у меня не получилось избавиться от него. Как с этим бороться ?
29/04 автор проапдейтил и сорцы и демки. Проверил — теперь не мерцает (ХР).
Здравствуйте, Gosha, Вы писали:
A>>Класс, то что нужно. Единственная ложка дегтя — это мерцание TreeViewCtrl при resize. A>>Даже в примере SDISample мерцает. Что-то у меня не получилось избавиться от него. Как с этим бороться ?
G>29/04 автор проапдейтил и сорцы и демки. Проверил — теперь не мерцает (ХР).
Я скачивал не ранее 5 мая, так что причина не в этом. (Win2000 sp4).
Мерцает и когда за сплиттер тянешь и при floating размеры изменяешь.
как временную меру сделал:
Здравствуйте, abacus, Вы писали:
A>>>Класс, то что нужно. Единственная ложка дегтя — это мерцание TreeViewCtrl при resize. A>>>Даже в примере SDISample мерцает. Что-то у меня не получилось избавиться от него. Как с этим бороться ?
G>>29/04 автор проапдейтил и сорцы и демки. Проверил — теперь не мерцает (ХР).
A>Я скачивал не ранее 5 мая, так что причина не в этом. (Win2000 sp4). A>Мерцает и когда за сплиттер тянешь и при floating размеры изменяешь.
странно, у меня все ОК.
A>На РСДН можно как-нибудь скриншоты постить ? А то еще один глюк обнаружился, чтобы долго не описывать A>проще показать скриншот.
Заходишь в свой профайл и жмешь там ссылку "Файлы". Закачиваешь файл, а потом ссылаешь ся на него с помощью набора тэгов [іmg][/іmg] (в редакторе сообщений внизу, рядом со смайлами).
class CMainView : public CDialogImpl<CMainView>
{
public:
enum { IDD = IDD_MAIN_FORM };
...
};
таким образом
class CMainFrame: public dockwins::CDockingFrameImpl<CMainFrame>,
public CUpdateUI<CMainFrame>, public CMessageFilter, public CIdleHandler
{
typedef dockwins::CDockingFrameImpl<CMainFrame> baseClass;
Здравствуйте, abacus, Вы писали:
A> LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) A> { A> m_hWndClient = m_iMainView.Create(m_hWnd); A> InitializeDockingFrame(CStyle::sIgnoreSysSettings | CStyle::sGhostDrag | CStyle::sNoAnimation); A> DWORD dwStyle=WS_OVERLAPPEDWINDOW | WS_POPUP| WS_CLIPCHILDREN | WS_CLIPSIBLINGS; A> CRect rcDef(0,0,100,100); A> m_iServDockWnd.Create(m_hWnd,rcDef,_T("Toolbox"),dwStyle); A> DockWindow(m_iServDockWnd,dockwins::CDockingSide(dockwins::CDockingSide::sLeft), 50/*nBar*/,float(0.0)/*fPctPos*/,200/*nWidth*/,100/* nHeight*/);
UpdateLayout();
может в этом дело
A> PostMessage(CWM_INITIALIZE);
а может в этом, в обработчике что делается? если восстанавливается положение окошек то прошлогодняя версия библиотеки что то глючила на этом со страшной силой, как текущяя себя ведет не пробовал.
A> return 0; A> } A>};
Здравствуйте, abacus, Вы писали:
A>Здравствуйте, avbochagov, Вы писали:
A>>Как раз такое реализовал на WTL.
A>>Нужно: A>>1). DockingWindows (описание есть на CodeProject и в статьях по WTL на этом сайте
A>Класс, то что нужно. Единственная ложка дегтя — это мерцание TreeViewCtrl при resize. A>Даже в примере SDISample мерцает. Что-то у меня не получилось избавиться от него. Как с этим бороться ?
Да есть такое... и не только
Я общался с автором насчет исправлений — он сказал, что сейчас занят, а ближе к лету вроде у него будет время на библиотеку.
Я спросил у него разрешения (все таки проект бесплатный) можно ли слать ему багрепорты — он сказал что можно.
ТО с чем я столкнулся: в SDI приложениях на WTL используют технику подмены клиентского окна (m_hWndClient) — при этом надо вызвать UpdateLayout, но с использоваием DockWins не происходит обновления окон (надо мышью тянуть за рамку).
Времени на длительное изучения не было, поставил такую заплатку (ох нехорошо, надо бы найти правильное решение и отослать автору):
Файл WndFrmPkg.h, строка 970, функция bool UpdateLayout(const CRect& rc)
было
bool UpdateLayout(const CRect& rc)
{
//[22.04.2004] AVB отключение оптимизации для корректной работы
// при смене клиента в SDI приложении
//bool bRes=EqualRect(&rc)!=FALSE;bool bRes = false; //теперь всегда будет производиться перерисовка оконif(!bRes)
Здравствуйте, Юнусов Булат, Вы писали:
ЮБ> UpdateLayout(); ЮБ>может в этом дело
Да, скорее всего. Может не учитывается ширина бордюра (или как он там называется) при перерисовке и имеем такой глюк.
Сейчас пока некогда этим заниматься, думал мож кто с этим столкнулся и может точно ткнуть носом, как это поправить.
Если найду решение раньше, чем кно-нибудь другой — запостю. Правда только недели через 2 наверное время появиться.
A>> PostMessage(CWM_INITIALIZE); ЮБ>а может в этом, в обработчике что делается? если восстанавливается положение окошек то прошлогодняя версия библиотеки что то глючила на этом со страшной силой, как текущяя себя ведет не пробовал.
Он у меня пока пустой, так что проблема не в этом.