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);
    }
}
示例#2
0
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);
}
示例#3
0
//-----------------------------------------------------------------------------
// 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();
}
示例#4
0
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();
}
示例#5
0
文件: QFrame.cpp 项目: Beifeng/qui
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());
    }
}
示例#9
0
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;
}
示例#10
0
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;
}
示例#11
0
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;
}
示例#12
0
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);
}
示例#13
0
//*************************************************************************************
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
}
示例#14
0
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);
}
示例#15
0
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;
}
示例#17
0
/////////////////////////////////////////////////////////////////////////////
// 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;
}
示例#20
0
文件: pchart.cpp 项目: garyqinyu/abv
/*--------------------------------------------------------------------------*/
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;
}
示例#21
0
//////////////////
// 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);
		}
	}
}
示例#22
0
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;
}
示例#23
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 );
}
示例#24
0
文件: GAlert.cpp 项目: FEI17N/Lgi
void GAlert::SetAppModal()
{
    #if WINNATIVE
    SetExStyle(GetExStyle() | WS_EX_TOPMOST);
    #elif !defined(_MSC_VER)
    #warning "Impl me."
    #endif
}
示例#25
0
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);
	}
}
示例#26
0
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);
}
示例#27
0
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();
	}
}