BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if( !CFrameWnd::PreCreateWindow(cs) ) return FALSE; //устанавливаем позицию главного окна запомненную ранее, если это возможно if (m_OnGetInitialPos) { CPoint point; m_OnGetInitialPos(point); if (point.x != std::numeric_limits<int>::max() && point.y != std::numeric_limits<int>::max()) { cs.x = point.x; cs.y = point.y; } } //устанавливаем необходимый размер главного окна. Windows непонятным образо м масштабирует диалоги (непропорционально DPI), поэтому //для каждого DPI подгоняем размеры DPIAware dpia; switch(dpia.GetDPIX()) { case 72: cs.cx = dpia.ScaleX(965); break; default: case 96: cs.cx = dpia.ScaleX(730); //OK break; case 120: cs.cx = dpia.ScaleX(765); break; case 144: cs.cx = dpia.ScaleX(795); //OK break; case 192: cs.cx = dpia.ScaleX(730); break; } switch(dpia.GetDPIY()) { case 72: cs.cy = dpia.ScaleY(580); break; default: case 96: cs.cy = dpia.ScaleY(455); break; } cs.style = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX; cs.dwExStyle &= ~WS_EX_CLIENTEDGE; cs.dwExStyle |= WS_EX_CONTROLPARENT; cs.lpszClass = AfxRegisterWndClass(0); return TRUE; }
BOOL CCheckEngineTabDlg::OnInitDialog() { Super::OnInitDialog(); m_quick_help_text.SetWindowText(MLL::LoadString(IDS_CEPAGE_QUICK_HELP_TEXT)); m_errors_list.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_CHECKBOXES | LVS_EX_GRIDLINES); //устанавливаем картинки состояния для чекбоксов... m_errors_list.SetImageList(&m_image_list, LVSIL_STATE); DPIAware dpia; m_errors_list.InsertColumn(0, MLL::LoadString(IDS_CEPAGE_ERROR_STATE), LVCFMT_LEFT, dpia.ScaleX(70)); m_errors_list.InsertColumn(1, _T("BC"), LVCFMT_LEFT, 35); m_errors_list.InsertColumn(2, MLL::LoadString(IDS_CEPAGE_ERROR_DESCRIPTION), LVCFMT_LEFT, 450); SetTimer(TIMER_ID,250,NULL); ResetErrorsList(); m_header_ctrl->Init(m_errors_list.GetHeaderCtrl()); m_header_ctrl->SetTextColor(m_gray_text_color); UpdateDialogControls(this,TRUE); return TRUE; // return TRUE unless you set the focus to a control }