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; }
size_t size_to_height(size_t size) { detail::scoped_GetDC screen_dc(NULL); return ::MulDiv(size, ::GetDeviceCaps(screen_dc, LOGPIXELSY), 72); }
size_t height_to_size(size_t height) { detail::scoped_GetDC screen_dc(NULL); return ::MulDiv(height, 72, ::GetDeviceCaps(screen_dc, LOGPIXELSY)); }
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"); }