本文整理汇总了C++中DockCont::StateDocked方法的典型用法代码示例。如果您正苦于以下问题:C++ DockCont::StateDocked方法的具体用法?C++ DockCont::StateDocked怎么用?C++ DockCont::StateDocked使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DockCont
的用法示例。
在下文中一共展示了DockCont::StateDocked方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ContainerDragEnd
void DockWindow::ContainerDragEnd(DockCont &dc)
{
KillTimeCallback(TIMEID_ANIMATE_DELAY);
if (!dc.IsFloating()) return;
HighlightCtrl &hl = GetHighlightCtrl();
Ctrl *p = hl.GetParent();
int align = DOCK_NONE;
if (p)
for (int i = 0; i < 4; i++)
if (p == &dockpane[i]) align = i;
if (animatewnd && (p || align != DOCK_NONE)) {
FloatAnimate(dc, hl.GetScreenRect());
}
if (align != DOCK_NONE) {
Unfloat(dc);
dc.StateDocked(*this);
dockpane[align].Swap(hl, dc);
}
else if (DockCont *target = dynamic_cast<DockCont *>(p)) {
StopHighlight(false);
bool nest = (GetMouseFlags() & NestedToggleKey()) ? !IsNestedTabs() : IsNestedTabs();
DockContainerAsTab(*target, dc, nest && dc.GetCount() > 1);
}
else
StopHighlight(false);
if (dc.GetParent())
dc.SetFocus();
}
示例2: FloatFromTab
void DockWindow::FloatFromTab(DockCont &c, DockCont &tab)
{
Rect r = c.GetScreenRect();
tab.SetRect(r);
tab.StateDocked(*this);
c.RefreshLayout();
tab.MoveBegin();
}
示例3: SerializeLayout
void DockWindow::SerializeLayout(Stream &s, bool withsavedlayouts)
{
StopHighlight(false);
int cnt = 0;
s.Magic();
// Groups
ArrayMap<String, Vector<int> > groups;
if (s.IsStoring())
for (int i = 0; i < dockers.GetCount(); i++) {
String g = dockers[i]->GetGroup();
if (!g.IsEmpty()) {
int ix = groups.Find(g);
if (ix < 0) {
groups.Add(dockers[i]->GetGroup(), Vector<int>());
ix = groups.GetCount() - 1;
}
groups[ix].Add(i);
}
}
s % groups;
if (s.IsLoading()) {
ClearLayout();
for (int i = 0; i < dockers.GetCount(); i++)
dockers[i]->SetGroup(Null);
for (int i = 0; i < groups.GetCount(); i++) {
Vector<int> &v = groups[i];
const String &g = groups.GetKey(i);
for (int j = 0; j < v.GetCount(); j++) {
int ix = v[j];
if (ix >= 0 && ix < dockers.GetCount())
dockers[ix]->SetGroup(g);
}
}
}
if (s.IsStoring()) {
// Write docked
for (int i = 0; i < 4; i++) {
DockPane &pane = dockpane[i];
int fsz = dockframe[i].IsShown() ? dockframe[i].GetSize() : 0;
s / fsz % pane;
DockCont *dc = dynamic_cast<DockCont *>(pane.GetFirstChild());
for (int j = 0; dc && j < pane.GetCount(); j++) {
s % *dc;
dc = dynamic_cast<DockCont *>(dc->GetNext());
}
}
cnt = 0;
// Count Floating
for (int i = 0; i < conts.GetCount(); i++)
if (conts[i].IsFloating()) cnt++;
// Write Floating
s / cnt;
for (int i = 0; i < conts.GetCount(); i++) {
if (conts[i].IsFloating()) {
conts[i].Serialize(s);
conts[i].SerializePlacement(s, false);
}
}
// Write Autohidden
for (int i = 0; i < 4; i++) {
cnt = hideframe[i].GetCount();
s / cnt;
for (int j = 0; j < hideframe[i].GetCount(); j++) {
int ix = FindDocker(&hideframe[i].GetCtrl(j)->Get(0));
if (ix >= 0)
s / ix;
}
}
}
else {
// Read docked
for (int i = 0; i < 4; i++) {
DockPane &pane = dockpane[i];
dockframe[i].Hide();
int fsz;
s / fsz % pane;
for (int j = 0; j < pane.GetCount(); j++) {
DockCont *dc = CreateContainer();
s % *dc;
dc->StateDocked(*this);
pane << *dc;
}
if (fsz && pane.GetCount()) {
dockframe[i].SetSize(fsz);
dockframe[i].Show();
}
else
dockframe[i].SetSize(0);
}
// Read floating
s / cnt;
for (int i = 0; i < cnt; i++) {
DockCont *dc = CreateContainer();
dc->Serialize(s);
//.........这里部分代码省略.........
示例4: DockContainer
/*
* Container docking
*/
void DockWindow::DockContainer(int align, DockCont &c, int pos)
{
Detach(c);
c.StateDocked(*this);
Dock0(align, c, pos);
}