示例#1
0
	std::set<std::wstring> get_list()
	{
		std::set<std::wstring> font_names;
		LOGFONTW logfont;
		memset(&logfont, 0, sizeof(logfont));
		logfont.lfCharSet = DEFAULT_CHARSET;
		detail::scoped_GetDC screen_dc(NULL);
		::EnumFontFamiliesExW(screen_dc, &logfont, (FONTENUMPROCW)&enum_font_families, (LPARAM)&font_names, 0);
		return font_names;
	}
示例#2
0
	size_t size_to_height(size_t size)
	{
		detail::scoped_GetDC screen_dc(NULL);
		return ::MulDiv(size, ::GetDeviceCaps(screen_dc, LOGPIXELSY), 72);
	}
示例#3
0
	size_t height_to_size(size_t height)
	{
		detail::scoped_GetDC screen_dc(NULL);
		return ::MulDiv(height, 72, ::GetDeviceCaps(screen_dc, LOGPIXELSY));
	}
示例#4
0
void CMainWindow::OnPaint()
{
	CPaintDC screen_dc(this); // device context for painting
	CDC dc;
	dc.CreateCompatibleDC(NULL);
	CBitmap *ob=dc.SelectObject(&m_back_buffer);
	CFont *of=dc.SelectObject(&m_big_font);
	CPen *op=dc.SelectObject(&m_white_pen);
	dc.FillSolidRect(&m_client_rect,RGB(0,0,0));

	Vector *nv=&mp_network_system->mv_networks;

	int alive_txt_offset=165;
	int total_txt_offset=215;


	dc.SetTextColor(RGB(255,255,255));
	dc.TextOut(NETWORKLEFTMARGIN+15,1,"Networks");
	dc.TextOut(NETWORKLEFTMARGIN+alive_txt_offset,1,"Alive /");
	dc.TextOut(NETWORKLEFTMARGIN+total_txt_offset,1,"Total");
	dc.FillSolidRect(NETWORKLEFTMARGIN,NETWORKTOPMARGIN-3,250,3,RGB(255,255,255));
	dc.SelectObject(&m_little_font);
	dc.SetBkMode(TRANSPARENT);
	
	CRect clip_rect;
	dc.GetClipBox(&clip_rect);
	CRect new_clip_rect(NETWORKLEFTMARGIN,NETWORKTOPMARGIN,NETWORKLEFTMARGIN+350,m_client_rect.bottom-NETWORKBOTTOMMARGIN);
	dc.IntersectClipRect(&new_clip_rect);

	for(int i=0;i<(int)nv->Size();i++){
		Network* nw=(Network*)nv->Get(i);

		if(nw==m_rack_window.GetSelectedNetwork()){
			RenderGradients(dc);
			dc.FillSolidRect(NETWORKLEFTMARGIN,NETWORKTOPMARGIN+i*NETWORKCELLHEIGHT+1-m_vscroll_pos,300,NETWORKCELLHEIGHT-2,RGB(0,0,200));
			//dc.FillSolidRect(NETWORKLEFTMARGIN+280,NETWORKTOPMARGIN,20,m_client_rect.bottom-(NETWORKTOPMARGIN+NETWORKBOTTOMMARGIN),RGB(0,0,200));
			
		}
		dc.TextOut(NETWORKLEFTMARGIN+15,NETWORKTOPMARGIN+i*NETWORKCELLHEIGHT+2-m_vscroll_pos,nw->m_name.c_str());

		if(nw->GetTotalRacks()>0){
			CString tmp;
			tmp.Format("%d",nw->GetAliveRacks());
			dc.TextOut(NETWORKLEFTMARGIN+alive_txt_offset+29,NETWORKTOPMARGIN+i*NETWORKCELLHEIGHT+2-m_vscroll_pos,tmp);
			int crashed=nw->GetCrashedRacks();

			if(crashed>0){
				dc.SetTextColor(RGB(255,100,100));
				tmp.Format("(%d)",crashed);
				dc.TextOut(NETWORKLEFTMARGIN+alive_txt_offset-5,NETWORKTOPMARGIN+i*NETWORKCELLHEIGHT+2-m_vscroll_pos,tmp);
				dc.SetTextColor(RGB(255,255,255));
			}

			tmp.Format("/ %d",nw->GetTotalRacks());
			dc.TextOut(NETWORKLEFTMARGIN+total_txt_offset,NETWORKTOPMARGIN+i*NETWORKCELLHEIGHT+2-m_vscroll_pos,tmp);
		}

		dc.FillSolidRect(NETWORKLEFTMARGIN,NETWORKTOPMARGIN+i*NETWORKCELLHEIGHT-m_vscroll_pos,250,1,RGB(190,190,190));

		//top outline
		dc.FillSolidRect(NETWORKLEFTMARGIN,NETWORKTOPMARGIN+i*NETWORKCELLHEIGHT+1-m_vscroll_pos,250,1,RGB(120,120,120));

		//bottom outline
		dc.FillSolidRect(NETWORKLEFTMARGIN,NETWORKTOPMARGIN+i*NETWORKCELLHEIGHT+NETWORKCELLHEIGHT-1-m_vscroll_pos,250,1,RGB(255,255,255));
	}

	screen_dc.BitBlt(0,0,m_client_rect.Width(),m_client_rect.Height(),&dc,0,0,SRCCOPY);
	dc.SelectObject(ob);
	dc.SelectObject(of);
	dc.SelectObject(op);
	//TRACE("CMainWindow::OnPaint().\n");
}