Example #1
0
void CCoolMenuBarCtrl::ShowMenu()
{
	if ( m_pHot == NULL || ! IsMenu( m_hMenu ) ) return;

	CMenu* pMenu = CMenu::FromHandle( m_hMenu )->GetSubMenu( m_pHot->m_nID - 1 );

	if ( pMenu == NULL )
	{
		m_pHot = m_pDown = NULL;
		Invalidate();
		return;
	}

	UINT nFirstID = pMenu->GetMenuItemID( 0 );

	if ( nFirstID == ID_WINDOW_CASCADE ||
		 nFirstID == ID_WINDOW_NAVBAR )
	{
		UpdateWindowMenu( pMenu );
	}

	m_pDown = m_pHot;
	Invalidate();

	KillTimer( 1 );

	TPMPARAMS tpm;
	CRect rc;

	GetItemRect( m_pDown, &rc );
	ClientToScreen( &rc );
	rc.DeflateRect( 1, 2 );

	tpm.cbSize = sizeof(tpm);
	tpm.rcExclude = rc;

	m_pMenuBar = this;
	m_hMsgHook = SetWindowsHookEx( WH_MSGFILTER, MenuFilter, NULL, GetCurrentThreadId() );

	CoolMenu.RegisterEdge( Settings.General.LanguageRTL ? rc.right : rc.left, rc.bottom, rc.Width() );
	
	UINT nCmd = TrackPopupMenuEx( pMenu->GetSafeHmenu(),
		TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_VERTICAL|TPM_RETURNCMD,
		Settings.General.LanguageRTL ? rc.right : rc.left, rc.bottom, GetSafeHwnd(), &tpm );

	UnhookWindowsHookEx( m_hMsgHook );

	m_hMsgHook = NULL;
	m_pMenuBar = NULL;

	m_pDown = NULL;
	OnTimer( 1 );

	if ( m_pHot != NULL )
	{
		SetTimer( 1, 100, NULL );
		m_bTimer = TRUE;
	}

	Invalidate();
	UpdateWindow();

	if ( nCmd ) GetOwner()->PostMessage( WM_COMMAND, nCmd );
}
Example #2
0
void CSetupPreview::DrawPage( CDC* pDC, CRect rect, int nPage ) 
{
	// Deflate the rect some so it doesn't draw right up to the edge of the control
	rect.DeflateRect( kPreviewMargin, kPreviewMargin );

	// If we are adding page numbers, allow room for the text
	CFont* pFont = GetParent()->GetFont();
	CFont* pOldFont = pDC->SelectObject( pFont );

	if (_ProjectInfo.sDocDesc.nPages > 1)
	{
		CSize szExtent = pDC->GetTextExtent ("Page 2", 6) ;
		rect.bottom -= (szExtent.cy + 5) ;
	}

	// Determine page rect
	//
	double xScale = (double) rect.Width()  / _ProjectInfo.sDocDesc.szPage.cx;
	double yScale = (double) rect.Height() / _ProjectInfo.sDocDesc.szPage.cy;

	if (xScale > yScale)
		xScale = yScale;
	else
		yScale = xScale;

	CRect cPageRect( 0, 0,
		_ProjectInfo.sDocDesc.szPage.cx * xScale, 
		_ProjectInfo.sDocDesc.szPage.cy * yScale );

	// Draw page 
	cPageRect.OffsetRect( rect.CenterPoint() - cPageRect.CenterPoint() );
	pDC->Rectangle( cPageRect );

	try
	{
		// Draw page dressing
		//
		CPen  cPen( PS_SOLID, 1, RGB( 128, 128, 128 ) ); 
		CPen* pOldPen = pDC->SelectObject( &cPen );

		pDC->MoveTo( cPageRect.right, cPageRect.top + 2 );
		pDC->LineTo( cPageRect.right, cPageRect.bottom );
		pDC->LineTo( cPageRect.left + 2, cPageRect.bottom );

		CPen  cPen2( PS_SOLID, 1, RGB( 196, 196, 196 ) ); 
		pDC->SelectObject( &cPen2 );

		pDC->MoveTo( cPageRect.right - 2, cPageRect.top + 1 );
		pDC->LineTo( cPageRect.right - 2, cPageRect.bottom - 1 );
		pDC->SelectObject( pOldPen );

		// Draw page text
		//
		if (_ProjectInfo.sDocDesc.nPages > 1)
		{
			CString strPage;
			strPage.Format( IDS_SETUP_PAGE, nPage );
			CSize szExtent = pDC->GetTextExtent( strPage, 6 );

			int cxPos = cPageRect.left + (cPageRect.Width() - szExtent.cx) / 2;
			pDC->TextOut( cxPos, cPageRect.bottom + 5, strPage );
		}

		// Compute margin rect
		CRect cMarginRect( 
			cPageRect.left + _ProjectInfo.sDocDesc.rcMargins.left * xScale,
			cPageRect.top  + _ProjectInfo.sDocDesc.rcMargins.top  * xScale,
			cPageRect.left + _ProjectInfo.sDocDesc.rcMargins.right * xScale,
			cPageRect.top  + _ProjectInfo.sDocDesc.rcMargins.bottom * xScale );

		// Copy the margin rect into page rect, as this rect
		// will be used and modified when drawing all slabs.
		cPageRect = cMarginRect;

		// Create a brush for rendering the slabs
		CBrush cbrSlab( RGB( 196, 196, 196 ) );

		// Draw Header
		//
		if (_ProjectInfo.sDocDesc.bHasHeaders && nPage >= _ProjectInfo.sDocDesc.nHeaderStartPage)
		{
			CRect cRect = cPageRect;
			cRect.bottom = cRect.top + (_ProjectInfo.sDocDesc.nHeaderHeight * yScale);
			
			// Draw the header rectangle. 
			pDC->FrameRect( cRect, &cbrSlab );  

			// Adjust page rect for header and seperator
			cPageRect.top = cRect.bottom + _ProjectInfo.sDocDesc.nVerticalGap * yScale;
		}

		// Draw Masthead
		//
		if (_ProjectInfo.sDocDesc.bHasMasthead && nPage == 1)
		{
			CRect cRect = cPageRect;
			cRect.bottom = cRect.top + (_ProjectInfo.sDocDesc.nMastheadHeight * yScale);
			
			// Draw the masthead rectangle. 
			pDC->FrameRect( cRect, &cbrSlab );  

			// Adjust page rect for masthead and seperator
			cPageRect.top = cRect.bottom + _ProjectInfo.sDocDesc.nVerticalGap * yScale;
		}

		// Draw Footer
		//
		if (_ProjectInfo.sDocDesc.bHasFooters && nPage >= _ProjectInfo.sDocDesc.nFooterStartPage)
		{
			CRect cRect = cPageRect;
			cRect.top = cRect.bottom - _ProjectInfo.sDocDesc.nFooterHeight * yScale;
			
			// Draw the footer rectangle.  
			pDC->FrameRect( cRect, &cbrSlab );  

			// Adjust page rect for footer and seperator
			cPageRect.bottom = cRect.top - _ProjectInfo.sDocDesc.nVerticalGap * yScale;
		}

		// Draw Columns
		//
		int& nColumns  = _ProjectInfo.sDocDesc.nColumns;
		int  nGapWidth = _ProjectInfo.sDocDesc.nColumnGap * xScale;
		int  nColWidth = (cPageRect.Width() - (nGapWidth * (nColumns - 1))) / nColumns;

		CRect cColRect( cPageRect );
		cColRect.right = cColRect.left + nColWidth;
		nColWidth += nGapWidth;
		
		for (int i = 0; i < nColumns; i++)
		{
			pDC->FrameRect( cColRect, &cbrSlab );  

			if (_ProjectInfo.sDocDesc.bHasColumnLines && i < nColumns - 1)
			{
				// Draw Column line
				int xPos = cColRect.right + nGapWidth / 2;

				pDC->MoveTo( xPos, cColRect.top );
				pDC->LineTo( xPos, cColRect.bottom );
			}

			cColRect.OffsetRect( nColWidth, 0 );
		}

		// Draw Margins
		//
		CBrush cbrMargins( RGB( 0, 247, 247 ) ); 
		pDC->FrameRect( cMarginRect, &cbrMargins );  

	}
	catch (CResourceException&)
	{
	}


	pDC->SelectObject( pOldFont );
}
Example #3
0
void CWndInfoNotice::OnInitialUpdate() 
{ 
	CWndNeuz::OnInitialUpdate(); 
	// 여기에 코딩하세요

	CWndButton* pWndCheck = (CWndButton*)GetDlgItem( WIDC_CHECK1 );
	pWndCheck->SetCheck( !g_Option.m_bNotice );
	CWndText* pWndText = (CWndText*)GetDlgItem( WIDC_TEXT1 );

#ifdef __YNOTICE_UNI1026
	CString strnotice;
	strnotice = GetLangFileName( ::GetLanguage(), FILE_NOTICE );
		
	CScript scanner;
	if( scanner.Load( "Client\\"+strnotice ) == FALSE )
		return;
	
	pWndText->m_string.AddParsingString( scanner.m_pProg  );
	pWndText->ResetString();
#else //__YNOTICE_UNI1026
	CFileStatus fileStatus;
	
	CString strnotice;
	strnotice = GetLangFileName( ::GetLanguage(), FILE_NOTICE );
	
	if( CFile::GetStatus( "Client\\"+strnotice, fileStatus ) == TRUE )
	{
		if( g_Option.m_tNoticeTime != fileStatus.m_mtime.GetTime() )
			g_Option.m_tNoticeTime = static_cast< time_t >( fileStatus.m_mtime.GetTime() );

		CFileIO file;

		strnotice = GetLangFileName( ::GetLanguage(), FILE_NOTICE );
	
		if(::GetLanguage() == LANG_VTN)
		{
			if( file.Open( "Client\\"+strnotice, "rb" ) )
			{
				int nLength = file.GetLength();
				TCHAR* pChar = new TCHAR[ nLength + 2 ];
				file.Read( pChar, nLength );
				*(pChar + nLength ) = '\0';
				*(pChar + nLength + 1 ) = '\0';

				char* lpMultiByte = new char[ nLength + 2 ];

				int nResult = WideCharToMultiByteEx( g_codePage, 0, 
					                               (LPWSTR)(pChar+2), -1, 
						                           lpMultiByte, nLength, 
												   NULL, NULL );

				if( nResult > 0 )
				{
					lpMultiByte[nResult-1] = 0;
					pWndText->m_string.AddParsingString( lpMultiByte );
					pWndText->ResetString();
				}
				safe_delete_array(pChar);
				safe_delete_array(lpMultiByte);
			}
		}
		else
		{
			if( file.Open( "Client\\"+strnotice, "rb" ) )
			{
				int nLength = file.GetLength();
				TCHAR* pChar = new TCHAR[ nLength + 1];
				file.Read( pChar, nLength );
				pChar[ nLength ] = 0;
				//pWndText->SetString( pChar );
				pWndText->m_string.AddParsingString( pChar );
				pWndText->ResetString();
				safe_delete( pChar );
			}
		}
	}
#endif //__YNOTICE_UNI1026

	// 윈도를 중앙으로 옮기는 부분.
	CRect rectRoot = m_pWndRoot->GetLayoutRect();
	CRect rectWindow = GetWindowRect();
	CPoint point( rectRoot.right - rectWindow.Width(), 110 );
	Move( point );
	MoveParentCenter();

/////////////////////////////////////////////////////////////////////////////////////////
	int nCount = 0;	
	CScript script;
	if( script.Load(MakePath(DIR_THEME, "TexBannerList.inc" )) )
	{
		int nLang;
		nLang = script.GetNumber();
		do 
		{
			if( nLang == ::GetLanguage() )
			{
				script.GetToken();
				
				nCount = atoi( script.token );
				
				script.GetToken();				
				
				for( int i=0; i<nCount; i++ )
				{
					CString addStr = script.token;
					m_vecStrBanner.push_back( addStr );
					script.GetToken();
				}
				
				if( nCount <= 0 )
				{
					Error( "TexBannerList.inc의 갯수가 0이다" );
					return;
				}
				
				break;
			}
			else
				script.GetLastFull();

			nLang = script.GetNumber();
		} while( script.tok != FINISHED );		
	}
	
	SAFE_DELETE( m_atexPannel );
	if( nCount > 0 )
	{
		m_atexPannel = new IMAGE;
		LoadImage( MakePath( DIR_THEME, m_vecStrBanner[xRandom(nCount)] ), m_atexPannel );
		AdjustWndBase();	
	}
/////////////////////////////////////////////////////////////////////////////////////////	
} 
Example #4
0
void CHistoryCombo::OnMouseMove(UINT nFlags, CPoint point)
{
	CRect rectClient;
	GetClientRect(&rectClient);
	int nComboButtonWidth = ::GetSystemMetrics(SM_CXHTHUMB) + 2;
	rectClient.right = rectClient.right - nComboButtonWidth;

	if (rectClient.PtInRect(point))
	{
		ClientToScreen(&rectClient);

		CString strText = GetString();
		m_ToolInfo.lpszText = (LPTSTR)(LPCTSTR)strText;

		HDC hDC = ::GetDC(m_hWnd);

		CFont *pFont = GetFont();
		HFONT hOldFont = (HFONT) ::SelectObject(hDC, (HFONT) *pFont);

		SIZE size;
		::GetTextExtentPoint32(hDC, strText, strText.GetLength(), &size);
		::SelectObject(hDC, hOldFont);
		::ReleaseDC(m_hWnd, hDC);

		if (size.cx > (rectClient.Width() - 6))
		{
			rectClient.left += 1;
			rectClient.top += 3;

			COLORREF rgbText = ::GetSysColor(COLOR_WINDOWTEXT);
			COLORREF rgbBackground = ::GetSysColor(COLOR_WINDOW);

			CWnd *pWnd = GetFocus();
			if (pWnd)
			{
				if (pWnd->m_hWnd == m_hWnd)
				{
					rgbText = ::GetSysColor(COLOR_HIGHLIGHTTEXT);
					rgbBackground = ::GetSysColor(COLOR_HIGHLIGHT);
				}
			}

			if (!m_ttShown)
			{
				::SendMessage(m_hWndToolTip, TTM_SETTIPBKCOLOR, rgbBackground, 0);
				::SendMessage(m_hWndToolTip, TTM_SETTIPTEXTCOLOR, rgbText, 0);
				::SendMessage(m_hWndToolTip, TTM_UPDATETIPTEXT, 0, (LPARAM) &m_ToolInfo);
				::SendMessage(m_hWndToolTip, TTM_TRACKPOSITION, 0, (LPARAM)MAKELONG(rectClient.left, rectClient.top));
				::SendMessage(m_hWndToolTip, TTM_TRACKACTIVATE, TRUE, (LPARAM)(LPTOOLINFO) &m_ToolInfo);
				SetTimer(1, 80, NULL);
				SetTimer(2, 2000, NULL);
				m_ttShown = TRUE;
			}
		}
		else
		{
			::SendMessage(m_hWndToolTip, TTM_TRACKACTIVATE, FALSE, (LPARAM)(LPTOOLINFO) &m_ToolInfo);
			m_ttShown = FALSE;
		}
	}
	else
	{
		::SendMessage(m_hWndToolTip, TTM_TRACKACTIVATE, FALSE, (LPARAM)(LPTOOLINFO) &m_ToolInfo);
		m_ttShown = FALSE;
	}

	CComboBoxEx::OnMouseMove(nFlags, point);
}
Example #5
0
//重画函数
void CGameScoreWnd::OnPaint()
{
	CPaintDC dc(this);

	//获取位置
	CRect rcClient;
	GetClientRect(&rcClient);

	//创建缓冲
	CDC BufferDC;
	CBitmap ImageBuffer;
	BufferDC.CreateCompatibleDC(&dc);
	ImageBuffer.CreateCompatibleBitmap(&dc,rcClient.Width(),rcClient.Height());
	BufferDC.SelectObject(&ImageBuffer);

	//绘画背景
	CImageHandle BackImageHandle(&m_ImageBack);
	m_ImageBack.BitBlt(BufferDC,0,0);

	//设置 DC
	BufferDC.SetBkMode(TRANSPARENT);
	BufferDC.SetTextColor(RGB(230,230,230));
	BufferDC.SelectObject(CSkinAttribute::m_DefaultFont);

	//绘画麻将
	g_CardResource.m_ImageUserBottom.DrawCardItem(&BufferDC,m_GameScoreInfo.cbChiHuCard,85,23);

	//用户成绩
	CRect rcDraw;
	TCHAR szBuffer[64];
	for (int i=0;i<GAME_PLAYER;i++)
	{
		//用户名字
		rcDraw.left=25;
		rcDraw.right=125;
		rcDraw.top=125+i*25;
		rcDraw.bottom=rcDraw.top+12;
		BufferDC.DrawText(m_GameScoreInfo.szUserName[i],lstrlen(m_GameScoreInfo.szUserName[i]),&rcDraw,DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS);

		//用户积分
		rcDraw.left=130;
		rcDraw.right=170;
		rcDraw.top=125+i*25;
		rcDraw.bottom=rcDraw.top+12;
		_snprintf(szBuffer,sizeof(szBuffer),TEXT("%ld"),m_GameScoreInfo.lScore[i]);
		BufferDC.DrawText(szBuffer,lstrlen(szBuffer),&rcDraw,DT_CENTER|DT_VCENTER|DT_SINGLELINE);

		//用户状态
		if (m_GameScoreInfo.wCardType[i]!=0) BufferDC.TextOut(180,125+i*25,TEXT("胡牌"),4);
		else if (m_GameScoreInfo.wProvideUser==i) BufferDC.TextOut(180,125+i*25,TEXT("放炮"),4);

		//其他信息
		if (m_GameScoreInfo.wBankerUser==i) BufferDC.TextOut(228,125+i*25,TEXT("是"),2);
	}

	//绘画界面
	dc.BitBlt(0,0,rcClient.Width(),rcClient.Height(),&BufferDC,0,0,SRCCOPY);

	//清理资源
	BufferDC.DeleteDC();
	ImageBuffer.DeleteObject();

	return;
}
//**************************************************************************
void CBCGPRibbonComboBox::OnAfterChangeRect (CDC* pDC)
{
	ASSERT_VALID (this);
	ASSERT_VALID (pDC);

	CBCGPRibbonButton::OnAfterChangeRect (pDC);

	if (m_rect.IsRectEmpty ())
	{
		if (m_pWndEdit->GetSafeHwnd () != NULL)
		{
			m_pWndEdit->ShowWindow (SW_HIDE);
		}

		if (m_pBtnClear->GetSafeHwnd () != NULL)
		{
			m_pBtnClear->ShowWindow (SW_HIDE);
		}
		return;
	}

	CRect rectCommandOld = m_rectCommand;

	m_Location = RibbonElementSingleInGroup;

	m_rectMenu = m_rect;
	m_rectMenu.left = m_rectMenu.right - GetDropDownImageWidth () - 2 * m_nMenuArrowMargin;
	
	m_rectCommand = m_rect;
	m_rectCommand.right = m_rectMenu.left;
	m_rectCommand.left += m_nLabelImageWidth;

	int cx = m_bFloatyMode ? m_nWidthFloaty : m_nWidth;
	if (globalData.GetRibbonImageScale () > 1.)
	{
		cx = (int)(.5 + globalData.GetRibbonImageScale () * cx);
	}

	if (m_rectCommand.Width () > cx)
	{
		m_rectCommand.left = m_rectCommand.right - cx;
	}

	m_rectMenu.DeflateRect (1, 1);

	m_bMenuOnBottom = FALSE;

	if (!m_bHasEditBox)
	{
		return;
	}

	if (m_pWndEdit == NULL)
	{
		DWORD dwEditStyle = WS_CHILD | ES_WANTRETURN | 
							ES_AUTOHSCROLL | WS_TABSTOP;

		dwEditStyle |= m_nAlign;

		CWnd* pWndParent = GetParentWnd ();
		ASSERT_VALID (pWndParent);

		if ((m_pWndEdit = CreateEdit (pWndParent, dwEditStyle)) == NULL)
		{
			return;
		}

		m_pWndEdit->SendMessage (EM_SETTEXTMODE, TM_PLAINTEXT);
		m_pWndEdit->SetEventMask (m_pWndEdit->GetEventMask () | ENM_CHANGE);
		m_pWndEdit->SetFont (GetTopLevelRibbonBar ()->GetFont ());
		m_pWndEdit->SetWindowText (m_strEdit);
	}

	if (rectCommandOld != m_rectCommand || !m_pWndEdit->IsWindowVisible ())
	{
		CRect rectEdit = m_rectCommand;
		rectEdit.DeflateRect (m_szMargin.cx, m_szMargin.cy, 0, m_szMargin.cy);
		rectEdit.DeflateRect(0, m_sizePadding.cy / 2);

		if (m_bSearchMode)
		{
			rectEdit.right -= m_rect.Height();
		}

		m_pWndEdit->SetWindowPos (NULL, 
			rectEdit.left, rectEdit.top,
			rectEdit.Width (), rectEdit.Height (),
			SWP_NOZORDER | SWP_NOACTIVATE);

		m_pWndEdit->ShowWindow (SW_SHOWNOACTIVATE);

		if (m_bSearchMode && m_pBtnClear->GetSafeHwnd () != NULL)
		{
			m_pBtnClear->SetWindowPos (NULL, 
				m_rectMenu.left - m_rect.Height() + 2, m_rect.top + 1,
				m_rect.Height () - 2, m_rect.Height () - 2,
				SWP_NOZORDER | SWP_NOACTIVATE);
			m_pBtnClear->ShowWindow (m_strEdit.IsEmpty() ? SW_HIDE : SW_SHOWNOACTIVATE);
		}
	}
}
BOOL CMainFrame::CreateToolbars()
{
	CImageList img;
	CString str;

	if (!m_wndReBar.Create(this))
	{
		TRACE0("Failed to create rebar\n");
		return -1;      // fail to create
	}

	if (!m_wndToolBar.CreateEx(this))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}
	// set up toolbar properties
	m_wndToolBar.GetToolBarCtrl().SetButtonWidth(50, 150);
	m_wndToolBar.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);

	img.Create(IDB_HOTTOOLBAR, 22, 0, RGB(255, 0, 255));
	m_wndToolBar.GetToolBarCtrl().SetHotImageList(&img);
	img.Detach();
	img.Create(IDB_COLDTOOLBAR, 22, 0, RGB(255, 0, 255));
	m_wndToolBar.GetToolBarCtrl().SetImageList(&img);
	img.Detach();
	m_wndToolBar.ModifyStyle(0, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT);
	m_wndToolBar.SetButtons(NULL, 16);

	// set up each toolbar button
	m_wndToolBar.SetButtonInfo(0, ID_GO_BACK, TBSTYLE_BUTTON, 0);
	str.LoadString(IDS_BACK);
	m_wndToolBar.SetButtonText(0, str);
	m_wndToolBar.SetButtonInfo(1, ID_GO_FORWARD, TBSTYLE_BUTTON, 1);
	str.LoadString(IDS_FORWARD);
	m_wndToolBar.SetButtonText(1, str);

	m_wndToolBar.SetButtonInfo(2, ID_VIEW_UP, TBSTYLE_BUTTON, 17);
	str.LoadString(IDS_UP);
	m_wndToolBar.SetButtonText(2, str);


//	  

	m_wndToolBar.SetButtonInfo(3, ID_SEPARATOR1, TBBS_SEPARATOR,0);

	m_wndToolBar.SetButtonInfo(4, ID_GO_SEARCH_THE_WEB, TBSTYLE_BUTTON, 5);
	str.LoadString(IDS_SEARCH);
	m_wndToolBar.SetButtonText(4, str);
	

	m_wndToolBar.SetButtonInfo(5, ID_VIEW_FOLDER, TBSTYLE_BUTTON, 16);
	str.LoadString(IDS_FOLDER);
	m_wndToolBar.SetButtonText(5, str);

	m_wndToolBar.SetButtonInfo(6, ID_SEPARATOR2, TBBS_SEPARATOR, 0);

	m_wndToolBar.SetButtonInfo(7, ID_VIEW_REFRESH, TBSTYLE_BUTTON, 3);
	str.LoadString(IDS_REFRESH);
	m_wndToolBar.SetButtonText(7, str);

	m_wndToolBar.SetButtonInfo(8, ID_VIEW_COPY, TBSTYLE_BUTTON, 18);
	str.LoadString(IDS_VIEW_COPY);
	m_wndToolBar.SetButtonText(8, str);

	m_wndToolBar.SetButtonInfo(9, ID_VIEW_PASTE, TBSTYLE_BUTTON, 19);
	str.LoadString(IDS_VIEW_PASTE);
	m_wndToolBar.SetButtonText(9, str);

	m_wndToolBar.SetButtonInfo(10, ID_SEPARATOR3, TBBS_SEPARATOR, 0);

	m_wndToolBar.SetButtonInfo(11, ID_VIEW_VIEW, TBBS_DROPDOWN, 20);
	str.LoadString(IDS_VIEW_VIEW);
	m_wndToolBar.SetButtonText(11, str);


	m_wndToolBar.SetButtonInfo(12, ID_VIEW_DELETE, TBSTYLE_BUTTON, 15);
	str.LoadString(IDS_VIEW_DELETE);
	m_wndToolBar.SetButtonText(12, str);

	m_wndToolBar.SetButtonInfo(13, ID_SEPARATOR3, TBBS_SEPARATOR, 0);

	m_wndToolBar.SetButtonInfo(14, ID_VIEW_SHORTCUT, TBSTYLE_BUTTON, 23);
	str.LoadString(IDS_VIEW_SHORTCUT);
	m_wndToolBar.SetButtonText(14, str);

	m_wndToolBar.SetButtonInfo(15, ID_VIEW_RUN, TBSTYLE_BUTTON, 22);
	str.LoadString(IDS_VIEW_RUN);
	m_wndToolBar.SetButtonText(15, str);



	CRect rectToolBar;

	// set up toolbar button sizes
	m_wndToolBar.GetItemRect(0, &rectToolBar);
	m_wndToolBar.SetSizes(rectToolBar.Size(), CSize(30,20));

	// create a combo box for the address bar
	if (!m_wndAddress.Create(CBS_DROPDOWN | WS_CHILD, CRect(0, 0, 200, 120), this, AFX_IDW_TOOLBAR + 1))
	{
		TRACE0("Failed to create combobox\n");
		return -1;      // fail to create
	}

	// create the animation control
	//m_wndAnimate.Create(WS_CHILD | WS_VISIBLE, CRect(0, 0, 10, 10), this, AFX_IDW_TOOLBAR + 2);
	//m_wndAnimate.Open(IDR_MFCAVI);

	// add the toolbar, animation, and address bar to the rebar
	m_wndReBar.AddBar(&m_wndToolBar,NULL, NULL, RBBS_GRIPPERALWAYS|RBBS_FIXEDBMP|RBBS_USECHEVRON);
	//m_wndReBar.AddBar(&m_wndAnimate, NULL, NULL, RBBS_FIXEDSIZE | RBBS_FIXEDBMP);
	str.LoadString(IDS_ADDRESS);
	m_wndReBar.AddBar(&m_wndAddress, str, NULL, RBBS_FIXEDBMP | RBBS_BREAK);

	// set up min/max sizes and ideal sizes for pieces of the rebar
	REBARBANDINFO rbbi;

	rbbi.cbSize = sizeof(rbbi);
	rbbi.fMask = RBBIM_CHILDSIZE | RBBIM_IDEALSIZE | RBBIM_SIZE;
	rbbi.cxMinChild = rectToolBar.Width();
	rbbi.cyMinChild = rectToolBar.Height();
	rbbi.cx = rbbi.cxIdeal = rectToolBar.Width() * 9;
	m_wndReBar.GetReBarCtrl().SetBandInfo(0, &rbbi);
	rbbi.cxMinChild = 0;

	CRect rectAddress;

	rbbi.fMask = RBBIM_CHILDSIZE | RBBIM_IDEALSIZE;
	m_wndAddress.GetEditCtrl()->GetWindowRect(&rectAddress);
	rbbi.cyMinChild = rectAddress.Height() + 10;
	rbbi.cxIdeal = 200;
	m_wndReBar.GetReBarCtrl().SetBandInfo(2, &rbbi);

	m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
		CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_FIXED);

	if (!m_wndStatusBar.Create(this) ||
		!m_wndStatusBar.SetIndicators(indicators,
		  sizeof(indicators)/sizeof(UINT)))
	{
		TRACE0("Failed to create status bar\n");
		return -1;      // fail to create
	}

	/*
// set up Favorites menu
	TCHAR           sz[MAX_PATH];
	TCHAR           szPath[MAX_PATH];
	HKEY            hKey;
	DWORD           dwSize;
	CMenu*          pMenu;

	// first get rid of bogus submenu items.
	pMenu = GetMenu()->GetSubMenu(3);
	while(pMenu->DeleteMenu(0, MF_BYPOSITION));

	// find out from the registry where the favorites are located.
	if(RegOpenKey(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders"), &hKey) != ERROR_SUCCESS)
	{
		TRACE0("Favorites folder not found\n");
		return 0;
	}
	dwSize = sizeof(sz);
	RegQueryValueEx(hKey, _T("Favorites"), NULL, NULL, (LPBYTE)sz, &dwSize);
	ExpandEnvironmentStrings(sz, szPath, MAX_PATH);
	RegCloseKey(hKey);

	BuildFavoritesMenu(szPath, 0, pMenu);
*/

		return TRUE;
}
Example #8
0
void CWndVendorCtrl::OnDraw( C2DRender* p2DRender )
{
	if( m_pMover == NULL )
		return;
	
	CRect rect	= GetClientRect();
	int nWidth	= rect.Width() / 32;
	int nHeight		= rect.Height() / 32;

#if __VER >= 8 //__S8_VENDOR_REVISION
	int i; for( i = 0; i < MAX_VENDOR_REVISION; i++ )
#else //__S8_VENDOR_REVISION
	int i; for( i = 0; i < MAX_VENDITEM; i++ )
#endif //__S8_VENDOR_REVISION
	{
		int x	= i % 2;
		int y	= i / 2;
		
		int nX;
		int nY = y * 32 + 8 + y * 4;
		if( x == 0 )
			nX = x * 32 + 15;
		else
			nX = 235;

		CRect rectHittest = CRect( nX, nY, nX + 180, nY + 32 );
		CPoint point	= GetMousePoint();
		if( rectHittest.PtInRect( point ) )
		{
			if( CWndBase::m_GlobalShortcut.m_dwData )
			{
				m_nCurSel = -1;
				{
					CPoint ptx = CPoint(nX, nY);
					m_pTex->Render( p2DRender, ptx );		// 아이템 테두리 그리기
				}
			}
		}			
		CItemBase* pItemBase = GetItem( i );
		if( pItemBase )
		{

			// 툴팁
			float fScal = 1.0f;
			CPoint point	= GetMousePoint();
			if( rectHittest.PtInRect( point ) )
			{
				fScal = 1.15f;
				CPoint point2 = point;
				ClientToScreen( &point2 );
				ClientToScreen( &rectHittest );
				g_WndMng.PutToolTip_Item( pItemBase, point2, &rectHittest, APP_VENDOR );
			}

			// 아이템 아이콘 
			if( ((CItemElem*)pItemBase)->IsFlag( CItemElem::expired ) )
				pItemBase->GetTexture()->Render2( p2DRender, CPoint( nX, nY ), D3DCOLOR_XRGB( 255, 100, 100 ) );					
			else
				pItemBase->GetTexture()->Render2( p2DRender, CPoint( nX, nY ), D3DCOLOR_XRGB( 255, 255, 255 ), fScal, fScal );

			// 아이템 이름, 판매가격
			OnDrawItemInfo( p2DRender, ((CItemElem*)pItemBase), nX, nY );

			if( i == m_nCurSel )
				p2DRender->RenderRect( CRect( nX, nY, nX + 32, nY + 32 ), 0xff00ffff );
			CItemElem* pItemElem	= (CItemElem*)pItemBase;
			if( pItemElem->GetProp()->dwPackMax > 1 )
			{
				short nItemNum	= pItemBase->GetExtra();
				TCHAR szTemp[32];
				_stprintf( szTemp, "%d", nItemNum );
				CSize size	= p2DRender->m_pFont->GetTextExtent( szTemp );
				p2DRender->TextOut( nX - 7 + 32 - size.cx+5, nY - 11 + 32 - size.cy+12, szTemp, 0xff1010ff );
			}
		}
	}
}
Example #9
0
void CWndVendorCtrl::OnDraw( C2DRender* p2DRender )
{
	if( m_pMover == NULL )
		return;

	CRect rect	= GetClientRect();
	int nWidth	= rect.Width() / 32;
	int nHeight		= rect.Height() / 32;

	int i; for( i = 0; i < MAX_VENDITEM; i++ )
	{
		int x	= i % 6;
		int y	= i / 6;
		//p2DRender->RenderRect( CRect( x * 32 + 7, y * 32 + 11, x * 32 + 32 + 5, y * 32 + 32 + 9 ), 0xff00ffff );
		CRect rectHittest	= CRect( x * 32 + 7, y * 32 + 11, x * 32 + 32 + 5, y * 32 + 32 + 9 );

		CPoint point	= GetMousePoint();

		if( rectHittest.PtInRect( point ) )
		{
			if( CWndBase::m_GlobalShortcut.m_dwData )
			{
				m_nCurSel = -1;
				CPoint ptx = CPoint(x * 32 + 7, y * 32 + 11);
				{
					m_pTex->Render( p2DRender, ptx );
				}
			}
		}			
		CItemBase* pItemBase = GetItem( i );
		if( pItemBase )
		{
			if( ((CItemElem*)pItemBase)->IsFlag( CItemElem::expired ) )
			{
				pItemBase->GetTexture()->Render2( p2DRender, CPoint( x * 32 + 6, y * 32 + 10 ), D3DCOLOR_XRGB( 255, 100, 100 ) );
			}
			else
			{
				pItemBase->GetTexture()->Render( p2DRender, CPoint( x * 32 + 6, y * 32 + 10 ) );
			}

			CPoint point	= GetMousePoint();
			if( rectHittest.PtInRect( point ) )
			{
				CPoint point2 = point;
				ClientToScreen( &point2 );
				ClientToScreen( &rectHittest );
				g_WndMng.PutToolTip_Item( pItemBase, point2, &rectHittest, APP_VENDOR );
			}
			if( i == m_nCurSel )
				p2DRender->RenderRect( CRect( x * 32 + 7, y * 32 + 11, x * 32 + 32 + 5, y * 32 + 32 + 9 ), 0xff00ffff );
			CItemElem* pItemElem	= (CItemElem*)pItemBase;
			if( pItemElem->GetProp()->dwPackMax > 1 )
			{
				short nItemNum	= pItemBase->GetExtra();
				TCHAR szTemp[32];
				_stprintf( szTemp, "%d", nItemNum );
				CSize size	= p2DRender->m_pFont->GetTextExtent( szTemp );
				p2DRender->TextOut( x * 32 + 32 - size.cx+5, y * 32 + 32 - size.cy+12, szTemp, 0xff1010ff );
			}
		}
	}
}
void CLabel::OnPaint() 
{
	CPaintDC dc(this); // device context for painting

	DWORD dwFlags = 0;

	CRect rc;
	GetClientRect(rc);
	CString strText( m_sText );

	CBitmap bmp;


	///////////////////////////////////////////////////////
	//
	// Set up for double buffering...
	//
	CDC* pDCMem;
	CBitmap*	pOldBitmap = NULL;

	if (!m_bTransparent)
	{
		pDCMem = new CDC;
		pDCMem->CreateCompatibleDC(&dc);
		bmp.CreateCompatibleBitmap(&dc,rc.Width(),rc.Height());
		pOldBitmap = pDCMem->SelectObject(&bmp);
	}
	else
	{
		pDCMem = &dc;
	}

	UINT nMode = pDCMem->SetBkMode(TRANSPARENT);


	COLORREF crText = pDCMem->SetTextColor(m_crText);
	CFont *pOldFont = pDCMem->SelectObject(&m_font);


	// Fill in backgound if not transparent
	if (!m_bTransparent)
	{
		if (m_fillmode == Normal)
		{
			CBrush br;
			
			if (m_hBackBrush != NULL)
				br.Attach(m_hBackBrush);
			else
				br.Attach(m_hwndBrush);
					
			pDCMem->FillRect(rc,&br);

			br.Detach();
		}
		else // Gradient Fill
		{
			DrawGradientFill(pDCMem, &rc, m_crLoColor, m_crHiColor, 100);
		}

	}
	

	// If the text is flashing turn the text color on
	// then to the color of the window background.

	LOGBRUSH lb;
	ZeroMemory(&lb,sizeof(lb));

	// Stop Checking complaining
	if (m_hBackBrush)
		::GetObject(m_hBackBrush,sizeof(lb),&lb);


	// Something to do with flashing
	if (!m_bState && m_Type == Text)
		pDCMem->SetTextColor(lb.lbColor);

	DWORD style = GetStyle();
	
	switch (style & SS_TYPEMASK)
	{
		case SS_RIGHT: 
			dwFlags = DT_RIGHT | DT_WORDBREAK; 
			break; 
		
		case SS_CENTER: 
			dwFlags = SS_CENTER | DT_WORDBREAK;
			break;

		case SS_LEFTNOWORDWRAP: 
			dwFlags = DT_LEFT; 
			break;

		default: // treat other types as left
			case SS_LEFT: 
				dwFlags = DT_LEFT | DT_WORDBREAK; 
				break;
	}	

		
	// Added to expand tabs...
	if(strText.Find(_T('\t')) != -1)
		dwFlags |= DT_EXPANDTABS;

	// If the text centered make an assumtion that
	// the will want to center verticly as well
	if (style & SS_CENTERIMAGE)
	{
		dwFlags = DT_CENTER;

		// Apply 
		if (strText.Find(_T("\r\n")) == -1)
		{
			dwFlags |= DT_VCENTER;

			// And because DT_VCENTER only works with single lines
			dwFlags |= DT_SINGLELINE; 
		}

	}

	//
	// 3333   DDDDD
	//     3  D    D
	//   33   D     D    E F X 
	//     3  D    D
	// 3333   DDDDD
	//
	//
	if (m_bRotation)
	{
		int nAlign = pDCMem->SetTextAlign (TA_BASELINE);

		CPoint pt;
		GetViewportOrgEx (pDCMem->m_hDC,&pt) ;
		SetViewportOrgEx (pDCMem->m_hDC,rc.Width() / 2, rc.Height() / 2, NULL) ;
		pDCMem->TextOut (0, 0, strText) ;
		SetViewportOrgEx (pDCMem->m_hDC,pt.x / 2, pt.y / 2, NULL) ;
		pDCMem->SetTextAlign (nAlign);
	}
	else
	{
		// convert to UNICODE and use the WIDE version of DrawText()
		// Why?  because DrawText seems to have a bug with Japanese 
		// characters.

		USES_CONVERSION;

		WCHAR* wsz = T2OLE( strText );
		::DrawTextExW( *pDCMem, wsz, (int)(::wcslen( wsz )), rc, dwFlags, NULL ); 
		if (m_bFont3d)
		{
			pDCMem->SetTextColor(m_cr3DHiliteColor);

			if (m_3dType == Raised)
				rc.OffsetRect(-1,-1);
			else
				rc.OffsetRect(1,1);

//			::DrawTextW( *pDCMem, wsz, ::wcslen( wsz ), rc, dwFlags ); 
		}
	}

	// Restore DC's State
	pDCMem->SetBkMode(nMode);
	pDCMem->SelectObject(pOldFont);
	pDCMem->SetTextColor(crText);

	if (!m_bTransparent)
	{
		dc.BitBlt(0,0,rc.Width(),rc.Height(),pDCMem,0,0,SRCCOPY);
		// continue DC restore 
		pDCMem->SelectObject ( pOldBitmap ) ;
		delete pDCMem;
	}
}
void CXTPReportRecordItemPercentNumber::OnDrawCaption(XTP_REPORTRECORDITEM_DRAWARGS* pDrawArgs, XTP_REPORTRECORDITEM_METRICS* pMetrics)
{
	ASSERT(pDrawArgs->pItem == this);

	CString sTxt = pMetrics->strText;

	if (sTxt.Find('%') > -1)
	{
		sTxt.Replace(_T("%"), _T(""));
		int iTxt = _ttoi(sTxt);

		if (m_bPercentCompleteDisplay)
		{
			iTxt = max(0, iTxt);
			iTxt = min(100, iTxt);
			pMetrics->strText.Format(_T("%d"), iTxt);

			CDC* pDC = pDrawArgs->pDC;
			if (pDC)
			{
				CRect rc = pDrawArgs->rcItem;
				rc.DeflateRect(2, 2, 2, 2);
				int W = rc.Width();

				if (pMetrics->nColumnAlignment == xtpColumnTextLeft)
					rc.right = rc.left + W * iTxt / 100;
				else if (pMetrics->nColumnAlignment == xtpColumnTextRight)
					rc.left = rc.right - W * iTxt / 100;
				else if (pMetrics->nColumnAlignment == xtpColumnTextCenter)
				{
					rc.left += W * (100 - iTxt) / 200;
					rc.right -= W * (100 - iTxt) / 200;
				}

				if (pDrawArgs->pControl
					&& pDrawArgs->pControl->GetPaintManager()
					&& pDrawArgs->pControl->GetPaintManager()->m_bShowNonActiveInPlaceButton)
					rc.right -= rc.Height();

				pDC->FillSolidRect(rc, m_clr);

				//CRgn rgnEvent;
				//rgnEvent.CreateRoundRectRgn(rc.left, rc.top, rc.right, rc.bottom, 7, 7);
				//CXTPPaintManagerColorGradient* pGrad = new CXTPPaintManagerColorGradient(m_clr);
				//pDC->SelectClipRgn(&rgnEvent);
				//CRect rcBk = rc;
				//rcBk.DeflateRect(0, 1, 0, 1);
				//XTPDrawHelpers()->GradientFill(pDC, &rcBk, *pGrad, FALSE);
				//pDC->SelectClipRgn(NULL);
				//delete pGrad;
			}
		}
	}
	if (m_pMarkupUIElement)
	{
		CRect rcItem = pDrawArgs->rcItem;
		rcItem.DeflateRect(2, 1, 2, 0);

		XTPMarkupSetDefaultFont(XTPMarkupElementContext(m_pMarkupUIElement), (HFONT)pMetrics->pFont->GetSafeHandle(), pMetrics->clrForeground);

		XTPMarkupMeasureElement(m_pMarkupUIElement, rcItem.Width(), INT_MAX);
		XTPMarkupRenderElement(m_pMarkupUIElement, pDrawArgs->pDC->GetSafeHdc(), &rcItem);
	}
	else
	{
		pDrawArgs->pControl->GetPaintManager()->DrawItemCaption(pDrawArgs, pMetrics);
	}
}
Example #12
0
void CInfoDlg::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	if (nIDEvent == 1)
	{
		InitLanguage();
		CRect rect;
		int i =0;
		int nSample = 0;
		
		CString str1, str2,str3,str4;
		AfxGetMainWnd()->GetWindowRect(&rect);
		int width, high;
		width = rect.Width();
		high = rect.Height();
		if (prv_nWidth >0&&prv_nHieght>0)
		{
		
			m_strInfo[0].Format("%d X %d", width, high);
			m_strInfo[0]=m_strInfo[0]+"  "+m_strRect;
			
			m_strInfo[1].Format("%d X %d", prv_nWidth, prv_nHieght);
			m_strInfo[1]=m_strInfo[1]+"  "+m_strRect;

			m_strInfo[2].Format("%d", g_Lost_frame);
			m_strInfo[3].Format("%d", g_Total_frame);
			m_strInfo[4].Format("%d kbps", g_Bit_rate);
			m_strInfo[5].Format("%d f/s", g_Frame_rate);
			m_strInfo[6].Format("H.264,%d X %d",prv_nWidth,prv_nHieght);
			m_strInfo[7]=g_strUrl;
			nSample = g_Samplerate/1000;
			g_Samplerate = 0;
			m_strInfo[8].Format("AAC,%s,%dKHz",m_strVedio,nSample);
			
			for(i =0;i < 9;i++)
			{
				InvalidateRect(&m_rctext[i]);
			}		
		}
		else
		{
			width = 0;
			high = 0;
			g_Total_frame = 0;
			g_Lost_frame = 0;
			m_strInfo[0].Format("%d X %d", width, high);
			m_strInfo[0]=m_strInfo[0]+"  "+m_strRect;
			
			m_strInfo[1].Format("%d X %d", prv_nWidth, prv_nHieght);
			m_strInfo[1]=m_strInfo[1]+"  "+m_strRect;
			
			m_strInfo[2].Format("%d", g_Lost_frame);
			m_strInfo[3].Format("%d", g_Total_frame);
			m_strInfo[4].Format("%d kbps", g_Bit_rate);
			m_strInfo[5].Format("%d f/s", g_Frame_rate);
			m_strInfo[6].Format("H.264,%d X %d",prv_nWidth,prv_nHieght);
			m_strInfo[7]=g_strUrl;
			nSample = g_Samplerate/1000;
			m_strInfo[8].Format("AAC,%s,%dKHz",m_strVedio,nSample);
			for(i =0;i < 9;i++)
			{
				InvalidateRect(&m_rctext[i]);
			}
		}
		InvalidateRect(&CRect(8,5,150,25));
		for (i=0;i<8;i++)
		{
			InvalidateRect(&m_rcaption[i]);
		}
	}
	CDialog::OnTimer(nIDEvent);
}
Example #13
0
BOOL CInfoDlg::OnEraseBkgnd(CDC* pDC) 
{
	// TODO: Add your message handler code here and/or call default
	CPoint point;
	CRect rect;
	GetWindowRect(&rect);
	GetClientRect(&m_rect);
	CDC memdc;     //定义一个显示设备对象 
	CBitmap bmp;       //定义一个位图对象 
	memdc.CreateCompatibleDC(pDC);     //建立与屏幕显示兼容的内存显示设备 
	bmp.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());//建立一个与屏幕显示兼容的位图
	memdc.SetBkMode(TRANSPARENT);
	//	memdc.FillSolidRect(0,0,rect.Width(),rect.Height(),RGB(93,250,255)); 	//用背景色将位图清除干净
	CBitmap* pOldBmp = memdc.SelectObject(&bmp);            //将位图选入到内存显示设备中		
	
	DWORD style = DT_CENTER|DT_SINGLELINE|DT_VCENTER;
	
	
	m_DlgPic.Load(IDR_JPG_DIALOG1);
	if(m_DlgPic != NULL)
		m_DlgPic.Render(&memdc,m_rect);
	
	if (m_bflag)
	{
		m_DlgPic.Load(IDR_CLOSEX1);
		
	}
	else
	{
		m_DlgPic.Load(IDR_CLOSEX);
	}
	m_DlgPic.Render(&memdc,m_rtclose);
	CFont font;
	if (g_Language)
	{
		font.CreatePointFont(88, "Verdana");
	}
	else
	{
		font.CreatePointFont(100,/*"Verdana"*/"宋体");
	}	

	CFont   *pOldfont = (CFont *)memdc.SelectObject(&font); 
    memdc.SetTextColor(RGB(0, 0, 0)); 
	//memdc.SetBkColor(TRANSPARENT);

	memdc.DrawText(m_strCaption,CRect(8,5,180,25),DT_LEFT| DT_VCENTER | DT_SINGLELINE);
	for (int i=0; i<8 ;i++)
	{
		memdc.DrawText(m_strText[i], m_rcaption[i],DT_RIGHT  | DT_VCENTER | DT_SINGLELINE);
	}

	for (i =0; i < 9; i++)
	{
		memdc.DrawText(m_strInfo[i], m_rctext[i],DT_LEFT | DT_VCENTER | DT_SINGLELINE);
		
	}
	pDC->BitBlt(0,0,m_rect.Width(),m_rect.Height(),&memdc,0,0,SRCCOPY);
	font.DeleteObject();
	bmp.DeleteObject();
	memdc.DeleteDC();
	ReleaseDC(pDC);
	return true;
	
}
Example #14
0
//绘画函数
VOID CUserInfoView::OnPaint()
{
	CPaintDC dc(this);

	//获取位置
	CRect rcClient;
	GetClientRect(&rcClient);

	//建立缓冲
	CDC BufferDC;
	CBitmap ImageBuffer;
	BufferDC.CreateCompatibleDC(&dc);
	ImageBuffer.CreateCompatibleBitmap(&dc,rcClient.Width(),rcClient.Height());

	//设置 DC
	BufferDC.SetBkMode(TRANSPARENT);
	BufferDC.SelectObject(&ImageBuffer);
	BufferDC.SetTextColor(RGB(0,0,0));

	//填充背景
	BufferDC.FillSolidRect(&rcClient,COLOR_VIEW_BACKGROUND);

	//绘画边框
	CRect rcPhotoFram(PHOTO_FRAME_EXCURSION_X, PHOTO_FRAME_EXCURSION_Y, PHOTO_FRAME_EXCURSION_X+PHOTO_FRAME_WIDTH, PHOTO_FRAME_EXCURSION_Y+PHOTO_FRAME_HEIGHT);
	CPen BorderPen(PS_SOLID,2,COLOR_PHOTO_FRAM);
	CPen * pOldPen=BufferDC.SelectObject(&BorderPen);
	BufferDC.RoundRect(&rcPhotoFram,CPoint(0,00));
	BufferDC.SelectObject(pOldPen);

	//创建字体
	CFont Font;
	VERIFY(Font.CreateFont(12,0,0,0,FW_NORMAL,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH | FF_SWISS,TEXT("宋体")));             

	CFont *pOldFont = BufferDC.SelectObject(&Font);

	//绘画用户
	if (m_pCurrentUserData!=NULL)
	{
		//变量定义
		TCHAR szString[256]=TEXT("");
		tagServerAttribute const* pGameAttribute=m_pIClientKernel->GetServerAttribute();

		//绘画标识
		if ( m_pCurrentUserData->dwCustomFaceVer == 0 )
		{
			//设置大小
			rcPhotoFram.DeflateRect(1, 1, 2, 2);

			if ( m_pCurrentUserData->cbGender != 2 )
			{
				CImageHandle ImageHandleMaleFace(&m_ImageMaleFace);
				m_ImageMaleFace.BitBlt(BufferDC.GetSafeHdc(), rcPhotoFram.left, rcPhotoFram.top);
			}
			else
			{
				CImageHandle ImageHandleFemaleFace(&m_ImageFemaleFace);
				m_ImageFemaleFace.BitBlt(BufferDC.GetSafeHdc(), rcPhotoFram.left, rcPhotoFram.top);
			}
		}
		//用户头像
		else
		{
			ASSERT(m_pIUserFaceRes!=NULL);
			m_pIUserFaceRes->DrawCustomBigFace(&BufferDC,rcPhotoFram.left+1, rcPhotoFram.top+1,m_pCurrentUserData->dwUserID,m_pCurrentUserData->dwCustomFaceVer);
		}

		//用户属性
		INT nUserInfoCuont = 6;
		const tagUserData *pMeUserData = m_pIClientKernel->GetMeUserInfo();
		if(pMeUserData!=NULL && m_pCurrentUserData->dwUserID==pMeUserData->dwUserID)
			nUserInfoCuont++;
		for (INT i=0;i<nUserInfoCuont;i++)
		{
			//位置定义
			CRect rcString;
			rcString.SetRect(PHOTO_FRAME_EXCURSION_X+PHOTO_FRAME_WIDTH+10,6+i*20,rcClient.Width()-5,6+i*20+15);

			TCHAR szString[128];

			//绘画信息
			switch (i)
			{
			case 0:		//用户帐号
				{
					//用户帐号
					_sntprintf(szString,CountArray(szString),TEXT("用户名:%s"),m_pCurrentUserData->szName);
					BufferDC.DrawText(szString,lstrlen(szString),&rcString,DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS);

					break;
				}
			case 1:
				{
					//输出信息
					if ( m_pCurrentUserData->cbGender == 0 ) 
						_sntprintf(szString,CountArray(szString),TEXT("性别:保密"));
					else if ( m_pCurrentUserData->cbGender == 1 ) 
						_sntprintf(szString,CountArray(szString),TEXT("性别:男"));
					else _sntprintf(szString,CountArray(szString),TEXT("性别:女"));
					BufferDC.DrawText(szString,lstrlen(szString),&rcString,DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS);

					break;
				}
			case 2:
				{
					BufferDC.SetTextColor(RGB(255,0,0));
					//输出信息
					_sntprintf(szString,CountArray(szString),TEXT("魅力:%ld"),m_pCurrentUserData->lLoveliness);
					BufferDC.DrawText(szString,lstrlen(szString),&rcString,DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS);

					BufferDC.SetTextColor(RGB(0,0,0));

					break;
				}
			case 3:
				{
					//输出信息
					if ( pGameAttribute->wGameGenre == GAME_GENRE_GOLD )
						_sntprintf(szString,CountArray(szString),TEXT("游戏币:%ld"),m_pCurrentUserData->lScore);
					else
						_sntprintf(szString,CountArray(szString),TEXT("积分:%ld"),m_pCurrentUserData->lScore);
					BufferDC.DrawText(szString,lstrlen(szString),&rcString,DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS);

					break;
				}
			case 4:
				{
					CGameFrameControl *pGameFrameControl= (CGameFrameControl *)GetParent();
					CUserListView &UserListView = pGameFrameControl->m_UserListView;

					//输出信息
					_sntprintf(szString,CountArray(szString),TEXT("游戏级别:%s"),
						UserListView.m_GameRankManagerHelper->GetLevelDescribe(m_pCurrentUserData->lScore));
					BufferDC.DrawText(szString,lstrlen(szString),&rcString,DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS);

					break;
				}
			case 5:
				{
					CGameFrameControl *pGameFrameControl= (CGameFrameControl *)GetParent();
					CUserListView &UserListView = pGameFrameControl->m_UserListView;

					//会员信息
					LPCTSTR pszMemberOrder[]={TEXT("非会员"),TEXT("红钻会员"),TEXT("蓝钻会员"),TEXT("黄钻会员"),TEXT("紫钻会员")};
					if (m_pCurrentUserData->cbMemberOrder>=CountArray(pszMemberOrder))break;

					//输出信息
					_sntprintf(szString,CountArray(szString),TEXT("会员级别:%s"),pszMemberOrder[m_pCurrentUserData->cbMemberOrder]);
					BufferDC.DrawText(szString,lstrlen(szString),&rcString,DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS);

					break;
				}
			case 6:
				{
					//输出信息
					_sntprintf(szString,CountArray(szString),TEXT("银行存款:%ld"),m_pCurrentUserData->lInsureScore);
					BufferDC.DrawText(szString,lstrlen(szString),&rcString,DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS);

					break;
				}
			}
		}

		//魅力数目
		BufferDC.SetTextColor(RGB(255,0,0));
		CRect rcExchange;
		m_btExchange.GetWindowRect(rcExchange);
		ScreenToClient(rcExchange);
		CString strFlowerCount;
		strFlowerCount.Format(TEXT("%ld"), m_pCurrentUserData->lLoveliness);
		BufferDC.TextOut(rcExchange.right+4, rcExchange.top+4, strFlowerCount);
	}

	//绘画界面
	dc.BitBlt(0,0,rcClient.Width(),rcClient.Height(),&BufferDC,0,0,SRCCOPY);

	//清理资源	
	BufferDC.SelectObject(pOldFont);
	BufferDC.DeleteDC();
	ImageBuffer.DeleteObject();	
	Font.DeleteObject();

	return;
}
Example #15
0
void Twindow::setSizeD(HWND hwnd, int dx, int dy)
{
    CRect r;
    GetWindowRect(hwnd, &r);
    SetWindowPos(hwnd, NULL, 0, 0, r.Width() + dx, r.Height() + dy, SWP_NOMOVE | SWP_NOZORDER);
}
void CBCGPRibbonCommandsListBox::DrawItem(LPDRAWITEMSTRUCT lpDIS) 
{
	CDC* pDC = CDC::FromHandle(lpDIS->hDC);
	ASSERT_VALID (pDC);

	CRect rect = lpDIS->rcItem;

	if (lpDIS->itemID == (UINT)-1)
	{
		return;
	}

	int cxExtent = GetHorizontalExtent();
	if (cxExtent > rect.Width())
	{
		rect.right = rect.left + cxExtent;
	}
	
	int cxScroll = GetScrollPos(SB_HORZ);
	rect.OffsetRect(-cxScroll, 0);
	
	BOOL bIsRibbonImageScale = globalData.IsRibbonImageScaleEnabled ();
	globalData.EnableRibbonImageScale (FALSE);

	pDC->SetBkMode (TRANSPARENT);

	BOOL bIsHighlighted = 
		(lpDIS->itemState & ODS_SELECTED) && (lpDIS->itemState & ODS_FOCUS);
	BOOL bIsSelected = (lpDIS->itemState & ODS_SELECTED);

	CBCGPBaseRibbonElement* pCommand = (CBCGPBaseRibbonElement*) GetItemData (lpDIS->itemID);
	ASSERT_VALID (pCommand);

	CString strText;
	GetText (lpDIS->itemID, strText);

	if (bIsHighlighted)
	{
		::FillRect (pDC->GetSafeHdc (), rect, GetSysColorBrush (COLOR_HIGHLIGHT));
		pDC->SetTextColor (GetSysColor (COLOR_HIGHLIGHTTEXT));
	}
	else if (bIsSelected)
	{
		pDC->FillRect (rect, &globalData.brBtnFace);
		pDC->SetTextColor (globalData.clrBtnText);
	}
	else
	{
		pDC->FillRect (rect, &globalData.brWindow);
		pDC->SetTextColor (globalData.clrWindowText);
	}

	BOOL bDrawDefaultIconSaved = pCommand->m_bDrawDefaultIcon;
	pCommand->m_bDrawDefaultIcon = m_bDrawDefaultIcon;

	pCommand->OnDrawOnList (pDC, strText, m_nTextOffset, rect, bIsSelected, bIsHighlighted);

	pCommand->m_bDrawDefaultIcon = bDrawDefaultIconSaved;

	globalData.EnableRibbonImageScale (bIsRibbonImageScale);
}
Example #17
0
// OpenGL display initilization
bool COpenGlDisplay::myInit(CWnd *wnd)
{
	// 初始化转换值
	shiftKeyStatus = FALSE;

	robotScale  = 0.5;
	robotHeight = 0.2;

	xRot = -90.f;
	yRot = 10.f;
	zRot = yRot;

	xTrans = 0.f;
	yTrans = -2.f;
	zTrans = -8.f;

	vs.eyex = 1.0;
	vs.eyey = 3.5;
	vs.eyez = -6;
	vs.centerx = xTrans;
	vs.centery = yTrans;
	vs.centerz = zTrans;
	vs.upx = 0;
	vs.upy = 1;
	vs.upz = 0;
	// ============需要按实际情况设定======= //

	CRect mRect;

	hrenderDC=::GetDC(wnd->m_hWnd); 
	if(setWindowPixelFormat(hrenderDC)==FALSE)  //设置像素格式
		return 0; 

	if(createViewGLContext(hrenderDC)==FALSE)   // 取得着色描述表
		return 0; 

	wnd->GetClientRect(&mRect);
	glViewport(0,0,mRect.Width(),mRect.Height()); 
	glMatrixMode(GL_PROJECTION);				// 选择投影矩阵
	glLoadIdentity();							// 重置投影矩阵
	gluPerspective(90,1.0,0.01,100.0); 	        // 设置视口的大小
	glMatrixMode(GL_MODELVIEW);				    // 选择模型观察矩阵
	glLoadIdentity();							// 重置模型观察矩阵
	// ============需要按实际情况设定======= //
	gluLookAt(vs.eyex, vs.eyey, vs.eyez,
			  vs.centerx, vs.centery, vs.centerz,
			  vs.upx, vs.upy, vs.upz);          // 调整观察,
	// ============需要按实际情况设定======= //
	glShadeModel(GL_SMOOTH);					// Enable Smooth Shading 
	glClearColor(200.0/255.0, 200.0/255.0, 200.0/255.0, 0);	// Black Background 
	glClearDepth(1.0f);							// Depth Buffer Setup 
	glEnable(GL_DEPTH_TEST);					// Enables Depth Testing 
	glDepthFunc(GL_LEQUAL);						// The Type Of Depth Testing To Do 
	glEnableClientState(GL_VERTEX_ARRAY); 
	glEnableClientState(GL_TEXTURE_COORD_ARRAY); 
	createFont();

	GLfloat lightPos[] ={0, 0, 0};
	GLfloat ambientLight[] = {0.3f, 0.3f, 0.3f, 1.0f};
	GLfloat diffuseLight[] = {0.5f, 0.5f, 0.5f, 1.0f};

	//glEnable(GL_LIGHTING);
	glLightfv(GL_LIGHT0, GL_AMBIENT, ambientLight);
	glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuseLight);    //设置并启动光照
	glLightfv(GL_LIGHT0, GL_POSITION, lightPos);
	glEnable(GL_LIGHTING);
	glEnable(GL_LIGHT0);
	glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE); //设置材料属性,与glColor值对应
	glEnable(GL_COLOR_MATERIAL);                       //启动颜色跟踪

	this->buildRobotList();     // construct the show list
	this->buildWorldFrameList();
	this->buildGroundList();

	return true;
}
void CIrcChannelTabCtrl::OnTcnSelchangeTab2(NMHDR*, LRESULT* pResult)
{
    TCITEM item;
    item.mask = TCIF_PARAM;
    //What channel did we select?
    int iCurSell = GetCurSel();
    if (iCurSell == -1)
    {
        //No channel, abort..
        return;
    }
    if (!GetItem(iCurSell, &item))
    {
        //We had no valid item here.. Something isn't right..
        //TODO: this should never happen, so maybe we should remove this tab?
        return;
    }
    Channel* pUpdate = (Channel*)item.lParam;
    Channel* pCh2 = NULL;

    //Set our current channel to the new one for quick reference..
    m_pCurrentChannel = pUpdate;

    if (m_pCurrentChannel->m_uType == 1)
        m_pParent->m_editTitleWindow.SetWindowText(GetResString(IDS_STATUS));
    if (m_pCurrentChannel->m_uType == 2)
    {
        //Since some channels can have a LOT of nicks, hide the window then remove them to speed it up..
        m_pParent->m_listctrlNickList.ShowWindow(SW_HIDE);
        m_pParent->m_listctrlNickList.DeleteAllItems();
        m_pParent->m_listctrlNickList.UpdateNickCount();
        m_pParent->m_listctrlNickList.ShowWindow(SW_SHOW);
        //Set title to ChanList
        m_pParent->m_editTitleWindow.SetWindowText(GetResString(IDS_IRC_CHANNELLIST));
        //Show our ChanList..
        m_pParent->m_listctrlServerChannelList.ShowWindow(SW_SHOW);
        TCITEM tci;
        tci.mask = TCIF_PARAM;
        //Go through the channel tabs and hide the channels..
        //Maybe overkill? Maybe just remember our previous channel and hide it?
        int iIndex = 0;
        while (GetItem(iIndex++, &tci))
        {
            pCh2 = (Channel*)tci.lParam;
            if (pCh2 != m_pCurrentChannel && pCh2->m_editctrlLog.m_hWnd != NULL)
                pCh2->m_editctrlLog.ShowWindow(SW_HIDE);
        }
        return;
    }
    //We entered the channel, set activity flag off.
    SetActivity( m_pCurrentChannel->m_sName, false );
    CRect rcChannel;
    m_pParent->m_listctrlServerChannelList.GetWindowRect(&rcChannel);
    m_pParent->ScreenToClient(&rcChannel);
    //Show new current channel..
    m_pCurrentChannel->m_editctrlLog.SetWindowPos(NULL, rcChannel.left, rcChannel.top, rcChannel.Width(), rcChannel.Height(), SWP_NOZORDER);
    m_pCurrentChannel->m_editctrlLog.ShowWindow(SW_SHOW);
    TCITEM tci;
    tci.mask = TCIF_PARAM;
    //Hide all channels not in focus..
    //Maybe overkill? Maybe remember previous channel and hide?
    int iIndex = 0;
    while (GetItem(iIndex++, &tci))
    {
        pCh2 = (Channel*)tci.lParam;
        if (pCh2 != m_pCurrentChannel && pCh2->m_editctrlLog.m_hWnd != NULL)
            pCh2->m_editctrlLog.ShowWindow(SW_HIDE);
    }
    //Make sure channelList is hidden.
    m_pParent->m_listctrlServerChannelList.ShowWindow(SW_HIDE);
    //Update nicklist to the new channel..
    m_pParent->m_listctrlNickList.RefreshNickList( pUpdate->m_sName );
    //Set title to the new channel..
    m_pParent->SetTitle( pUpdate->m_sName, pUpdate->m_sTitle );
    //Push focus back to the input box..
    m_pParent->GetDlgItem(IDC_INPUTWINDOW)->SetFocus();
    if( pResult )
        *pResult = 0;
}
Example #19
0
BOOL CFilePatchesDlg::Init(GitPatch * pPatch, CPatchFilesDlgCallBack * pCallBack, CString sPath, CWnd * pParent)
{
	if (!pCallBack || !pPatch)
	{
		m_cFileList.DeleteAllItems();
		return FALSE;
	}
	m_arFileStates.RemoveAll();
	m_pPatch = pPatch;
	m_pCallBack = pCallBack;
	m_sPath = sPath;
	if (m_sPath.IsEmpty())
	{
		CString title(MAKEINTRESOURCE(IDS_DIFF_TITLE));
		SetWindowText(title);
	}
	else
	{
		CRect rect;
		GetClientRect(&rect);
		SetTitleWithPath(rect.Width());
		m_sPath.TrimRight(L'\\');
		m_sPath += L'\\';
	}

	SetWindowTheme(m_cFileList.GetSafeHwnd(), L"Explorer", nullptr);
	m_cFileList.SetExtendedStyle(LVS_EX_INFOTIP | LVS_EX_FULLROWSELECT | LVS_EX_DOUBLEBUFFER);
	m_cFileList.DeleteAllItems();
	int c = ((CHeaderCtrl*)(m_cFileList.GetDlgItem(0)))->GetItemCount()-1;
	while (c>=0)
		m_cFileList.DeleteColumn(c--);
	m_cFileList.InsertColumn(0, CString(MAKEINTRESOURCE(IDS_PATH)));
	m_cFileList.InsertColumn(1, CString(MAKEINTRESOURCE(IDS_STATE)));

	m_cFileList.SetRedraw(false);

	for(int i=0; i<m_pPatch->GetNumberOfFiles(); i++)
	{
		CString sFile = CPathUtils::GetFileNameFromPath(m_pPatch->GetStrippedPath(i));

		int state;
		if (m_sPath.IsEmpty())
			state = 0;
		else
		{
			state = m_pPatch->GetFailedHunks(i);
		}
		if (m_pPatch->GetHasConflict(i))
			state = FPDLG_FILESTATE_CONFLICT;
		if (state > 0)
			state = FPDLG_FILESTATE_ERROR;
		m_arFileStates.Add(state);
		CString sFileName = GetFullPath(i);
		sFileName = CPathUtils::GetFileNameFromPath(sFileName);
		m_cFileList.InsertItem(i, sFile, SYS_IMAGE_LIST().GetFileIconIndex(sFileName));
		SetStateText(i, state);
	}
	int mincol = 0;
	int maxcol = ((CHeaderCtrl*)(m_cFileList.GetDlgItem(0)))->GetItemCount()-1;
	int col;
	for (col = mincol; col <= maxcol; col++)
	{
		m_cFileList.SetColumnWidth(col,LVSCW_AUTOSIZE_USEHEADER);
	}

	m_cFileList.SetImageList(&SYS_IMAGE_LIST(), LVSIL_SMALL);
	m_cFileList.SetRedraw(true);

	RECT parentrect;
	pParent->GetWindowRect(&parentrect);
	RECT windowrect;
	GetWindowRect(&windowrect);

	int width = windowrect.right - windowrect.left;
	int height = windowrect.bottom - windowrect.top;
	windowrect.right = parentrect.left;
	windowrect.left = windowrect.right - width;
	windowrect.top = parentrect.top;
	windowrect.bottom = windowrect.top + height;
	auto hMonitor = MonitorFromRect(&windowrect, MONITOR_DEFAULTTONULL);
	if (hMonitor)
		SetWindowPos(nullptr, windowrect.left, windowrect.top, width, height, SWP_NOACTIVATE | SWP_NOZORDER);

	m_nWindowHeight = windowrect.bottom - windowrect.top;
	m_pMainFrame = pParent;
	return TRUE;
}
Example #20
0
void CUISliderCtrl::OnPaint()
{
//	return CSliderCtrl::OnPaint();

	if ( m_bNeedFechBkImage )
	{
		this->ShowWindow( SW_HIDE );
		m_bNeedFechBkImage = FALSE;
		m_uTimerShowWindow = this->SetTimer( 1, 1, NULL );
		return;
	}
	else
	{
		// 取背景。
		if ( m_bkDC.m_hDC == NULL )
		{
			CWnd *pParent = this->GetParent();
			CClientDC cParentDc( pParent );

			CRect rcWnd;
			this->GetWindowRect( rcWnd );
			pParent->ScreenToClient( rcWnd );


			m_bkDC.CreateCompatibleDC( &cParentDc );
			m_bkBmp.CreateCompatibleBitmap( &cParentDc, rcWnd.Width(), rcWnd.Height() );

			m_bkDC.SelectObject( &m_bkBmp );

			m_bkDC.BitBlt( 0, 0, rcWnd.Width(), rcWnd.Height(), &cParentDc, rcWnd.left, rcWnd.top, SRCCOPY );
		}

		CRect rcClient;
		this->GetClientRect( rcClient );

		CPaintDC dc(this); // device context for painting

		// 画背景。
		if ( m_bkDC.GetSafeHdc() )
		{
			CRect rcClient;
			this->GetClientRect( rcClient );
			::BitBlt( dc, 0, 0, rcClient.Width(), rcClient.Height(), m_bkDC, 0, 0, SRCCOPY );
		}
		else
		{
			Log() << _T( "背景DC没有初始化!!!" ) << endl;
		}

		{
			CRect rcChannel;
			this->GetChannelRect( rcChannel );

			CBrush brushCh( RGB( 231,164,33 ) );
			::FillRect( dc, &rcChannel, brushCh );	

			CRect rcThumb;
			this->GetThumbRect( rcThumb );

			CBrush brushThumb( RGB( 191,219,253 ) );
			::FillRect( dc, &rcThumb, brushThumb );				
		}

		return;

	}



}
Example #21
0
//调整控件
void CGameClientView::RectifyGameView(int nWidth, int nHeight)
{
	//设置坐标
	if (m_bDeasilOrder==true)
	{
		//右家
		m_ptFace[0].x=nWidth-m_nXBorder-m_nXFace-5;
		m_ptFace[0].y=nHeight/2-m_nYFace;
		m_ptName[0].x=nWidth-m_nXBorder-m_nXFace-10;
		m_ptName[0].y=nHeight/2-m_nYFace+3;
		m_ptTimer[0].x=nWidth-m_nXBorder-m_nXFace-5;
		m_ptTimer[0].y=nHeight/2-m_nYFace-m_nYTimer-5;
		m_ptReady[0].x=nWidth-m_nXBorder-m_nXTimer-5;
		m_ptReady[0].y=nHeight/2-m_nYFace-m_nYTimer/2-5;
		m_ptScore[0].x=nWidth-m_nXBorder-m_nXFace-150;
		m_ptScore[0].y=nHeight/2-m_nYFace+5;
		m_ptLand[0].x=nWidth-m_nXBorder-m_LandSize.cx-3;
		m_ptLand[0].y=nHeight/2+5;
		
		//左家
		m_ptFace[2].x=m_nXBorder+30;
		m_ptFace[2].y=nHeight/2-m_nYFace;
		m_ptName[2].x=m_nXBorder+m_nXFace+40;
		m_ptName[2].y=nHeight/2-m_nYFace+3;
		m_ptTimer[2].x=m_nXBorder+30;
		m_ptTimer[2].y=nHeight/2-m_nYFace-5-m_nYTimer;
		m_ptReady[2].x=m_nXBorder+30+m_nXTimer;
		m_ptReady[2].y=nHeight/2-m_nYFace-m_nYTimer/2-5;
		m_ptScore[2].x=m_nXBorder+m_nXFace+107;
		m_ptScore[2].y=nHeight/2-m_nYFace+5;
		m_ptLand[2].x=m_nXBorder+3;
		m_ptLand[2].y=nHeight/2+5;
	}
	else
	{
		m_ptFace[2].x=nWidth-m_nXBorder-m_nXFace-5;
		m_ptFace[2].y=nHeight/2-m_nYFace;
		m_ptName[2].x=nWidth-m_nXBorder-m_nXFace-10;
		m_ptName[2].y=nHeight/2-m_nYFace+3;
		m_ptTimer[2].x=nWidth-m_nXBorder-m_nXFace-5;
		m_ptTimer[2].y=nHeight/2-m_nYFace-m_nYTimer-5;
		m_ptReady[2].x=nWidth-m_nXBorder-m_nXTimer-5;
		m_ptReady[2].y=nHeight/2-m_nYFace-m_nYTimer/2-5;
		m_ptScore[2].x=nWidth-m_nXBorder-m_nXFace-150;
		m_ptScore[2].y=nHeight/2-m_nYFace+5;
		m_ptLand[2].x=nWidth-m_nXBorder-m_LandSize.cx-3;
		m_ptLand[2].y=nHeight/2+5;

		m_ptFace[0].x=m_nXBorder+30;
		m_ptFace[0].y=nHeight/2-m_nYFace;
		m_ptName[0].x=m_nXBorder+m_nXFace+40;
		m_ptName[0].y=nHeight/2-m_nYFace+3;
		m_ptTimer[0].x=m_nXBorder+30;
		m_ptTimer[0].y=nHeight/2-m_nYFace-5-m_nYTimer;
		m_ptReady[0].x=m_nXBorder+30+m_nXTimer;
		m_ptReady[0].y=nHeight/2-m_nYFace-m_nYTimer/2-5;
		m_ptScore[0].x=m_nXBorder+m_nXFace+107;
		m_ptScore[0].y=nHeight/2-m_nYFace+5;
		m_ptLand[0].x=m_nXBorder+3;
		m_ptLand[0].y=nHeight/2+5;
	}
	//自家
	m_ptFace[1].x=nWidth/2-m_nXFace/2;
	m_ptFace[1].y=nHeight-90;
	m_ptName[1].x=nWidth/2+5+m_nXFace/2;
	m_ptName[1].y=nHeight-80;
	m_ptTimer[1].x=nWidth/2-m_nXFace/2-m_nXTimer*2-5;
	m_ptTimer[1].y=nHeight-80;
	m_ptReady[1].x=nWidth/2-m_nXTimer-m_nXFace/2-5;
	m_ptReady[1].y=nHeight-80;
	m_ptScore[1].x=nWidth/2-21;
	m_ptScore[1].y=nHeight-m_nYBorder-m_nYFace-210;
	m_ptLand[1].x=nWidth/2-m_nXFace/2-m_LandSize.cx-m_nXTimer*2-10;
	m_ptLand[1].y=nHeight-m_nXBorder-m_LandSize.cy-15;

	//移动按钮
	CRect rcButton;
	HDWP hDwp=BeginDeferWindowPos(6);
	m_btStart.GetWindowRect(&rcButton);
	const UINT uFlags=SWP_NOACTIVATE|SWP_NOZORDER|SWP_NOCOPYBITS|SWP_NOSIZE;
	DeferWindowPos(hDwp,m_btStart,NULL,(nWidth-rcButton.Width())/2,nHeight-220-m_nYBorder,0,0,uFlags);
	DeferWindowPos(hDwp,m_btOutCard,NULL,nWidth/2-rcButton.Width()*3/2-10,nHeight-240-m_nYBorder,0,0,uFlags);
	DeferWindowPos(hDwp,m_btAutoOutCard,NULL,nWidth/2-rcButton.Width()/2,nHeight-240-m_nYBorder,0,0,uFlags);
	DeferWindowPos(hDwp,m_btPassCard,NULL,nWidth/2+rcButton.Width()/2+10,nHeight-240-m_nYBorder,0,0,uFlags);

	DeferWindowPos(hDwp,m_btOneScore,NULL,nWidth/2-135-rcButton.Width()/2,nHeight-195-m_nYBorder,0,0,uFlags);
	DeferWindowPos(hDwp,m_btTwoScore,NULL,nWidth/2-45-rcButton.Width()/2,nHeight-195-m_nYBorder,0,0,uFlags);
	DeferWindowPos(hDwp,m_btThreeScore,NULL,nWidth/2+45-rcButton.Width()/2,nHeight-195-m_nYBorder,0,0,uFlags);
	DeferWindowPos(hDwp,m_btGiveUpScore,NULL,nWidth/2+135-rcButton.Width()/2,nHeight-195-m_nYBorder,0,0,uFlags);

	EndDeferWindowPos(hDwp);

	//移动扑克
	m_BackCardControl.SetBenchmarkPos(nWidth/2,m_nYBorder+10,enXCenter,enYTop);
	m_HandCardControl.SetBenchmarkPos(nWidth/2,nHeight-100,enXCenter,enYBottom);
	m_UserCardControl[1].SetBenchmarkPos(nWidth/2,nHeight-230-m_nYBorder,enXCenter,enYBottom);

	//用户扑克
	if (m_bDeasilOrder==true)
	{
		m_UserCardControl[0].SetBenchmarkPos(nWidth-m_nXFace-m_nXBorder-90,nHeight/2-30,enXRight,enYCenter);
		m_UserCardControl[2].SetBenchmarkPos(m_nXBorder+m_nXFace+90,nHeight/2-30,enXLeft,enYCenter);
		m_LeaveCardControl[0].SetBenchmarkPos(nWidth-m_nXBorder-m_nXFace-50,nHeight/2-50,enXRight,enYCenter);
		m_LeaveCardControl[1].SetBenchmarkPos(m_nXBorder+m_nXFace+50,nHeight/2-55,enXLeft,enYCenter);
	}
	else 
	{
		m_UserCardControl[2].SetBenchmarkPos(nWidth-m_nXFace-m_nXBorder-90,nHeight/2-30,enXRight,enYCenter);
		m_UserCardControl[0].SetBenchmarkPos(m_nXBorder+m_nXFace+90,nHeight/2-30,enXLeft,enYCenter);
		m_LeaveCardControl[1].SetBenchmarkPos(nWidth-m_nXBorder-m_nXFace-50,nHeight/2-50,enXRight,enYCenter);
		m_LeaveCardControl[0].SetBenchmarkPos(m_nXBorder+m_nXFace+50,nHeight/2-55,enXLeft,enYCenter);
	}

	//积分视图
	CRect rcControl;
	m_ScoreView.GetWindowRect(&rcControl);
	m_ScoreView.SetWindowPos(NULL,(nWidth-rcControl.Width())/2,(nHeight-rcControl.Height()-100)/2,0,0,SWP_NOZORDER|SWP_NOSIZE);

	return;
}
Example #22
0
STDMETHODIMP CBmpCtxMenuExt::OnDrawItem ( DRAWITEMSTRUCT* pdis, LRESULT* pResult )
{
CDC   dcBmpSrc;
CDC*  pdcMenu = CDC::FromHandle ( pdis->hDC );
CRect rcItem ( pdis->rcItem );  // RECT of our menu item
CRect rcDraw;                   // RECT in which we'll be drawing

    // Check that we're getting called for our own menu item.

    if ( m_uOurItemID != pdis->itemID )
        return S_OK;
            
    // rcDraw will first be set to the RECT that we set in WM_MEASUREITEM.
    // It will get deflated as we go along.

    rcDraw.left = (rcItem.right + rcItem.left - m_lItemWidth) / 2;
    rcDraw.top = (rcItem.top + rcItem.bottom - m_lItemHeight) / 2;
    rcDraw.right = rcDraw.left + m_lItemWidth;
    rcDraw.bottom = rcDraw.top + m_lItemHeight;

    // Shrink rcDraw to account for the padding space around
    // the thumbnail.

    rcDraw.DeflateRect ( m_lMenuItemSpacing, m_lMenuItemSpacing );

    // Fill in the background of the menu item.

    if ( pdis->itemState & ODS_SELECTED )
        {
        pdcMenu->FillSolidRect ( rcItem, GetSysColor ( COLOR_HIGHLIGHT ));
        }
    else
        {
        pdcMenu->FillSolidRect ( rcItem, GetSysColor ( COLOR_3DFACE ));
        }

    // Draw the sunken 3D border.

    for ( int i = 1; i <= m_l3DBorderWidth; i++ )
        {
        pdcMenu->Draw3dRect ( rcDraw, GetSysColor ( COLOR_3DDKSHADOW ),
                              GetSysColor ( COLOR_3DHILIGHT ));

        rcDraw.DeflateRect ( 1, 1 );
        }

    // Create a new DC and select the original bitmap into it.

    dcBmpSrc.CreateCompatibleDC ( pdcMenu );
    dcBmpSrc.SelectObject ( &m_bmp );

    // Blit the bitmap to the menu DC.  This is the quick 'n' dirty
    // way of doing it.  Making it look nice is left as an exercise. :)

    pdcMenu->StretchBlt ( rcDraw.left, rcDraw.top, rcDraw.Width(), rcDraw.Height(),
                          &dcBmpSrc, 0, 0, m_lBmpWidth, m_lBmpHeight, SRCCOPY );

    *pResult = TRUE;            // we handled the message

    return S_OK;
}
BOOL CAttributeLinkTableDialog::OnInitDialog() 
{
	CDialog::OnInitDialog();

	if (! m_bShowTarget) m_TargetCombo.EnableWindow(FALSE);
	
	InitBaseDialog(m_AttributesList, m_TargetCombo);


	//dedek: inicializuj CaptionsList
	CRect r;
	m_CaptionsList.GetWindowRect(& r);
	m_CaptionsList.InsertColumn(CAPTLIST_CL_CAPTION, "caption", LVCFMT_LEFT, r.Width()/3 -3);
	m_CaptionsList.InsertColumn(CAPTLIST_CL_VALUE, "value", LVCFMT_LEFT, r.Width()/3 -3);
	m_CaptionsList.InsertColumn(CAPTLIST_CL_NAME, "name", LVCFMT_LEFT, r.Width()/3 -3);


	//napln CaptionsList hodnotami
	m_CaptionsList.SetExtendedStyle(LVS_EX_FULLROWSELECT);

	MSXML2::IXMLDOMNodeListPtr links = m_SelXMLElm->selectNodes("link");

	CString target_id;
	m_TargetCombo.GetWindowText(target_id);

	int a;
	for (a=0; a < links->length; a++)
	{
		MSXML2::IXMLDOMElementPtr link = links->item[a];

		//caption
		int item = m_CaptionsList.InsertItem(a, (_bstr_t) link->getAttribute("caption"));
		
		//attr_name
		CString attr_name = (LPCTSTR) (_bstr_t) link->getAttribute("attr_name");
		m_CaptionsList.SetItemText(item, CAPTLIST_CL_NAME, attr_name);

		//value
		CString query_str;
		query_str.Format("id(\"%s\")/attributes/element_attributes/attribute[@name=\"%s\"]/@value", target_id, attr_name);

		MSXML2::IXMLDOMNodePtr value_attr = m_SelXMLElm->ownerDocument->selectSingleNode((LPCTSTR) query_str);

		if (value_attr != NULL)
		{
			m_CaptionsList.SetItemText(item, CAPTLIST_CL_VALUE, value_attr->text);
			value_attr.Release();
		}

		
		link.Release();
	}


	//napln style combo

	CElementManager & m = ((CReportAsistentApp *) AfxGetApp())->m_pGeneralManager->ElementManager;
	int item = CB_ERR;
	for (a=0; a < m.getAttrLinkTableStylesCount(); a++)
	{
		item = m_StyleCombo.AddString(m.getAttrLinkTableStyleName(a));
	}

	//vyber style
	int sel = m_StyleCombo.SelectString(-1, (_bstr_t) m_SelXMLElm->getAttribute("style"));
	//vyber se nezdaril => kdyz exituje nejaky styl vyber prvni
	if ((sel == CB_ERR) && (item != CB_ERR))
	{
		m_StyleCombo.SelectString(-1, m.getAttrLinkTableStyleName(0));
	}

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
Example #24
0
// I learned this squarification style from the KDirStat executable.
// It's the most complex one here but also the clearest, imho.
//
void CTreemap::KDirStat_DrawChildren(CDC *pdc, Item *parent, const double *surface, double h, DWORD /*flags*/)
{
	ASSERT(parent->TmiGetChildrenCount() > 0);

	const CRect& rc= parent->TmiGetRectangle();

	CArray<double, double> rows;	// Our rectangle is divided into rows, each of which gets this height (fraction of total height).
	CArray<int, int> childrenPerRow;// childrenPerRow[i] = # of children in rows[i]

	CArray<double, double> childWidth; // Widths of the children (fraction of row width).
	childWidth.SetSize(parent->TmiGetChildrenCount());

	bool horizontalRows= KDirStat_ArrangeChildren(parent, childWidth, rows, childrenPerRow);

	const int width= horizontalRows ? rc.Width() : rc.Height();
	const int height= horizontalRows ? rc.Height() : rc.Width();
	ASSERT(width >= 0);
	ASSERT(height >= 0);

	int c = 0;
	double top= horizontalRows ? rc.top : rc.left;
	for (int row=0; row < rows.GetSize(); row++)
	{
		double fBottom= top + rows[row] * height;
		int bottom= (int)fBottom;
		if (row == rows.GetSize() - 1)
			bottom= horizontalRows ? rc.bottom : rc.right;
		double left= horizontalRows ? rc.left : rc.top;
		for (int i=0; i < childrenPerRow[row]; i++, c++)
		{
			Item *child= parent->TmiGetChild(c);
			ASSERT(childWidth[c] >= 0);
			double fRight= left + childWidth[c] * width;
			int right= (int)fRight;

			bool lastChild = (i == childrenPerRow[row] - 1 || childWidth[c + 1] == 0);

			if (lastChild)
				right= horizontalRows ? rc.right : rc.bottom;

			CRect rcChild;
			if (horizontalRows)
			{
				rcChild.left= (int)left;
				rcChild.right= right;
				rcChild.top= (int)top;
				rcChild.bottom= bottom;
			}
			else
			{
				rcChild.left= (int)top;
				rcChild.right= bottom;
				rcChild.top= (int)left;
				rcChild.bottom= right;
			}

			#ifdef _DEBUG
			if (rcChild.Width() > 0 && rcChild.Height() > 0)
			{
				CRect test;
				test.IntersectRect(parent->TmiGetRectangle(), rcChild);
				ASSERT(test == rcChild);
			}
			#endif			
			
			RecurseDrawGraph(pdc, child, rcChild, false, surface, h * m_options.scaleFactor, 0);

			if (lastChild)
			{
				i++, c++;

				if (i < childrenPerRow[row])
					parent->TmiGetChild(c)->TmiSetRectangle(CRect(-1,-1,-1,-1));
				
				c+= childrenPerRow[row] - i;
				break;
			}

			left= fRight;
		}
		// This asserts due to rounding error: ASSERT(left == (horizontalRows ? rc.right : rc.bottom));
		top= fBottom;
	}
	// This asserts due to rounding error: ASSERT(top == (horizontalRows ? rc.bottom : rc.right));
}
Example #25
0
//////////////////////////////////////////////////////////////////////////
//
// Function:		CUltimateGroupBox::OnPaint
//
// Description:		Handles all the drawing code for the label
//
// Name                     Date        Version Comments
// Jack Jin					2003-12-03    1.0     Origin
//////////////////////////////////////////////////////////////////////////
void CUltimateGroupBox::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	// TODO: Add your message handler code here
   	CRect	rectClient;
	GetClientRect(rectClient);
	
	// Defalte Rect
	rectClient.DeflateRect(1,1);
	
	// Get Text Rect 
	CSize sizeText;
	CRect rectText, rectFrame;
	CRect rectTitle, rectContent;
	
	CFont *pOldFont = dc.SelectObject(&m_font);
  		
	// get Text if need
	if ( m_strTitle.IsEmpty() )
	{ 
        GetWindowText(m_strTitle);
		if ( ! m_strTitle.IsEmpty() )
			m_strTitle = _T(" ") + m_strTitle + _T(" ");
	}
	
	if ( ! m_strTitle.IsEmpty() )
	{
		sizeText = dc.GetTextExtent(m_strTitle);
	}
	else
	{
		sizeText.cx = 0;
		sizeText.cy = 0;
	}
	
	
	
	if ( m_nType == XPGB_FRAME ) // Frame style
	{
		// Calculate Text Rect 
		switch(m_dwAlignment)
		{
		case SS_LEFT:	
			rectText.top = rectClient.top;
			rectText.left = rectClient.left + 10;
			
			rectText.bottom = rectText.top + sizeText.cy;
			rectText.right = rectText.left + sizeText.cx;
			break;
		case	SS_CENTER:	
			rectText.top = rectClient.top;
			rectText.left = rectClient.left + (rectClient.Width() - sizeText.cx) / 2 ;
			
			rectText.bottom = rectText.top + sizeText.cy;
			rectText.right = rectText.left + sizeText.cx;
			break;
		case	SS_RIGHT	:
			rectText.top = rectClient.top;
			rectText.right = rectClient.right -10 ;
			
			rectText.bottom = rectText.top + sizeText.cy;
			rectText.left = rectText.right - sizeText.cx;
			break;
		}
		
		//  Calculate Frame rect
		rectFrame.left = rectClient.left;
		rectFrame.top = rectClient.top + sizeText.cy/2;
		
		rectFrame.right = rectClient.right;
		rectFrame.bottom = rectFrame.top + rectClient.Height() - sizeText.cy/2; 
		
		// Draw Frame border
		CPen penFrame;
		CBrush brushBKFrame(m_clrTitleBackground);
		
		penFrame.CreatePen(PS_SOLID, 1, m_clrBorder);
		
		CPen* pOldPen = dc.SelectObject(&penFrame);
		CBrush* pOldBrush = (CBrush*)dc.SelectStockObject(NULL_BRUSH);
		
		dc.RoundRect(rectFrame, CPoint(10,10)); 
		
		dc.SelectObject(pOldPen);
		dc.SelectObject(pOldBrush); 
		
		dc.IntersectClipRect(rectText);
		dc.FillSolidRect(rectText, m_clrTitleBackground);
	}
	else  // Windows Style
	{
		// Calculate Title size
		
		//rectTitle.top = rectClient.top
		rectTitle.top = rectClient.top+5; //change by szf


		rectTitle.left = rectClient.left ;
		
		rectTitle.right = rectClient.right;
		rectTitle.bottom = rectClient.top + sizeText.cy + 4;
		
		// Draw Title round rect
		CPen penFrame;
		CBrush brushBKTitle(m_clrTitleBackground);
		CBrush brushBKContent(m_clrClientBackground);
		
		penFrame.CreatePen(PS_SOLID, 1, m_clrBorder);
		
		CPen* pOldPen = dc.SelectObject(&penFrame);
		CBrush* pOldBrush = dc.SelectObject(&brushBKTitle);
		
		dc.RoundRect(rectClient, CPoint(10, 10)); 
		
		dc.SelectObject(pOldBrush); 
		
		// Draw content area
		rectContent.left = rectClient.left;
		//rectContent.top = rectClient.top + sizeText.cy + 4 ԭֵ
		rectContent.top = rectClient.top + sizeText.cy + 4+8;//change by szf  
		
		rectContent.right = rectClient.right;
		rectContent.bottom = rectContent.top + rectClient.Height() - sizeText.cy - 4; 

		pOldBrush = dc.SelectObject(&brushBKContent); 
		
		dc.Rectangle(rectContent);  
		
		dc.SelectObject(pOldPen);
		dc.SelectObject(pOldBrush); 
		
		
		// Calculate Text Rect 
		switch(m_dwAlignment)
		{
		case SS_LEFT:	
			rectText.top = rectTitle.top + 2;
			rectText.left = rectTitle.left + 2 ;
			
			rectText.bottom = rectText.top + sizeText.cy;
			rectText.right = rectText.left + sizeText.cx ;
			break;
		case	SS_CENTER:	
			rectText.top = rectTitle.top + 2;
			rectText.left = rectTitle.left + (rectTitle.Width() - sizeText.cx) / 2 ;
			
			rectText.bottom = rectText.top + sizeText.cy;
			rectText.right = rectText.left + sizeText.cx ;
			break;
		case	SS_RIGHT	:
			rectText.top = rectTitle.top + 2;
			rectText.right = rectClient.right - 2  ;
			
			rectText.bottom = rectText.top + sizeText.cy;
			rectText.left = rectText.right - sizeText.cx;
			break;
		}
		
		
	}
    
	COLORREF clrOldText = dc.SetTextColor(m_clrTitleText);
	UINT nMode = dc.SetBkMode(TRANSPARENT);
	
	dc.DrawText(m_strTitle, &rectText, DT_LEFT|DT_VCENTER|DT_SINGLELINE|DT_NOCLIP ); //DT_END_ELLIPSIS);
	
	// restore DC
	dc.SetBkMode(nMode);
    dc.SetTextColor(clrOldText);
    dc.SelectObject(pOldFont);
}
Example #26
0
// The classical squarification method.
//
void CTreemap::SequoiaView_DrawChildren(CDC *pdc, Item *parent, const double *surface, double h, DWORD /*flags*/)
{
	// Rest rectangle to fill
	CRect remaining = parent->TmiGetRectangle();
	
	ASSERT(remaining.Width() > 0);
	ASSERT(remaining.Height() > 0);

	// Size of rest rectangle
	LONGLONG remainingSize = parent->TmiGetSize();
	ASSERT(remainingSize > 0);

	// Scale factor
	const double sizePerSquarePixel= (double)parent->TmiGetSize() / remaining.Width() / remaining.Height();

	// First child for next row
	int head = 0;

	// At least one child left
	while (head < parent->TmiGetChildrenCount())
	{
		ASSERT(remaining.Width() > 0);
		ASSERT(remaining.Height() > 0);

		// How we devide the remaining rectangle 
		bool horizontal = (remaining.Width() >= remaining.Height());

		// Height of the new row
		const int height = horizontal ? remaining.Height() : remaining.Width();

		// Square of height in size scale for ratio formula
		const double hh= (height * height) * sizePerSquarePixel;
		ASSERT(hh > 0);

		// Row will be made up of child(rowBegin)...child(rowEnd - 1)
		int rowBegin = head;
		int rowEnd = head;

		// Worst ratio so far
		double worst = DBL_MAX;

		// Maxmium size of children in row
		LONGLONG rmax= parent->TmiGetChild(rowBegin)->TmiGetSize();

		// Sum of sizes of children in row
		LONGLONG sum= 0;

		// This condition will hold at least once.
		while (rowEnd < parent->TmiGetChildrenCount())
		{
			// We check a virtual row made up of child(rowBegin)...child(rowEnd) here.

			// Minimum size of child in virtual row
			LONGLONG rmin= parent->TmiGetChild(rowEnd)->TmiGetSize();

			// If sizes of the rest of the children is zero, we add all of them
			if (rmin == 0)
			{
				rowEnd= parent->TmiGetChildrenCount();
				break;
			}

			// Calculate the worst ratio in virtual row.
			// Formula taken from the "Squarified Treemaps" paper.
			// (http://http://www.win.tue.nl/~vanwijk/)

			const double ss= ((double)sum + rmin) * ((double)sum + rmin);
			const double ratio1 = hh * rmax / ss;
			const double ratio2 = ss / hh / rmin;

			const double nextWorst = max(ratio1, ratio2);

			// Will the ratio get worse?
			if (nextWorst > worst)
			{
				// Yes. Don't take the virtual row, but the
				// real row (child(rowBegin)..child(rowEnd - 1))
				// made so far.
				break;
			}

			// Here we have decided to add child(rowEnd) to the row.
			sum+= rmin;
			rowEnd++;

			worst= nextWorst;
		}

		// Row will be made up of child(rowBegin)...child(rowEnd - 1).
		// sum is the size of the row.

		// As the size of parent is greater than zero, the size of
		// the first child must have been greater than zero, too.
		ASSERT(sum > 0);

		// Width of row
		int width = (horizontal ? remaining.Width() : remaining.Height());
		ASSERT(width > 0);

		if (sum < remainingSize)
			width= (int)((double)sum / remainingSize * width);
		// else: use up the whole width
		// width may be 0 here.

		// Build the rectangles of children.
		CRect rc;
		double fBegin;
		if (horizontal)
		{
			rc.left= remaining.left;
			rc.right= remaining.left + width;
			fBegin= remaining.top;
		}
		else
		{
			rc.top= remaining.top;
			rc.bottom= remaining.top + width;
			fBegin= remaining.left;
		}

		// Now put the children into their places
		for (int i=rowBegin; i < rowEnd; i++)
		{
			int begin= (int)fBegin;
			double fraction= (double)(parent->TmiGetChild(i)->TmiGetSize()) / sum;
			double fEnd= fBegin + fraction * height;
			int end= (int)fEnd;

			bool lastChild = (i == rowEnd - 1 || parent->TmiGetChild(i+1)->TmiGetSize() == 0);

			if (lastChild)
			{
				// Use up the whole height
				end= (horizontal ? remaining.top + height : remaining.left + height);
			}
		
			if (horizontal)
			{
				rc.top= begin;
				rc.bottom= end;
			}
			else
			{
				rc.left= begin;
				rc.right= end;
			}

			ASSERT(rc.left <= rc.right);
			ASSERT(rc.top <= rc.bottom);

			ASSERT(rc.left >= remaining.left);
			ASSERT(rc.right <= remaining.right);
			ASSERT(rc.top >= remaining.top);
			ASSERT(rc.bottom <= remaining.bottom);

			RecurseDrawGraph(pdc, parent->TmiGetChild(i), rc, false, surface, h * m_options.scaleFactor, 0);

			if (lastChild)
				break;

			fBegin= fEnd;
		}

		// Put the next row into the rest of the rectangle
		if (horizontal)
			remaining.left+= width;
		else
			remaining.top+= width;

		remainingSize-= sum;
		
		ASSERT(remaining.left <= remaining.right);
		ASSERT(remaining.top <= remaining.bottom);

		ASSERT(remainingSize >= 0);

		head+= (rowEnd - rowBegin);

		if (remaining.Width() <= 0 || remaining.Height() <= 0)
		{
			if (head < parent->TmiGetChildrenCount())
				parent->TmiGetChild(head)->TmiSetRectangle(CRect(-1, -1, -1, -1));

			break;
		}
	}
	ASSERT(remainingSize == 0);
	ASSERT(remaining.left == remaining.right || remaining.top == remaining.bottom);
}
Example #27
0
void GameManager::Render(Gdiplus::Graphics& canvas, const CRect& clientRect)
{
	////////////////////////////////////////////////////////////////////////////////
	// Begin example code

	// Save the current transformation of the scene
	Gdiplus::Matrix transform;
	canvas.GetTransform(&transform);
	
	// Offset by the negative of the player direction
	canvas.TranslateTransform(-(Gdiplus::REAL)playerPtr->location.X, -(Gdiplus::REAL)playerPtr->location.Y);
	
	int numRows = clientRect.Height() / CellSize;
	int numCols = clientRect.Width() / CellSize;

	// draw horizontal lines for grid
	for (int row = 0; row < numRows; ++row)
	{
		Vector2i start = Vector2i(0, row * CellSize);
		Vector2i end = Vector2i(clientRect.Width(), row * CellSize);
		GameFrameworkInstance.DrawLine(canvas,
			start,
			end,
			Gdiplus::Color::White);
	}

	// draw vertical lines for grid
	for (int col = 0; col < numCols; ++col)
	{
		Vector2i start = Vector2i(col * CellSize, 0);
		Vector2i end = Vector2i(col * CellSize, clientRect.Height());
		GameFrameworkInstance.DrawLine(canvas,
			start,
			end,
			Gdiplus::Color::White);
	}

	// Draw all of the objects
	for (GameObject* objectPtr : gameObjects)
	{
		objectPtr->Render(canvas);
	}

	// Render method demonstration (You can remove all of this code)
	GameFrameworkInstance.DrawLine(canvas, Vector2i(200, 200), Vector2i(400, 200), Gdiplus::Color::White);

	GameFrameworkInstance.DrawRectangle(canvas, AABBi(Vector2i(10, 110), Vector2i(100, 200)), false, Gdiplus::Color::White);
	GameFrameworkInstance.DrawRectangle(canvas, AABBi(Vector2i(200, 110), Vector2i(300, 200)), true, Gdiplus::Color::White);

	//// restore the transform
	//canvas.SetTransform(&transform);

	GameFrameworkInstance.DrawCircle(canvas, Vector2i(200, 200), 50, false, Gdiplus::Color::White);
	GameFrameworkInstance.DrawCircle(canvas, Vector2i(400, 200), 50, true, Gdiplus::Color::White);

	GameFrameworkInstance.DrawText(canvas, Vector2i(10, 300), 12, "Arial", "Hello World!", Gdiplus::Color::White);

	// Load the image file Untitled.png from the Images folder. Give it the unique name of Image1
	ImageWrapper* image1 = GameFrameworkInstance.GetLoadedImage(Image1);
	GameFrameworkInstance.DrawImage(canvas, Vector2i(400, 400), image1);

	// Restore the transformation of the scene
	canvas.SetTransform(&transform);

	// End example code
	////////////////////////////////////////////////////////////////////////////////

	// Build Menu
	Vector2i dimensions = GameManagerInstance.GetScreenDimensions();
	Vector2i centrePoint = dimensions * 0.1f;
	GameFrameworkInstance.DrawRectangle(canvas,
		AABBi(Vector2i(0, 0) + centrePoint,
			Vector2i(150, 500) + centrePoint),
		true, Gdiplus::Color::Gray);
	GameFrameworkInstance.DrawText(canvas, Vector2i(10, 10) + centrePoint, 12, "Arial", "[1] Wall", Gdiplus::Color::White);
	GameFrameworkInstance.DrawText(canvas, Vector2i(10, 35) + centrePoint, 12, "Arial", "[2] Damage Zone", Gdiplus::Color::White);
	GameFrameworkInstance.DrawText(canvas, Vector2i(10, 60) + centrePoint, 12, "Arial", "[3] Healing Zone", Gdiplus::Color::White);
}
Example #28
0
void CGattooImg::CropImage(CRect & rc)
{
	cv::Mat cropped = m_Img(cv::Rect(rc.left, rc.top, rc.Width(), rc.Height()));
	cropped.copyTo(m_Img);
}
Example #29
0
BOOL CCaCertExtPage::OnInitDialog()
{
    CPropertyPage::OnInitDialog();

    // TODO: Add extra initialization here

    ClassXP(GetDlgItem(IDC_LIST)->m_hWnd,TRUE);


    CImageList * pImgList = ((CMiniCaApp *)AfxGetApp())->GetImgList();
    m_CheckList.SetImageList(pImgList,LVSIL_SMALL);//用来改变LISTCTRL行宽度

    ListView_SetExtendedListViewStyle(m_CheckList.m_hWnd, LVS_EX_CHECKBOXES | LVS_EX_SUBITEMIMAGES |
                                      LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);

    CRect rect;
    m_CheckList.GetClientRect(rect);
    int width = rect.Width();

    m_CheckList.InsertColumn(0, MiniCT_0400, LVCFMT_LEFT,width/3); //MiniCT_0400 "扩展名称"
    m_CheckList.InsertColumn(1, MiniCT_0401, LVCFMT_LEFT,2*width/3);		//MiniCT_0401 "内容"


    CString m_IniPathName = ((CMiniCaApp *)AfxGetApp())->GetAppPath() +  "\\MiniExt.ini";

    //加载配置信息
    //检测是否已经打开,如果打不开,则重新写入
    CFile file;
    if(!file.Open(m_IniPathName,CFile::modeRead))
    {
        /*得到配置,判断是否繁体环境*/
        HRSRC hRsrc = 0;

        if(CMiniCaApp::IsBig())
            hRsrc = FindResource(NULL,MAKEINTRESOURCE(IDR_MINICA_EXT_BG),"INI");
        else
            hRsrc = FindResource(NULL,MAKEINTRESOURCE(IDR_MINICA_EXT),"INI");

        DWORD lenCert = SizeofResource(NULL, hRsrc);
        HGLOBAL hgCert=LoadResource(NULL,hRsrc);
        LPSTR lpCert=(LPSTR)LockResource(hgCert);

        if(file.Open(m_IniPathName,CFile::modeCreate|CFile::modeWrite))	//存文件
        {
            file.Write(lpCert,lenCert);
        }

    }
    file.Close();

    GetIniInfo(m_IniPathName);

    /*LVS_EX_CHECKBOXES 使用检查框
    LVS_EX_FULLROWSELECT 选择整行
    LVS_EX_GRIDLINES 在REPORT中画出分隔线
    LVS_EX_HEADERDRAGDROP LVS_REPORT时可以利用drag-and-drop重新排序
    LVS_EX_SUBITEMIMAGES 允许在子项中显示image
    LVS_EX_TRACKSELECT 当鼠标指到某一项时便自动选择该项 */

    m_toolTip.Create(this);
    m_toolTip.AddTool(GetDlgItem(IDC_LIST), "证书扩展设置\r详细设置请转到配置选项卡");


    return TRUE;  // return TRUE unless you set the focus to a control
    // EXCEPTION: OCX Property Pages should return FALSE
}
BOOL CDlgParamSet::OnInitDialog()
{
	CDlgParamSetBase::OnInitDialog();

	{
		CRect rectStatic;
		GetDlgItem(IDC_STATIC)->GetWindowRect(rectStatic);
		CRect rectWeb;
		GetDlgItem(IDC_STATIC_WEB)->GetWindowRect(rectWeb);
		int nOffset = rectWeb.right - rectStatic.right;
		GetDlgItem(IDC_STATIC_WEB)->ShowWindow(SW_HIDE);
		GetDlgItem(IDC_STATIC_RELATED_GRID)->ShowWindow(SW_HIDE);
		//m_relatedGrid.ShowWindow(SW_HIDE);

		CRect rect;
		GetDlgItem(IDOK1)->GetWindowRect(rect);
		ScreenToClient(rect);
		rect.OffsetRect(- nOffset + 4, 0);
		GetDlgItem(IDOK1)->MoveWindow(rect);

		GetDlgItem(IDCANCEL)->GetWindowRect(rect);
		ScreenToClient(rect);
		rect.OffsetRect(- nOffset + 4, 0);
		GetDlgItem(IDCANCEL)->MoveWindow(rect);

		GetWindowRect(rect);
		rect.right -= nOffset - 2;
		MoveWindow(rect);

		//m_dlgParamEdit.ShowWindow(SW_HIDE);
		{//拉伸
			int nStretchX = 300;
			GetWindowRect(rect);
			rect.right += nStretchX;
			MoveWindow(rect);

			GetDlgItem(IDC_STATIC_PARAM_NAME)->GetWindowRect(rect);
			ScreenToClient(rect);
			rect.right += nStretchX;
			GetDlgItem(IDC_STATIC_PARAM_NAME)->MoveWindow(rect);

			CWnd& m_wndTreeLocation = *GetDlgItem(IDC_STATIC_GRID);
			m_wndTreeLocation.GetWindowRect(rect);
			ScreenToClient(rect);
			rect.right += nStretchX;
			m_wndTreeLocation.MoveWindow(rect);
			//GetDlgItem(IDC_STATIC)->MoveWindow(rect);
			m_wndGridTree.GetWindowRect(rect);
			ScreenToClient(rect);
			rect.right += nStretchX;
			m_wndGridTree.MoveWindow(rect);
			m_wndGridTree.SetColumnWidth(ZTreeParamSet::COL_NAME, 200 + nStretchX);
			m_wndGridTree.AdjustLayout();

			m_dlgParamEdit.GetWindowRect(rect);
			ScreenToClient(rect);
			rect.right += nStretchX;
			m_dlgParamEdit.MoveWindow(rect);
			m_dlgParamEdit.StretchX(nStretchX);

			GetDlgItem(IDOK1)->GetWindowRect(rect);
			ScreenToClient(rect);
			rect.OffsetRect(nStretchX, 0);
			GetDlgItem(IDOK1)->MoveWindow(rect);

			GetDlgItem(IDCANCEL)->GetWindowRect(rect);
			ScreenToClient(rect);
			rect.OffsetRect(nStretchX, 0);
			GetDlgItem(IDCANCEL)->MoveWindow(rect);
		}
	}

	CRect rect;
	m_wndGridTree.GetClientRect(rect);
	m_wndGridTree.SetColumnWidth(ZTreeParamSet::COL_NAME, rect.Width() - 40);
	m_wndGridTree.AdjustLayout();


	return TRUE;  // return TRUE unless you set the focus to a control
	// 异常: OCX 属性页应返回 FALSE
}