void memorywin_info::recompute_children() { // compute a client rect RECT bounds; bounds.top = bounds.left = 0; bounds.right = m_views[0]->prefwidth() + (2 * EDGE_WIDTH); bounds.bottom = 200; AdjustWindowRectEx(&bounds, DEBUG_WINDOW_STYLE, FALSE, DEBUG_WINDOW_STYLE_EX); // clamp the min/max size set_maxwidth(bounds.right - bounds.left); // get the parent's dimensions RECT parent; GetClientRect(window(), &parent); // edit box gets half of the width RECT editrect; editrect.top = parent.top + EDGE_WIDTH; editrect.bottom = editrect.top + metrics().debug_font_height() + 4; editrect.left = parent.left + EDGE_WIDTH; editrect.right = parent.left + ((parent.right - parent.left) / 2) - EDGE_WIDTH; // combo box gets the other half of the width RECT comborect; comborect.top = editrect.top; comborect.bottom = editrect.bottom; comborect.left = editrect.right + (2 * EDGE_WIDTH); comborect.right = parent.right - EDGE_WIDTH; // memory view gets the rest RECT memrect; memrect.top = editrect.bottom + (2 * EDGE_WIDTH); memrect.bottom = parent.bottom - EDGE_WIDTH; memrect.left = parent.left + EDGE_WIDTH; memrect.right = parent.right - EDGE_WIDTH; // set the bounds of things m_views[0]->set_bounds(memrect); set_editwnd_bounds(editrect); smart_set_window_bounds(m_combownd, window(), comborect); }
void consolewin_info::recompute_children() { // get the parent's dimensions RECT parent; GetClientRect(window(), &parent); // registers always get their desired width, and span the entire height RECT regrect; regrect.top = parent.top + EDGE_WIDTH; regrect.bottom = parent.bottom - EDGE_WIDTH; regrect.left = parent.left + EDGE_WIDTH; regrect.right = regrect.left + m_views[1]->maxwidth(); // edit box goes at the bottom of the remaining area RECT editrect; editrect.bottom = parent.bottom - EDGE_WIDTH; editrect.top = editrect.bottom - metrics().debug_font_height() - 4; editrect.left = regrect.right + (EDGE_WIDTH * 2); editrect.right = parent.right - EDGE_WIDTH; // console and disassembly split the difference RECT disrect; disrect.top = parent.top + EDGE_WIDTH; disrect.bottom = ((editrect.top - parent.top) / 2) - EDGE_WIDTH; disrect.left = regrect.right + (EDGE_WIDTH * 2); disrect.right = parent.right - EDGE_WIDTH; RECT conrect; conrect.top = disrect.bottom + (EDGE_WIDTH * 2); conrect.bottom = editrect.top - EDGE_WIDTH; conrect.left = regrect.right + (EDGE_WIDTH * 2); conrect.right = parent.right - EDGE_WIDTH; // set the bounds of things m_views[0]->set_bounds(disrect); m_views[1]->set_bounds(regrect); m_views[2]->set_bounds(conrect); set_editwnd_bounds(editrect); }