void CXTPSkinObjectFrame::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos) { CXTPSkinObject::OnWindowPosChanging(lpwndpos); if ((m_pManager->HasApplyOptions(xtpSkinApplyMetrics | xtpSkinApplyFrame)) && ((GetExStyle() & WS_EX_MDICHILD) == WS_EX_MDICHILD) && ((GetStyle() & WS_MAXIMIZE) == WS_MAXIMIZE)) { RECT rc; GetParent()->GetClientRect(&rc); int cx = rc.right - rc.left; int cy = rc.bottom - rc.top; if (lpwndpos->cx > cx + m_rcBorders.left + m_rcBorders.right) { lpwndpos->cx = cx + m_rcBorders.left + m_rcBorders.right; lpwndpos->cy = cy + m_rcBorders.top + m_rcBorders.bottom; lpwndpos->x = -m_rcBorders.left; lpwndpos->y = -m_rcBorders.top; } } CSize szFrameRegion(lpwndpos->cx, lpwndpos->cy); if (((lpwndpos->flags & SWP_NOSIZE) == 0) && (m_szFrameRegion != szFrameRegion)) { if ((GetExStyle() & WS_EX_LAYOUTRTL) == 0) UpdateFrameRegion(szFrameRegion); } }
TopWindow& TopWindow::TopMost(bool b, bool stay_top) { GuiLock __; HWND hwnd; if(hwnd = GetHWND()) SetWindowPos(hwnd, b ? HWND_TOPMOST : (stay_top ? HWND_NOTOPMOST : HWND_BOTTOM), 0,0,0,0,SWP_NOMOVE|SWP_NOSIZE ); return ExStyle(b ? GetExStyle() | WS_EX_TOPMOST : GetExStyle() & ~WS_EX_TOPMOST); }
//----------------------------------------------------------------------------- // Name: PreSubclassWindow // Description: Makes some initialisations before the actuall // subclassing occurs //----------------------------------------------------------------------------- void CCheckBox::PreSubclassWindow() { // text on left side? // unsigned style = GetStyle (); unsigned ex_style = GetExStyle (); if ((style & BS_LEFTTEXT) || (style & BS_RIGHTBUTTON) || (ex_style & WS_EX_RIGHT) ) m_bLeftText = true; GetWindowText (m_text, 64); // get text m_font = (HFONT) GetParent()->SendMessage (WM_GETFONT, 0, 0); // get font if (!IsWindowEnabled ()) { m_bDisabled = true; m_nState = BOX_DISABLED_2; } // prevent any drawing by the control itself // ModifyStyle (0,BS_OWNERDRAW,0); CButton::PreSubclassWindow(); }
void CViewerView::OnInitialUpdate() { // TODO: Add your specialized code here and/or call the base class CViewerDoc* pDoc = GetDocument(); if(pDoc->m_dib) { // adjust the view according to the size of the dib// DWORD style,exstyle; CRect framerect,viewrect; viewrect.SetRect(0,0,pDoc->m_dib->GetWidth(),pDoc->m_dib->GetHeight()); CFrameWnd *frame = GetParentFrame(); style=GetStyle(); exstyle=GetExStyle(); AdjustWindowRectEx(&viewrect,style,FALSE,exstyle); style=frame->GetStyle(); exstyle=frame->GetExStyle(); AdjustWindowRectEx(&viewrect,style,TRUE,exstyle); frame->GetWindowRect(&framerect); framerect.right = framerect.left + viewrect.Width(); framerect.bottom = framerect.top + viewrect.Height()+44; frame->MoveWindow(&framerect); } CView::OnInitialUpdate(); }
LRESULT QFrame::OnHtmlNotify( UINT uMsg, WPARAM wParam, LPARAM lParam ) { switch(((NMHDR*)lParam)->code) { case HLN_DOCUMENT_COMPLETE: { if ( !_HasFlag(GetStyle(),WS_CHILD) ) { WTL::CRect r; GetWindowRect(&r); // 非子窗口,调整窗体为合适大小 int nWidth = max(HTMLayoutGetMinWidth(m_hWnd), (UINT)r.Width()); WTL::CRect rcNew; rcNew.SetRect(r.left, r.top, nWidth + r.left, r.top + max((UINT)r.Height(), HTMLayoutGetMinHeight(m_hWnd,nWidth))); AdjustWindowRectEx( &rcNew, GetStyle(), FALSE, GetExStyle()); // 调整大小,位置不变 SetWindowPos(NULL, 0, 0, rcNew.Width(), rcNew.Height(), SWP_NOZORDER | SWP_NOMOVE); size_min_ = rcNew.Size(); // 设置title ctl_title_ = GetCtrl("#wc-title"); if (ctl_title_.is_valid()) { SetWindowText(ctl_title_.GetText()); } } break; } } return QView::OnHtmlNotify(uMsg, wParam, lParam); }
template <class BASE> void CDialogMinTrayBtn<BASE>::MinTrayBtnUpdatePosAndSize() { bool bNrmWnd = (GetExStyle() & WS_EX_TOOLWINDOW) == 0; int iXSz; if (IsWindowsClassicStyle()) iXSz = GetSystemMetrics(bNrmWnd ? SM_CXSIZE : SM_CXSMSIZE) - 2; else // SM_SX*SIZE seems wrong when theming is on, as buttons are squares, we use Y size. iXSz = GetSystemMetrics(bNrmWnd ? SM_CYSIZE : SM_CYSMSIZE) - 4; m_MinTrayBtnSize = CSize(iXSz, GetSystemMetrics(bNrmWnd ? SM_CYSIZE : SM_CYSMSIZE) - 4); DWORD dwStyle = GetStyle(); bool bSzFrm = (dwStyle & WS_THICKFRAME) != 0; CRect rcWnd; GetWindowRect(&rcWnd); iXSz += CAPTION_BUTTONSPACE; m_MinTrayBtnPos = CSize( rcWnd.Width() - ((iXSz + CAPTION_BUTTONSPACE) << 1) + GetSystemMetrics(bSzFrm ? SM_CXSIZEFRAME : SM_CXFIXEDFRAME), CAPTION_BUTTONSPACE + GetSystemMetrics(bSzFrm ? SM_CYSIZEFRAME : SM_CYFIXEDFRAME) ); // If it isn't a toolbox and minimize/maximize buttons are present, include their size if (bNrmWnd && (dwStyle & (WS_MINIMIZEBOX | WS_MAXIMIZEBOX)) != 0) m_MinTrayBtnPos.x -= IsWindowsClassicStyle() ? ((iXSz << 1) + CAPTION_BUTTONSPACE) : ((iXSz + CAPTION_BUTTONSPACE) << 1); }
LRESULT CXTPSkinObjectFrame::HandleNcHitTest(CPoint point) { ScreenToFrame(&point); DWORD dwStyle = GetStyle(); if ((dwStyle & WS_VSCROLL) && m_spi[SB_VERT].fVisible && ::PtInRect(&m_spi[SB_VERT].rc, point)) return (LRESULT)HTVSCROLL; if ((dwStyle & WS_HSCROLL) &&m_spi[SB_HORZ].fVisible && ::PtInRect(&m_spi[SB_HORZ].rc, point)) return (LRESULT)HTHSCROLL; if ((dwStyle & WS_VSCROLL) && m_spi[SB_VERT].fVisible && (dwStyle & WS_HSCROLL) && m_spi[SB_HORZ].fVisible && IsSizeBox()) { CRect rcSizeGripper(m_spi[SB_HORZ].rc.right, m_spi[SB_VERT].rc.bottom, m_spi[SB_VERT].rc.right, m_spi[SB_HORZ].rc.bottom); if (rcSizeGripper.PtInRect(point)) return GetExStyle() & WS_EX_LAYOUTRTL ? HTBOTTOMLEFT : HTBOTTOMRIGHT; } CCaptionButton* pButtonHot = HitTestButton(point); if (pButtonHot) { return pButtonHot->m_nHTCode; } return (LRESULT)HTNOWHERE; }
void CXTPSkinObjectFrame::ResizeFrame() { if (HasCaption() && m_pManager->IsEnabled()) { CXTPWindowRect rc(this); DWORD dwStyle = GetStyle(); DWORD dwExStyle = GetExStyle(); if ((m_pManager->GetApplyOptions() & xtpSkinApplyMetrics) && ((dwStyle & WS_CHILD) == 0)) { CRect rcWindow(rc); AdjustWindowRectEx(rcWindow, dwStyle, FALSE, dwExStyle); CRect rcSysWindow(rc); CXTPSkinManagerApiHook::AdjustWindowRectExOrig(rcSysWindow, dwStyle, FALSE, dwExStyle); rc.bottom -= rcSysWindow.Height() - rcWindow.Height(); rc.right -= rcSysWindow.Width() - rcWindow.Width(); MoveWindow(rc, FALSE); } UpdateFrameRegion(rc.Size()); } }
BOOL CSkinDialog::OnInitDialog(CWindow wndFocus, LPARAM lInitParam) { DWORD dwStyle = GetStyle(); m_bHasMinBtn = dwStyle & WS_MINIMIZEBOX; m_bHasMaxBtn = dwStyle & WS_MAXIMIZEBOX; m_bHasCloseBtn = dwStyle & WS_CAPTION; m_bSizeBox = dwStyle & WS_SIZEBOX; dwStyle &= ~WS_CAPTION; dwStyle &= ~DS_3DLOOK; dwStyle &= ~DS_FIXEDSYS; dwStyle |= WS_CLIPCHILDREN|WS_CLIPSIBLINGS; SetWindowLong(GWL_STYLE, dwStyle); DWORD dwStyleEx = GetExStyle(); dwStyleEx = WS_EX_STATICEDGE | WS_EX_APPWINDOW; SetWindowLong(GWL_EXSTYLE, dwStyleEx); SetWindowPos(NULL, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_FRAMECHANGED); CalcTitleBarRect(); return TRUE; }
BOOL CXTPPopupControl::SetLayeredWindowAttributes(int bAlpha) { if (bAlpha > 255) bAlpha = 255; if (bAlpha == m_nCurrentTransparency) return TRUE; m_nCurrentTransparency = bAlpha; if (m_pfnSetLayeredWindowAttributes && (GetExStyle() & WS_EX_LAYERED)) { if (m_bLayered) { BLENDFUNCTION bf; bf.BlendOp = AC_SRC_OVER; bf.BlendFlags = 0; bf.SourceConstantAlpha = (BYTE)bAlpha; bf.AlphaFormat = 0x01; return m_pfnUpdateLayeredWindow(m_hWnd, (HDC)0, 0, 0, 0, 0, 0, &bf, 0x02); } //if pointer to transparent func - valid return m_pfnSetLayeredWindowAttributes(m_hWnd, 0x00, (BYTE)bAlpha, LWA_ALPHA); } return FALSE; }
BOOL CMDIChildWnd::UpdateClientEdge(LPRECT lpRect) { CMDIFrameWnd* pFrameWnd=GetMDIFrame(); HWND hChild=pFrameWnd->MDIGetActive(); if (hChild==NULL || hChild==m_hWnd) { DWORD dwStyle=::GetWindowLong(pFrameWnd->m_hWndMDIClient,GWL_EXSTYLE); DWORD dwNewStyle=dwStyle; if (hChild!=NULL && !(GetExStyle()&WS_EX_CLIENTEDGE) && (GetStyle()&WS_MAXIMIZE)) dwNewStyle&=~(WS_EX_CLIENTEDGE); else dwNewStyle|=WS_EX_CLIENTEDGE; if (dwStyle!=dwNewStyle) { ::RedrawWindow(pFrameWnd->m_hWndMDIClient,NULL,NULL,RDW_INVALIDATE|RDW_ALLCHILDREN); ::SetWindowLong(pFrameWnd->m_hWndMDIClient,GWL_EXSTYLE,dwNewStyle); ::SetWindowPos(pFrameWnd->m_hWndMDIClient,NULL,0,0,0,0,SWP_FRAMECHANGED|SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOSIZE|SWP_NOZORDER|SWP_NOCOPYBITS); if (lpRect!=NULL) ::GetClientRect(pFrameWnd->m_hWndMDIClient,lpRect); return TRUE; } } return FALSE; }
void CView::CalcWindowRect(LPRECT lpClientRect, UINT nAdjustType) { if (nAdjustType != 0) { // allow for special client-edge style ::AdjustWindowRectEx(lpClientRect, 0, FALSE, GetExStyle()); // default behavior for in-place editing handles scrollbars DWORD dwStyle = GetStyle(); if (dwStyle & WS_VSCROLL) { int nAdjust = afxData.cxVScroll; if (dwStyle & WS_BORDER) nAdjust -= CX_BORDER; lpClientRect->right += nAdjust; } if (dwStyle & WS_HSCROLL) { int nAdjust = afxData.cyHScroll; if (dwStyle & WS_BORDER) nAdjust -= CY_BORDER; lpClientRect->bottom += nAdjust; } return; } // call default to place borders outside of client rect CWnd::CalcWindowRect(lpClientRect, nAdjustType); }
//************************************************************************************* BOOL CBCGPDialog::OnInitDialog() { if (AfxGetMainWnd() == this) { globalData.m_bIsRTL = (GetExStyle() & WS_EX_LAYOUTRTL); CBCGPToolBarImages::EnableRTL(globalData.m_bIsRTL); } CDialog::OnInitDialog(); m_Impl.m_bHasBorder = (GetStyle () & WS_BORDER) != 0; m_Impl.m_bHasCaption = (GetStyle() & WS_CAPTION) != 0; if (IsVisualManagerStyle ()) { m_Impl.EnableVisualManagerStyle (TRUE, IsVisualManagerNCArea ()); } if (m_Impl.HasAeroMargins ()) { m_Impl.EnableAero (m_Impl.m_AeroMargins); } if (IsBackstageMode()) { m_Impl.EnableBackstageMode(); } return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }
void CSkinDialog::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp) { // TODO: Add your message handler code here and/or call default if(CImgSkin::IsLoaded() && !((GetStyle()&WS_CHILD))) { int cyFrame = GetSystemMetrics(SM_CYFRAME); int cyBorder = GetSystemMetrics(SM_CYBORDER); int cxBorder = GetSystemMetrics(SM_CXBORDER); if(GetExStyle()&WS_EX_TOOLWINDOW) { NONCLIENTMETRICS ncm; ncm.cbSize = sizeof(NONCLIENTMETRICS); SystemParametersInfo( SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &ncm, 0); lpncsp->rgrc[0].top -= cyFrame + cyBorder - m_mapRect["TitleLeftActive"].Height; } else //lpncsp->rgrc[0].top -= cyFrame - m_mapRect["TitleLeftActive"].Height - ((GetStyle()&DS_MODALFRAME)?cyBorder:1); lpncsp->rgrc[0].top -= cyFrame - m_mapRect["TitleLeftActive"].Height - cyBorder; lpncsp->rgrc[0].left -= cyFrame - m_mapRect["BorderLeftActive"].Width- cxBorder;//((GetStyle()&DS_MODALFRAME)?cxBorder:0); lpncsp->rgrc[0].right += cyFrame - m_mapRect["BorderRightActive"].Width-cxBorder-cxBorder;//((GetStyle()&DS_MODALFRAME)?cxBorder:0); lpncsp->rgrc[0].bottom += m_mapRect["BorderBot"].Height;// -= cyFrame - m_mapRect["BorderBotActive"].Height-cyBorder-cyBorder;//((GetStyle()&DS_MODALFRAME)?cyBorder:0); } CXTPDialog::OnNcCalcSize(bCalcValidRects, lpncsp); }
void CDownloadMonitorDlg::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu) { DWORD nCheck = ( GetExStyle() & WS_EX_TOPMOST ) ? MF_CHECKED : MF_UNCHECKED; pPopupMenu->CheckMenuItem( SC_NEXTWINDOW, MF_BYCOMMAND|nCheck ); CSkinDialog::OnInitMenuPopup( pPopupMenu, nIndex, bSysMenu ); }
LRESULT CXTPSkinObjectFrame::OnPrint(WPARAM wParam, LPARAM lParam) { LRESULT lResult = TRUE; if (lParam != PRF_NONCLIENT) { m_bLockFrameDraw++; lResult = DefWindowProc(WM_PRINT, wParam, lParam); m_bLockFrameDraw--; } if (lParam & PRF_NONCLIENT) { if (m_spi[SB_VERT].fVisible) m_spi[SB_VERT].fVisible = GetStyle() & WS_VSCROLL; if (m_spi[SB_HORZ].fVisible) m_spi[SB_HORZ].fVisible = GetStyle() & WS_HSCROLL; CDC* pDC = CDC::FromHandle((HDC)wParam); if ((GetExStyle() & WS_EX_LAYOUTRTL) && !XTPDrawHelpers()->IsContextRTL(pDC)) XTPDrawHelpers()->SetContextRTL(pDC, 1); DrawFrame(pDC); } return lResult; }
///////////////////////////////////////////////////////////////////////////// // Name: PreSubclassWindow // Description: Make some initializations before the actual // subclassing occurs ///////////////////////////////////////////////////////////////////////////// void ZCheckBox::PreSubclassWindow( ) { // text on left side? // DWORD dwStyle = GetStyle( ); DWORD dwStyleEx = GetExStyle( ); if ( (dwStyle & BS_LEFTTEXT) || (dwStyle & BS_RIGHTBUTTON) || (dwStyleEx & WS_EX_RIGHT) ) { m_bLeftText = TRUE; } // GetWindowText( *m_pzsText ); // get text // m_pFont = (HFONT) GetParent( )->SendMessage( WM_GETFONT, 0, 0 ); // get font if ( IsWindowEnabled( ) == FALSE ) { m_bDisabled = TRUE; m_lState = BOX_DISABLED_2; } // prevent any drawing by the control itself ModifyStyle( 0, BS_OWNERDRAW, 0 ); CButton::PreSubclassWindow( ); }
void CResizableSheet::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) { MinMaxInfo(lpMMI); CTabCtrl* pTab = GetTabControl(); if (!pTab) return; int nCount = GetPageCount(); for (int idx = 0; idx < nCount; ++idx) { if (IsWizard()) // wizard mode { // use pre-calculated margins CRect rectExtra(-CPoint(m_sizePageTL), -CPoint(m_sizePageBR)); // add non-client size ::AdjustWindowRectEx(&rectExtra, GetStyle(), !(GetStyle() & WS_CHILD) && ::IsMenu(GetMenu()->GetSafeHmenu()), GetExStyle()); ChainMinMaxInfo(lpMMI, *GetPage(idx), rectExtra.Size()); } else // tab mode { ChainMinMaxInfoCB(lpMMI, *GetPage(idx)); } } }
BOOL CXTPDockingPaneTabbedContainer::OnCaptionButtonDown(CXTPDockingPaneCaptionButton* pButton) { switch (pButton->GetID()) { case XTP_IDS_DOCKINGPANE_MENU: if (m_pSelectedPane) { InternalAddRef(); CXTPDockingPaneManager* pManager = GetDockingPaneManager(); XTP_DOCKINGPANE_CLICK menu; menu.pContainer = this; menu.rcExclude = pButton->GetRect(); ClientToScreen(&menu.rcExclude); menu.pt = GetExStyle() & WS_EX_LAYOUTRTL ? CPoint(menu.rcExclude.right, menu.rcExclude.bottom) : CPoint(menu.rcExclude.left, menu.rcExclude.bottom); menu.pPane = m_pSelectedPane; pButton->m_bPressed = TRUE; Invalidate(FALSE); pManager->NotifyOwner(XTP_DPN_CONTEXTMENU, (LPARAM)&menu); pButton->m_bPressed = FALSE; if (m_hWnd) Invalidate(FALSE); InternalRelease(); } return TRUE; } return FALSE; }
/*--------------------------------------------------------------------------*/ SIGNED PegChart::Message(const PegMessage& Mesg) { SIGNED Result = 0; switch(Mesg.wType) { case PM_PARENTSIZED: case PM_SHOW: { PegThing::Message(Mesg); if(GetExStyle() & CS_AUTOSIZE) { RecalcSize(Parent()->mClient, FALSE); } } break; case PM_SIZE: case PM_MOVE: { PegThing::Message(Mesg); RecalcLayout(TRUE); } break; default: return(PegThing::Message(Mesg)); } return Result; }
////////////////// // Get min/max info. // void CWinMgr::GetMinMaxInfo(HWND hWnd, SIZEINFO& szi) { OnGetSizeInfo(szi, m_map, hWnd); // get size info if (!hWnd) // window not created ==> done return; // Add extra space for frame/dialog screen junk. DWORD dwStyle = GetStyle(hWnd); DWORD dwExStyle = GetExStyle(hWnd); if (dwStyle & WS_VISIBLE) { SIZE& szMin = szi.szMin; // ref! if (!(dwStyle & WS_CHILD)) { if (dwStyle & WS_CAPTION) szMin.cy += GetSystemMetrics(SM_CYCAPTION); if (::GetMenu(hWnd)) szMin.cy += GetSystemMetrics(SM_CYMENU); } if (dwStyle & WS_THICKFRAME) { szMin.cx += 2*GetSystemMetrics(SM_CXSIZEFRAME); szMin.cy += 2*GetSystemMetrics(SM_CYSIZEFRAME); } else if (dwStyle & WS_BORDER) { szMin.cx += 2*GetSystemMetrics(SM_CXBORDER); szMin.cy += 2*GetSystemMetrics(SM_CYBORDER); } if (dwExStyle & WS_EX_CLIENTEDGE) { szMin.cx += 2*GetSystemMetrics(SM_CXEDGE); szMin.cy += 2*GetSystemMetrics(SM_CYEDGE); } } }
int CResizableDialog::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CDialog::OnCreate(lpCreateStruct) == -1) return -1; // child dialogs don't want resizable border or size grip, // nor they can handle the min/max size constraints BOOL bChild = GetStyle() & WS_CHILD; if (!bChild) { // keep client area CRect rect; GetClientRect(&rect); // set resizable style ModifyStyle(DS_MODALFRAME, WS_POPUP | WS_THICKFRAME); // adjust size to reflect new style ::AdjustWindowRectEx(&rect, GetStyle(), ::IsMenu(GetMenu()->GetSafeHmenu()), GetExStyle()); SetWindowPos(NULL, 0, 0, rect.Width(), rect.Height(), SWP_FRAMECHANGED| SWP_NOMOVE|SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOREPOSITION); // set the initial size as the min track size SetMinTrackSize(rect.Size()); } // create and init the size-grip if (!CreateSizeGrip(!bChild)) return -1; return 0; }
void CExtMiniDockFrameWnd::OnWindowPosChanging( WINDOWPOS* lpwndpos ) { CMiniDockFrameWnd::OnWindowPosChanging( lpwndpos ); if( GetStyle() & __REMOVED_STYLES_NORMAL ) ModifyStyle( __REMOVED_STYLES_NORMAL, 0, __SWP_FOR_REMOVED_STYLES ); if( GetExStyle() & __REMOVED_STYLES_EXTENDED ) ModifyStyleEx( __REMOVED_STYLES_EXTENDED, 0, __SWP_FOR_REMOVED_STYLES ); }
void GAlert::SetAppModal() { #if WINNATIVE SetExStyle(GetExStyle() | WS_EX_TOPMOST); #elif !defined(_MSC_VER) #warning "Impl me." #endif }
void CMainFrame::AlwaysOnTop() { if(GetExStyle() & WS_EX_TOPMOST) { SetWindowPos(&wndNoTopMost, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE); } else { SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE); } }
void CWnd::ClientToScreen(LPRECT lpRect) const { ASSERT(::IsWindow(m_hWnd)); ::ClientToScreen(m_hWnd, (LPPOINT)lpRect); ::ClientToScreen(m_hWnd, ((LPPOINT)lpRect)+1); if (GetExStyle() & WS_EX_LAYOUTRTL) CRect::SwapLeftRight(lpRect); }
void ClientToScreen(HWND hWnd, LPRECT lpRect) { ASSERT(::IsWindow(hWnd)); ::ClientToScreen(hWnd, (LPPOINT)lpRect); ::ClientToScreen(hWnd, ((LPPOINT)lpRect)+1); if (GetExStyle(hWnd) & WS_EX_LAYOUTRTL) SwapLeftRight(lpRect); }
void CXTPSkinObjectFrame::UpdateButtons() { DWORD dwExStyle = GetExStyle(); DWORD dwStyle = GetStyle(); if (m_dwStyle == dwStyle && m_dwExStyle == dwExStyle) return; m_dwExStyle = dwExStyle; m_dwStyle = dwStyle; RemoveButtons(); if (HasCaption()) { BOOL bToolWindow = (dwExStyle & WS_EX_TOOLWINDOW) == WS_EX_TOOLWINDOW; BOOL bMaximized = (dwStyle & WS_MAXIMIZE) == WS_MAXIMIZE; BOOL bMinimized = (dwStyle & WS_MINIMIZE) == WS_MINIMIZE; BOOL bSysMenu = (dwStyle & WS_SYSMENU); BOOL bDialogFrame = (dwStyle & WS_DLGFRAME || dwExStyle & WS_EX_DLGMODALFRAME); BOOL bEnableClose = TRUE; BOOL bEnabledMaximize = ((dwStyle & WS_MAXIMIZEBOX) == WS_MAXIMIZEBOX); BOOL bEnabledMinimize = ((dwStyle & WS_MINIMIZEBOX) == WS_MINIMIZEBOX); BOOL bShowMinMaxButtons = !bToolWindow && bSysMenu && (bEnabledMaximize || bEnabledMinimize); if (bSysMenu && !bToolWindow && ((m_dwExStyle & WS_EX_MDICHILD) == 0)) { HMENU hMenu = ::GetSystemMenu(m_hWnd, FALSE); if (::GetMenuState(hMenu, SC_CLOSE, MF_BYCOMMAND) & (MF_DISABLED | MF_GRAYED)) bEnableClose = FALSE; } UpdateButton(SC_CLOSE, !bDialogFrame || bSysMenu, bEnableClose, HTCLOSE, bToolWindow? WP_SMALLCLOSEBUTTON: WP_CLOSEBUTTON); UpdateButton(SC_MAXIMIZE, !bMaximized && bShowMinMaxButtons, bEnabledMaximize, HTMAXBUTTON, WP_MAXBUTTON); if (bMinimized) { UpdateButton(SC_RESTORE, bShowMinMaxButtons, bEnabledMinimize, HTMINBUTTON, WP_RESTOREBUTTON); } else { UpdateButton(SC_RESTORE, bMaximized && bShowMinMaxButtons, bEnabledMaximize, HTMAXBUTTON, WP_RESTOREBUTTON); UpdateButton(SC_MINIMIZE, bShowMinMaxButtons, bEnabledMinimize, HTMINBUTTON, WP_MINBUTTON); } UpdateButton(SC_CONTEXTHELP, ((dwExStyle & WS_EX_CONTEXTHELP) == WS_EX_CONTEXTHELP) && !bToolWindow && bSysMenu, TRUE, HTHELP, WP_HELPBUTTON); } }
void CResizableSheetEx::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) { MinMaxInfo(lpMMI); CTabCtrl* pTab = GetTabControl(); if (!pTab) return; int nCount = GetPageCount(); for (int idx = 0; idx < nCount; ++idx) { if (IsWizard()) // wizard mode { // use pre-calculated margins CRect rectExtra(-CPoint(m_sizePageTL), -CPoint(m_sizePageBR)); // add non-client size ::AdjustWindowRectEx(&rectExtra, GetStyle(), !(GetStyle() & WS_CHILD) && ::IsMenu(GetMenu()->GetSafeHmenu()), GetExStyle()); ChainMinMaxInfo(lpMMI, *GetPage(idx), rectExtra.Size()); } else if (IsWizard97()) // wizard 97 { // use pre-calculated margins CRect rectExtra(-CPoint(m_sizePageTL), -CPoint(m_sizePageBR)); if (!(GetPage(idx)->m_psp.dwFlags & PSP_HIDEHEADER)) { // add header vertical offset CRect rectLine, rectSheet; GetTotalClientRect(&rectSheet); GetAnchorPosition(ID_WIZLINEHDR, rectSheet, rectLine); rectExtra.top = -rectLine.bottom; } // add non-client size ::AdjustWindowRectEx(&rectExtra, GetStyle(), !(GetStyle() & WS_CHILD) && ::IsMenu(GetMenu()->GetSafeHmenu()), GetExStyle()); ChainMinMaxInfo(lpMMI, *GetPage(idx), rectExtra.Size()); } else // tab mode { ChainMinMaxInfoCB(lpMMI, *GetPage(idx)); } } }
void CBCGPRadialMenu::OnSize(UINT nType, int cx, int cy) { CBCGPVisualCtrl::OnSize(nType, cx, cy); if ((GetExStyle() & WS_EX_LAYERED) == 0) { SetRgn(); } }