void CInPlaceFrame::RecalcLayout(BOOL bNotify) { if (m_wndResizeBar.m_hWnd != NULL) m_wndResizeBar.BringWindowToTop(); COleIPFrameWndEx::RecalcLayout(bNotify); CWnd* pWnd = GetActiveView(); if (pWnd != NULL) pWnd->BringWindowToTop(); if (m_wndRulerBar.m_hWnd != NULL) m_wndRulerBar.BringWindowToTop(); // at least 12 pt region plus ruler if it exists CDisplayIC dc; CSize size; size.cy = MulDiv(12, dc.GetDeviceCaps(LOGPIXELSY), 72)+1; size.cx = dc.GetDeviceCaps(LOGPIXELSX)/4; // 1/4" size.cx += HORZ_TEXTOFFSET; //adjust for offset size.cy += VERT_TEXTOFFSET; if (m_wndRulerBar.m_hWnd != NULL && m_wndRulerBar.IsVisible()) { CRect rect; m_wndRulerBar.GetWindowRect(&rect); size.cy += rect.Height(); } m_wndResizeBar.SetMinSize(size); }
CSize CButtonDialog::GetBaseUnits() { CDisplayIC dc; CFont* pFont = dc.SelectObject(&m_font); TEXTMETRIC tm; VERIFY(dc.GetTextMetrics(&tm)); dc.SelectObject(pFont); return CSize(tm.tmAveCharWidth, tm.tmHeight); }
BOOL CEmbeddedItem::OnDrawEx(CDC* pDC, CSize& rSize, BOOL bOutput) { CDisplayIC dc; CWordPadView* pView = GetView(); if (pView == NULL) return FALSE; ASSERT_VALID(pView); int nWrap = pView->m_nWordWrap; CRect rect;//rect in twips rect.left = rect.top = 0; rect.bottom = 32767; // bottomless rect.right = 32767; if (nWrap == 0) // no word wrap rect.right = 32767; else if (nWrap == 1) // wrap to window { CRect rectClient; pView->GetClientRect(&rectClient); rect.right = rectClient.right - HORZ_TEXTOFFSET; rect.right = MulDiv(rect.right, 1440, dc.GetDeviceCaps(LOGPIXELSX)); } else if (nWrap == 2) // wrap to ruler rect.right = pView->GetPrintWidth(); // first just determine the correct extents of the text pDC->SetBkMode(TRANSPARENT); if (pView->PrintInsideRect(pDC, rect, m_nBeg, m_nEnd, FALSE) == 0) { // default to 12pts high and 4" wide if no text rect.bottom = rect.top+12*20+1; // 12 pts high rect.right = rect.left+ 4*1440; } rect.bottom+=3*(1440/dc.GetDeviceCaps(LOGPIXELSX)); // three pixels // then, really output the text CRect rectOut = rect; // don't pass rect because it will get clobbered if (bOutput) pView->PrintInsideRect(pDC, rectOut, m_nBeg, m_nEnd, TRUE); ASSERT(rectOut.right == rect.right); // adjust for border (rect.left is already adjusted) if (pView->GetStyle() & WS_HSCROLL) ++rect.bottom; // account for border on scroll bar! // return HIMETRIC size rSize = rect.Size(); rSize.cx = MulDiv(rSize.cx, 2540, 1440); // convert twips to HIMETRIC rSize.cy = MulDiv(rSize.cy, 2540, 1440); // convert twips to HIMETRIC return TRUE; }
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { WNDCLASS wndcls; BOOL bRes = CFrameWndEx::PreCreateWindow(cs); HINSTANCE hInst = AfxGetInstanceHandle(); // see if the class already exists if (!::GetClassInfo(hInst, szWordPadClass, &wndcls)) { // get default stuff ::GetClassInfo(hInst, cs.lpszClass, &wndcls); wndcls.style &= ~(CS_HREDRAW|CS_VREDRAW); // register a new class wndcls.lpszClassName = szWordPadClass; wndcls.hIcon = ::LoadIcon(hInst, MAKEINTRESOURCE(IDR_MAINFRAME)); ASSERT(wndcls.hIcon != NULL); if (!AfxRegisterClass(&wndcls)) AfxThrowResourceException(); } cs.lpszClass = szWordPadClass; CRect rect = theApp.m_rectInitialFrame; if (rect.Width() > 0 && rect.Height() > 0) { // make sure window will be visible CDisplayIC dc; CRect rectDisplay(0, 0, dc.GetDeviceCaps(HORZRES), dc.GetDeviceCaps(VERTRES)); if (rectDisplay.PtInRect(rect.TopLeft()) && rectDisplay.PtInRect(rect.BottomRight())) { cs.x = rect.left; cs.y = rect.top; cs.cx = rect.Width(); cs.cy = rect.Height(); } } return bRes; }