Re[7]: Усталовить размер сплиттера при создании
От: ekamaloff Великобритания  
Дата: 23.01.06 16:15
Оценка: 2 (1)
Здравствуйте, atrofa, Вы писали:

E>>>>Тогда рассмотри возможность использования CDialogBar. Поищи, возможно на форуме есть примеры.


A>А если использовать CDialogBar то развер будет уже подганяться автоматически правильно?


Ну да.
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Усталовить размер сплиттера при создании
От: atrofa Украина  
Дата: 23.01.06 10:58
Оценка:
Привет

Использую сплитер:

в OnCreateClient:

if (!m_wndSplitter.CreateStatic(this, 1, 2))
    return FALSE;
if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CSelectorView), CSize(400, 100), pContext) ||
    !m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CISView), CSize(100, 100), pContext))
{
    m_wndSplitter.DestroyWindow();
    return FALSE;
}

SetActiveView((CView*)m_wndSplitter.GetPane(0,0));



Как мне указать (или изменить) размер самого сплиттера, а не его панелей.
Пробовал так:


CRect rSplit;
GetClientRect(&rSplit);
ClientToScreen(rSplit);

m_wndSplitter.SetWindowPos(0, rSplit.left, rSplit.top,
    rSplit.Width()-100, rSplit.Height()-100, SWP_NOZORDER);



Результата никакого. Посоветуйте как изменть размер!

Для чего это нужно:

Сейчас у меня сплиттер занимает всю клиентскую часть, мне нужно внизу формы создать окно, соответственно хочу у меньшить на высоту этого окна сплиттер.
Re: Усталовить размер сплиттера при создании
От: ekamaloff Великобритания  
Дата: 23.01.06 11:44
Оценка:
Здравствуйте, atrofa, Вы писали:

A>Сейчас у меня сплиттер занимает всю клиентскую часть, мне нужно внизу формы создать окно, соответственно хочу у меньшить на высоту этого окна сплиттер.


Странно ты подходишь как-то. По-моему нужно делать два сплиттера — один горизональный, на все окно. В верхней его части будет второй сплиттер (вертикальный), а в нижней части — твое окно.

Примерно вот так
Автор: ekamaloff
Дата: 27.12.05
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Re[2]: Усталовить размер сплиттера при создании
От: atrofa Украина  
Дата: 23.01.06 13:13
Оценка:
E>Странно ты подходишь как-то. По-моему нужно делать два сплиттера — один горизональный, на все окно. В верхней его части будет второй сплиттер (вертикальный), а в нижней части — твое окно.

E>Примерно вот так
Автор: ekamaloff
Дата: 27.12.05


ТОгда получиться что мое окно, котороя я создал внизу формы, можно будет изменять( я имею ввиду размер), так как создано оно в сплиттере. А мне нужно что б оно было над статус баром и не менялось.
Или я не правильно понимаю?
Re[3]: Усталовить размер сплиттера при создании
От: ekamaloff Великобритания  
Дата: 23.01.06 13:34
Оценка:
Здравствуйте, atrofa, Вы писали:

E>>Странно ты подходишь как-то. По-моему нужно делать два сплиттера — один горизональный, на все окно. В верхней его части будет второй сплиттер (вертикальный), а в нижней части — твое окно.


E>>Примерно вот так
Автор: ekamaloff
Дата: 27.12.05


A>ТОгда получиться что мое окно, котороя я создал внизу формы, можно будет изменять( я имею ввиду размер), так как создано оно в сплиттере. А мне нужно что б оно было над статус баром и не менялось.

A>Или я не правильно понимаю?

Тогда рассмотри возможность использования CDialogBar. Поищи, возможно на форуме есть примеры.
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Re[4]: Усталовить размер сплиттера при создании
От: atrofa Украина  
Дата: 23.01.06 15:20
Оценка:
E>Тогда рассмотри возможность использования CDialogBar. Поищи, возможно на форуме есть примеры.

А просто изменить размеры сплиттера не получиться? и разместить мое окно на главное окно?
Есть какой то способ изменить размер сплиттера?
Re[5]: Усталовить размер сплиттера при создании
От: ekamaloff Великобритания  
Дата: 23.01.06 16:09
Оценка:
Здравствуйте, atrofa, Вы писали:

E>>Тогда рассмотри возможность использования CDialogBar. Поищи, возможно на форуме есть примеры.


A>А просто изменить размеры сплиттера не получиться? и разместить мое окно на главное окно?

A>Есть какой то способ изменить размер сплиттера?

AFAIK никак не получится, да и подход неверный. Он всегда будет ресайзиться (автоматически) по клиентской области родительского окна
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Re[6]: Усталовить размер сплиттера при создании
От: atrofa Украина  
Дата: 23.01.06 16:10
Оценка:
Здравствуйте, ekamaloff, Вы писали:

E>Здравствуйте, atrofa, Вы писали:


E>>>Тогда рассмотри возможность использования CDialogBar. Поищи, возможно на форуме есть примеры.


А если использовать CDialogBar то развер будет уже подганяться автоматически правильно?
Re[8]: Усталовить размер сплиттера при создании
От: atrofa Украина  
Дата: 23.01.06 16:18
Оценка:
Извини за назойливость, прсто не работал с этим

Вообщем в OnCreateClient
я буду сначала создавать CDialogBar а потом сплиттер так?

И еще. При создании CDialogBar мне ему нужно подусунуть IDD диалога. Это получаеться что обязательно его в ресурсах создавать?

Спасибо
Re[9]: Усталовить размер сплиттера при создании
От: ekamaloff Великобритания  
Дата: 24.01.06 08:07
Оценка:
Здравствуйте, atrofa, Вы писали:

A>Извини за назойливость, прсто не работал с этим


Да ничего

A>Вообщем в OnCreateClient

A>я буду сначала создавать CDialogBar а потом сплиттер так?

Dialog bar обычно создается в перекрытом CFrameWnd::OnCreate(). Там же, где, например, панели инструментов и строка состояния. Для того, чтобы он оказался внизу главного окна, укажи при создании стиль CBRS_BOTTOM

А сплиттер так и создавай в OnCreateClient. Здесь ничего менять не придется.

A>И еще. При создании CDialogBar мне ему нужно подусунуть IDD диалога. Это получаеться что обязательно его в ресурсах создавать?


Ну да, а тебе разве не это надо?
Я думал тебе нужно создать в нижней части главного окна дополнительное окошко, на котором могут располагаться некоторые контролы, и размер которого (точнее наверное только высота, если ты не запретил изменение размеров главного окна) нельзя менять. Для такой цели по-моему хорошо подходит CDialogBar.

Вот так это примерно делается:
1) в ресурсах создаешь заготовку диалога, размещаешь на ней все что надо. Стиль у этого диалога должен быть выставлен в WS_CHILD.
2) создаешь свой класс, унаследованный от CDialogBar (это не обязательно, но таким образом у тебя будет возможность обработки событий дочерних контролов твоего dialog bar-а)
3) в CMainFrame (или что у тебя там унаследованное от CFrameWnd) создаешь переменную-член этого класса
4) в CMainFrame::OnCreate создаешь само окно dialog bar-а (CDialogBar::OnCreate), при этом указываешь идентификатор твоего шаблона диалога (например IDD_MYDIALOGBAR).

Впрочем есть и другой вариант. Сделать таки два сплиттера — один горизонтальный, один вертикальный, но для первого запретить изменение размеров панелей. Вот здесь
Автор: slayeek
Дата: 25.12.03
описано несколько вариантов, как это можно сделать.

A>Спасибо
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.