void CCommentsDlg::OnSize(UINT nType, int cx, int cy) { CDialog::OnSize(nType, cx, cy); CWnd *pEdit = GetDlgItem(IDC_COMMENTS); CWnd *pOk = GetDlgItem(IDC_OK); CWnd *pCancel = GetDlgItem(IDC_CANCEL); CWnd *pCheckBox = GetDlgItem(IDC_SHOWONOPEN); CRect dlgRect; GetClientRect(dlgRect); if (pEdit != NULL) { dlgRect.bottom -= 39; pEdit->MoveWindow(dlgRect); CRect buttonRect; pOk->GetClientRect(buttonRect); buttonRect.MoveToY(dlgRect.bottom + 8); buttonRect.MoveToX(dlgRect.right - buttonRect.Width() * 2 - 10); pOk->MoveWindow(buttonRect); pCancel->GetClientRect(buttonRect); buttonRect.MoveToY(dlgRect.bottom + 8); buttonRect.MoveToX(dlgRect.right - buttonRect.Width() - 7); pCancel->MoveWindow(buttonRect); pCheckBox->GetClientRect(buttonRect); buttonRect.MoveToY(dlgRect.bottom + 14); buttonRect.MoveToX(8); pCheckBox->MoveWindow(buttonRect); } }
void CTipWnd::Move(CPoint pt, bool centre /* = true */) { // Work out current position of the window CRect rct; GetWindowRect(rct); CPoint curr; if (centre) curr = CPoint((rct.left + rct.right)/2, (rct.top + rct.bottom)/2); else curr = CPoint(rct.left, rct.top); if (pt != curr) { rct += pt - curr; if (::OutsideMonitor(rct)) { // Make sure it's fully isnide the monitor else this type of window will go haywire CRect wnd_rct = ::MonitorMouse(); if (rct.left < wnd_rct.left) rct.MoveToX(wnd_rct.left); else if (rct.right > wnd_rct.right) rct.MoveToX(wnd_rct.right - rct.Width()); if (rct.top < wnd_rct.top) rct.MoveToY(wnd_rct.top); else if (rct.bottom > wnd_rct.bottom) rct.MoveToY(wnd_rct.bottom - rct.Height()); } MoveWindow(&rct, FALSE); } }
void DownloadPage::updateDirectoryControlsLayout() { CRect dlgRect; GetClientRect(dlgRect); CRect r; GetDlgItem(IDC_BROWSEDIR).GetWindowRect(r); ScreenToClient(r); const int buttonLeft = dlgRect.right - r.Width() - 8; r.MoveToX(buttonLeft); GetDlgItem(IDC_BROWSEDIR).MoveWindow(r); // GetDlgItem(IDC_DOWNLOADDIR).GetWindowRect(r); ScreenToClient(r); r.right = buttonLeft - 8; GetDlgItem(IDC_DOWNLOADDIR).MoveWindow(r); // GetDlgItem(IDC_BROWSETEMPDIR).GetWindowRect(r); ScreenToClient(r); r.MoveToX(buttonLeft); GetDlgItem(IDC_BROWSETEMPDIR).MoveWindow(r); // GetDlgItem(IDC_TEMP_DOWNLOAD_DIRECTORY).GetWindowRect(r); ScreenToClient(r); r.right = buttonLeft - 8; GetDlgItem(IDC_TEMP_DOWNLOAD_DIRECTORY).MoveWindow(r); }
void CDispersalDlg::AdjustLayout() { static const int MARGE = 10; if (GetSafeHwnd() == NULL || m_propertiesCtrl.GetSafeHwnd() == NULL) { return; } CRect rectClient; GetClientRect(rectClient); CRect rectOK; GetDlgItem(IDOK)->GetWindowRect(rectOK); ScreenToClient(rectOK); rectOK.MoveToX(rectClient.right - 2 * MARGE - 2 * rectOK.Width()); rectOK.MoveToY(rectClient.bottom - MARGE - rectOK.Height()); CRect rectCancel; GetDlgItem(IDCANCEL)->GetWindowRect(rectCancel); ScreenToClient(rectCancel); rectCancel.left = rectClient.right - MARGE - rectCancel.Width(); rectCancel.top = rectClient.bottom - MARGE - rectCancel.Height(); CRect rectName; m_nameCtrl.GetWindowRect(rectName); ScreenToClient(rectName); rectName.right = rectClient.right - MARGE; CRect rectDescription; m_descriptionCtrl.GetWindowRect(rectDescription); ScreenToClient(rectDescription); rectDescription.right = rectClient.right - MARGE; CRect rectStatic; GetDlgItem(IDC_CMN_STATIC1)->GetWindowRect(rectStatic); ScreenToClient(rectStatic); rectStatic.MoveToY(rectClient.bottom - rectStatic.Height() - MARGE); //rectStatic.bottom = rectClient.bottom - MARGE; CRect rectInternalName; m_internalNameCtrl.GetWindowRect(rectInternalName); ScreenToClient(rectInternalName); rectInternalName.top = rectClient.bottom - rectDescription.Height() - MARGE; rectInternalName.bottom = rectClient.bottom - MARGE; CRect rect; m_propertiesCtrl.GetWindowRect(rect); ScreenToClient(rect); rect.right = rectClient.right - MARGE; rect.bottom = rectClient.bottom - MARGE - rectOK.Height() - MARGE; m_nameCtrl.SetWindowPos(NULL, 0, 0, rectName.Width(), rectName.Height(), SWP_NOACTIVATE | SWP_NOZORDER | SWP_NOMOVE); m_descriptionCtrl.SetWindowPos(NULL, 0, 0, rectDescription.Width(), rectDescription.Height(), SWP_NOACTIVATE | SWP_NOZORDER | SWP_NOMOVE); m_propertiesCtrl.SetWindowPos(NULL, 0, 0, rect.Width(), rect.Height(), SWP_NOACTIVATE | SWP_NOZORDER | SWP_NOMOVE); GetDlgItem(IDC_CMN_STATIC1)->SetWindowPos(NULL, rectStatic.left, rectStatic.top, 0, 0, SWP_NOACTIVATE | SWP_NOZORDER | SWP_NOSIZE); m_internalNameCtrl.SetWindowPos(NULL, rectInternalName.left, rectInternalName.top, 0, 0, SWP_NOACTIVATE | SWP_NOZORDER | SWP_NOSIZE); GetDlgItem(IDOK)->SetWindowPos(NULL, rectOK.left, rectOK.top, 0, 0, SWP_NOACTIVATE | SWP_NOZORDER | SWP_NOSIZE); GetDlgItem(IDCANCEL)->SetWindowPos(NULL, rectCancel.left, rectCancel.top, 0, 0, SWP_NOACTIVATE | SWP_NOZORDER | SWP_NOSIZE); }
void CLoginDlg::MoveLogDlg() { CRect rect; GetWindowRect(&rect); CRect logrect; GetLogWindow().GetWindowRect(&logrect); logrect.MoveToX(rect.right); GetLogWindow().MoveWindow(&logrect); }
//------------------------------------- /// ダウンロードマネージャーを表示する void CDownloadManager::OnShowDLManager(UINT uNotifyCode, int nID, CWindow wndCtl) { if (CDLControlOption::s_bUseDLManager == false) { ::MessageBox(NULL, _T("[Donutのオプション]->[ブラウザ]->「ダウンロードマネージャーを使用する」にチェックを入れてください"), NULL, MB_OK | MB_ICONWARNING); return; } if (m_wndDownload.IsWindow() == FALSE) { m_wndDownload.CreateEx(); m_wndDownload.ShowWindow(TRUE); } else { if (m_wndDownload.IsWindowVisible() == FALSE) m_wndDownload.SetParent(NULL); if (m_wndDownload.IsZoomed() == FALSE) m_wndDownload.ShowWindow(SW_RESTORE); m_wndDownload.SetActiveWindow(); } m_wndDownload.EnableVisible(); if (m_wndDownload.IsZoomed() == FALSE) { // ウィンドウから出ていたら元に戻す CRect rcWnd; m_wndDownload.GetWindowRect(rcWnd); HMONITOR hMonitor = ::MonitorFromWindow(m_wndDownload, MONITOR_DEFAULTTONEAREST); MONITORINFO moniInfo = { sizeof (MONITORINFO) }; ::GetMonitorInfo(hMonitor, &moniInfo); if ( ::PtInRect(&moniInfo.rcWork, rcWnd.TopLeft()) == FALSE || ::PtInRect(&moniInfo.rcWork, rcWnd.BottomRight()) == FALSE) { if (moniInfo.rcWork.top > rcWnd.top) rcWnd.MoveToY(moniInfo.rcWork.top); if (moniInfo.rcWork.left > rcWnd.left) rcWnd.MoveToX(moniInfo.rcWork.left); if (moniInfo.rcWork.right < rcWnd.right) rcWnd.MoveToX(moniInfo.rcWork.right - rcWnd.Width()); if (moniInfo.rcWork.bottom < rcWnd.bottom) rcWnd.MoveToY(moniInfo.rcWork.bottom - rcWnd.Height()); m_wndDownload.MoveWindow(rcWnd); } } }
void SpyFrame::UpdateLayout(BOOL bResizeBars /* = TRUE */) { if (isClosedOrShutdown()) return; RECT rect; GetClientRect(&rect); // position bars and offset their dimensions UpdateBarsPosition(rect, bResizeBars); if (ctrlStatus.IsWindow()) { CRect sr; int w[6]; ctrlStatus.GetClientRect(sr); const int tmp = sr.Width() > 616 ? 516 : (sr.Width() > 116 ? sr.Width() - 100 : 16); w[0] = 170; w[1] = sr.right - tmp - 150; w[2] = w[1] + (tmp - 16) * 1 / 4; w[3] = w[1] + (tmp - 16) * 2 / 4; w[4] = w[1] + (tmp - 16) * 3 / 4; w[5] = w[1] + (tmp - 16) * 4 / 4; ctrlStatus.SetParts(6, w); ctrlStatus.GetRect(0, sr); m_ctrlIgnoreTTH.MoveWindow(sr); sr.MoveToX(170); sr.right += 50; m_ctrlShowNick.MoveWindow(sr); sr.MoveToX(sr.right + 10); sr.right += 200; m_ctrlSpyLogFile.MoveWindow(sr); } ctrlSearches.MoveWindow(&rect); }
void winutils::AdjustScreenRect(CRect& rc) { CWindowRect rcDesktop(::GetDesktopWindow()); CWindowRect rcTaskBar(::FindWindow(_T("Shell_TrayWnd"), NULL)); CRect rcDesk; rcDesk.SubtractRect(rcDesktop, rcTaskBar); if (rc.right > rcDesk.right) { rc.MoveToX(rcDesk.right - rc.Width()); } if (rc.bottom > rcDesk.bottom) { rc.MoveToY(rcDesk.bottom - rc.Height()); } if (rc.left < rcDesk.left) { rc.MoveToX(rcDesk.left); } if (rc.top < rcDesk.top) { rc.MoveToY(rcDesk.top); } }
void CFilePreviewCtrl::DoPaintEmpty(HDC hDC) { RECT rcClient; GetClientRect(&rcClient); HFONT hOldFont = (HFONT)SelectObject(hDC, m_hFont); FillRect(hDC, &rcClient, (HBRUSH)GetStockObject(WHITE_BRUSH)); CRect rcText; DrawTextEx(hDC, m_sEmptyMsg.GetBuffer(0), -1, &rcText, DT_CALCRECT, NULL); rcText.MoveToX(rcClient.right/2-rcText.right/2); DrawTextEx(hDC, m_sEmptyMsg.GetBuffer(0), -1, &rcText, DT_LEFT, NULL); SelectObject(hDC, hOldFont); }
BOOL CPPageFileInfoSheet::OnInitDialog() { __super::OnInitDialog(); GetDlgItem(IDCANCEL)->ShowWindow(SW_HIDE); GetDlgItem(ID_APPLY_NOW)->ShowWindow(SW_HIDE); GetDlgItem(IDOK)->SetWindowText(ResStr(IDS_AG_CLOSE)); CRect r; GetDlgItem(ID_APPLY_NOW)->GetWindowRect(&r); ScreenToClient(r); GetDlgItem(IDOK)->MoveWindow(r); r.MoveToX(5); r.right += 10; m_Button_MI.Create(ResStr(IDS_AG_SAVE_AS), WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE, r, this, IDC_BUTTON_MI); m_Button_MI.SetFont(GetFont()); m_Button_MI.ShowWindow(SW_HIDE); GetTabControl()->SetFocus(); return FALSE; // return TRUE unless you set the focus to a control }
void CLMenu::UpdatePosition(CPoint pt) { if(!IsWindow(m_hWnd) || !IsWindowVisible()) { return; } CMonitors monitors; CMonitor *monitor = monitors.GetMonitor(pt); if(!monitor) { return; } CRect r; GetWindowRect(&r); if(parent) { r.MoveToXY(pt.x - SHADOW_SIZE - BORDER_SIZE, pt.y - SHADOW_SIZE - BORDER_SIZE - RADIUS / 2); } else { switch(position) { case DockPositionBottom: { r.MoveToXY(pt.x - SHADOW_SIZE - BORDER_SIZE - RADIUS / 2 - ARROW_WIDTH / 2, pt.y - SHADOW_SIZE - BORDER_SIZE - RADIUS - ARROW_HEIGHT - ITEM_HEIGHT * ItemCount(TRUE)); } break; case DockPositionTop: { r.MoveToXY(pt.x - SHADOW_SIZE - BORDER_SIZE - RADIUS / 2 - ARROW_WIDTH / 2, pt.y - SHADOW_SIZE - BORDER_SIZE); } break; case DockPositionRight: { r.MoveToXY(pt.x - SHADOW_SIZE - BORDER_SIZE - RADIUS - ITEM_ADDITION - GetMaxItemWidth(), pt.y - SHADOW_SIZE - BORDER_SIZE - RADIUS / 2 - (ITEM_HEIGHT * ItemCount(TRUE)) / 2); } break; case DockPositionLeft: { r.MoveToXY(pt.x - SHADOW_SIZE - BORDER_SIZE, pt.y - SHADOW_SIZE - BORDER_SIZE - RADIUS / 2 - (ITEM_HEIGHT * ItemCount(TRUE)) / 2); } break; default: { r.MoveToXY(pt.x - SHADOW_SIZE - BORDER_SIZE, pt.y - SHADOW_SIZE - BORDER_SIZE - RADIUS / 2); } break; } } CRect monitorRect = monitor->Rect(); // update position on the screen //int a = arrowOffset; //arrowOffset = 0; if(r.left < monitorRect.left) { /*arrowOffset = r.left - monitor->rect.left; if(arrowOffset < SHADOW_SIZE + RADIUS / 2) { arrowOffset = 0; }*/ r.MoveToX(monitorRect.left); } if(r.top < monitorRect.top) { r.MoveToY(monitorRect.top); } if(r.bottom > monitorRect.bottom) { r.MoveToY(r.top - (r.bottom - monitorRect.bottom)); } //int arrowRight = r.Width() - SHADOW_SIZE * 2 - RADIUS - ARROW_WIDTH; if(!parent) { if(r.right > monitorRect.right) { /*arrowOffset = r.right - monitor->rect.right; if(arrowOffset > arrowRight) { arrowOffset = arrowRight; }*/ r.MoveToX(r.left - (r.right - monitorRect.right)); } } else { CRect rect; parent->GetWindowRect(&rect); if(r.right > monitorRect.right) { /*arrowOffset = r.right - monitor->rect.right; if(arrowOffset > arrowRight) { arrowOffset = arrowRight; }*/ r.MoveToX(rect.left - r.Width() + SHADOW_SIZE * 2); } } SetWindowPos(this, r.left, r.top, 0, 0, SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE); /*if(a != arrowOffset) { DrawBckg(); Draw(); }*/ }
bool CLMenu::Popup(CLMenu *Parent, DockPosition position, int X, int Y) { if(!IsWindow(m_hWnd) || IsWindowVisible()) { return FALSE; } CMonitors monitors; CMonitor *monitor = monitors.GetMonitor(CPoint(X, Y)); if(!monitor) { return FALSE; } CLMenu::position = position; parent = Parent; SetSelected(NULL); if(ItemCount(TRUE, TRUE) == 0) { return FALSE; } CRect r; if(parent) { r.left = X - SHADOW_SIZE - BORDER_SIZE; r.top = Y - SHADOW_SIZE - BORDER_SIZE - RADIUS / 2; r.right = r.left + SHADOW_SIZE * 2 + BORDER_SIZE * 2 + RADIUS + ITEM_ADDITION + GetMaxItemWidth(); r.bottom = r.top + SHADOW_SIZE * 2 + BORDER_SIZE * 2 + RADIUS + ITEM_HEIGHT * ItemCount(TRUE); } else { switch(position) { case DockPositionBottom: { r.left = X - SHADOW_SIZE - BORDER_SIZE - RADIUS / 2 - ARROW_WIDTH / 2; r.top = Y - SHADOW_SIZE - BORDER_SIZE - RADIUS - ARROW_HEIGHT - ITEM_HEIGHT * ItemCount(TRUE); r.right = r.left + SHADOW_SIZE * 2 + BORDER_SIZE * 2 + RADIUS + ITEM_ADDITION + GetMaxItemWidth(); r.bottom = Y + SHADOW_SIZE + BORDER_SIZE; } break; case DockPositionTop: { r.left = X - SHADOW_SIZE - BORDER_SIZE - RADIUS / 2 - ARROW_WIDTH / 2; r.top = Y - SHADOW_SIZE - BORDER_SIZE; r.right = r.left + SHADOW_SIZE * 2 + BORDER_SIZE * 2 + RADIUS + ITEM_ADDITION + GetMaxItemWidth(); r.bottom = Y + SHADOW_SIZE + BORDER_SIZE + ARROW_HEIGHT + RADIUS + ITEM_HEIGHT * ItemCount(TRUE); } break; case DockPositionRight: { r.left = X - SHADOW_SIZE - BORDER_SIZE - RADIUS - ITEM_ADDITION - GetMaxItemWidth(); r.top = Y - SHADOW_SIZE - BORDER_SIZE - RADIUS / 2 - (ITEM_HEIGHT * ItemCount(TRUE)) / 2; r.right = X + SHADOW_SIZE + BORDER_SIZE; r.bottom = r.top + SHADOW_SIZE * 2 + BORDER_SIZE * 2 + RADIUS + ITEM_HEIGHT * ItemCount(TRUE); } break; case DockPositionLeft: { r.left = X - SHADOW_SIZE - BORDER_SIZE; r.top = Y - SHADOW_SIZE - BORDER_SIZE - RADIUS / 2 - (ITEM_HEIGHT * ItemCount(TRUE)) / 2; r.right = X + SHADOW_SIZE + BORDER_SIZE + RADIUS + ITEM_ADDITION + GetMaxItemWidth(); r.bottom = r.top + SHADOW_SIZE * 2 + BORDER_SIZE * 2 + RADIUS + ITEM_HEIGHT * ItemCount(TRUE); } break; default: { r.left = X - SHADOW_SIZE - BORDER_SIZE; r.top = Y - SHADOW_SIZE - BORDER_SIZE - RADIUS / 2; r.right = r.left + SHADOW_SIZE * 2 + BORDER_SIZE * 2 + RADIUS + ITEM_ADDITION + GetMaxItemWidth(); r.bottom = r.top + SHADOW_SIZE * 2 + BORDER_SIZE * 2 + RADIUS + ITEM_HEIGHT * ItemCount(TRUE); } break; } } // update position on the screen CRect monitorRect = monitor->Rect(); arrowOffset = 3; if(r.left < monitorRect.left) { arrowOffset = r.left - monitorRect.left; if(arrowOffset < SHADOW_SIZE + RADIUS / 2) { arrowOffset = 3; } r.MoveToX(monitorRect.left); } if(r.top < monitorRect.top) { r.MoveToY(monitorRect.top); } if(r.bottom > monitorRect.bottom) { r.MoveToY(r.top - (r.bottom - monitorRect.bottom)); } int arrowRight = r.Width() - SHADOW_SIZE * 2 - RADIUS - ARROW_WIDTH; if(!parent) { if(r.right > monitorRect.right) { arrowOffset = r.right - monitorRect.right; if(arrowOffset > arrowRight) { arrowOffset = arrowRight - 3; } r.MoveToX(r.left - (r.right - monitorRect.right)); } } else { CRect rect; parent->GetWindowRect(&rect); if(r.right > monitorRect.right) { arrowOffset = r.right - monitorRect.right; if(arrowOffset > arrowRight) { arrowOffset = arrowRight - 3; } r.MoveToX(rect.left - r.Width() + SHADOW_SIZE * 2); } } SetWindowPos(this, r.left, r.top, r.Width(), r.Height(), SWP_NOZORDER | SWP_NOACTIVATE); POSITION p = items.GetHeadPosition(); while(p) { DrawItem(items.GetAt(p)); items.GetNext(p); } DrawBckg(); DrawLayer(); tmp = new CDIB(); tmp->Resize(dib->Width(), dib->Height()); UpdateLayer(tmp); ShowWindow(SW_SHOW); SetTimer(TIMER_SHOW, 10, NULL); showStartAt = GetTickCount(); return TRUE; }
BOOL CMessageBox::OnInitDialog() { __super::OnInitDialog(); CRect rect(0, 0, 0, 0); //determine the required size of the message box CSize szText = GetTextSize(m_sMessage); CSize szIcon = GetIconSize(m_hIcon); CSize szButtons = GetButtonSize(); CSize szIconText; szIconText.cx = szText.cx + szIcon.cx + ((szIcon.cx == 0) ? MESSAGEBOX_ICONMARGIN : (2*MESSAGEBOX_ICONMARGIN)); szIconText.cy = max(szIcon.cy, szText.cy); rect.right = max(szButtons.cx, szIconText.cx); rect.right += 2*GetSystemMetrics(SM_CXBORDER); rect.right += 2*MESSAGEBOX_BORDERMARGINX; rect.bottom = szIconText.cy; rect.bottom += szButtons.cy; rect.bottom += 2*MESSAGEBOX_BORDERMARGINY + MESSAGEBOX_TEXTBUTTONMARGIN; rect.bottom += GetSystemMetrics(SM_CYCAPTION); rect.bottom += 2*GetSystemMetrics(SM_CYBORDER); MoveWindow(rect); CenterWindow(); GetClientRect(rect); //now size and position the buttons as we need them ASSERT(!m_sButton1.IsEmpty()); //at least the first button must be there! if (m_sButton2.IsEmpty()) { //only one button CRect rt; GetDlgItem(IDC_MESSAGEBOX_BUTTON1)->GetWindowRect(rt); ScreenToClient(rt); rt.MoveToX(rect.left + ((rect.Width() - m_szButtons.cx)/2)); rt.MoveToY(rect.bottom - MESSAGEBOX_BORDERMARGINY - m_szButtons.cy); GetDlgItem(IDC_MESSAGEBOX_BUTTON1)->MoveWindow(rt); //hide the other two buttons GetDlgItem(IDC_MESSAGEBOX_BUTTON2)->ShowWindow(SW_HIDE); GetDlgItem(IDC_MESSAGEBOX_BUTTON3)->ShowWindow(SW_HIDE); } else if (m_sButton3.IsEmpty()) { //two buttons CRect rt1; CRect rt2; GetDlgItem(IDC_MESSAGEBOX_BUTTON1)->GetWindowRect(rt1); ScreenToClient(rt1); GetDlgItem(IDC_MESSAGEBOX_BUTTON2)->GetWindowRect(rt2); ScreenToClient(rt2); rt1.MoveToX(rect.left + ((rect.Width() - m_szButtons.cx)/2)); rt1.MoveToY(rect.bottom - MESSAGEBOX_BORDERMARGINY - m_szButtons.cy); rt2.MoveToX(rt1.right + MESSAGEBOX_BUTTONMARGIN); rt2.MoveToY(rect.bottom - MESSAGEBOX_BORDERMARGINY - m_szButtons.cy); GetDlgItem(IDC_MESSAGEBOX_BUTTON1)->MoveWindow(rt1); GetDlgItem(IDC_MESSAGEBOX_BUTTON2)->MoveWindow(rt2); //hide the third button GetDlgItem(IDC_MESSAGEBOX_BUTTON3)->ShowWindow(SW_HIDE); } else { //three buttons CRect buttonrect; GetDlgItem(IDC_MESSAGEBOX_BUTTON1)->GetWindowRect(buttonrect); CRect rt1; CRect rt2; CRect rt3; GetDlgItem(IDC_MESSAGEBOX_BUTTON1)->GetWindowRect(rt1); ScreenToClient(rt1); GetDlgItem(IDC_MESSAGEBOX_BUTTON2)->GetWindowRect(rt2); ScreenToClient(rt2); GetDlgItem(IDC_MESSAGEBOX_BUTTON3)->GetWindowRect(rt3); ScreenToClient(rt3); rt1.MoveToX(rect.left + ((rect.Width() - m_szButtons.cx)/2)); rt1.MoveToY(rect.bottom - MESSAGEBOX_BORDERMARGINY - m_szButtons.cy); rt2.MoveToX(rt1.right + MESSAGEBOX_BUTTONMARGIN); rt2.MoveToY(rect.bottom - MESSAGEBOX_BORDERMARGINY - m_szButtons.cy); rt3.MoveToX(rt2.right + MESSAGEBOX_BUTTONMARGIN); rt3.MoveToY(rect.bottom - MESSAGEBOX_BORDERMARGINY - m_szButtons.cy); GetDlgItem(IDC_MESSAGEBOX_BUTTON1)->MoveWindow(rt1); GetDlgItem(IDC_MESSAGEBOX_BUTTON2)->MoveWindow(rt2); GetDlgItem(IDC_MESSAGEBOX_BUTTON3)->MoveWindow(rt3); } if (m_bShowCheck) { CRect rt; GetDlgItem(IDC_MESSAGEBOX_CHECKBOX)->GetWindowRect(rt); ScreenToClient(rt); rt.MoveToX(rect.left + MESSAGEBOX_BORDERMARGINX/*+ ((rect.Width() - szButtons.cx)/2)*/); rt.MoveToY(rect.bottom - MESSAGEBOX_BORDERMARGINY - szButtons.cy); GetDlgItem(IDC_MESSAGEBOX_CHECKBOX)->MoveWindow(rt); GetDlgItem(IDC_MESSAGEBOX_CHECKBOX)->ShowWindow(SW_SHOW); } else GetDlgItem(IDC_MESSAGEBOX_CHECKBOX)->ShowWindow(SW_HIDE); SetWindowPos(&CWnd::wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE); SetForegroundWindow(); SetFocus(); //Just playing safe if (m_nDefButton == 1) GetDlgItem(IDC_MESSAGEBOX_BUTTON1)->SetFocus(); if (m_nDefButton == 2) GetDlgItem(IDC_MESSAGEBOX_BUTTON2)->SetFocus(); if (m_nDefButton == 3) GetDlgItem(IDC_MESSAGEBOX_BUTTON3)->SetFocus(); return FALSE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }
void CStatisticDlg::DrawVariogram(CDC* pDC, CRect& rc, int band, float& fMean, float& fStandDeviation, std::vector<float>& bandVariogram, drawParam& dp) { if (bandVariogram.empty()) return; // init CPen* pFrameLine = new CPen(PS_SOLID, 1, RGB(0, 0, 0)); CPen* pOldPen = pDC->SelectObject(pFrameLine); CFont* pOldFont = pDC->SelectObject(m_pFont); COLORREF oldColor = pDC->SetTextColor(RGB(0, 0, 0)); //COLORREF oldBkg = pDC->SetBkColor(RGB(255, 255, 255)); CRect rcDraw(rc); rcDraw.DeflateRect(1, 1, 1, 1); CRect rcTemp1, rcTemp2; pDC->DrawText(_T("(lag in pixels)"), &rcTemp1, DT_CALCRECT); pDC->DrawText(_T("(semi-variance 1/2)"), &rcTemp2, DT_CALCRECT); rcDraw.DeflateRect(rcTemp2.Width() + 2, 0, rcTemp1.Width() + 2, 0); LOGFONT lf; m_pFont->GetLogFont(&lf); CRect rcLabel, rcX, rcY, rcChart; // label rcLabel = rcDraw; rcLabel.bottom = rcLabel.top + abs(lf.lfHeight) + 2; CRect rcTemp; pDC->DrawText(_T("00.000"), &rcTemp, DT_CALCRECT); // x rcX = rcDraw; rcX.top = rcDraw.bottom - abs(lf.lfHeight) - 2; // y rcY = rcDraw; rcY.top= rcLabel.bottom + 1; rcY.right = rcY.left + rcTemp.Width();; rcY.bottom = rcX.top - 1; rcX.left = rcY.right + 1; rcLabel.left = rcY.right + 1; // chart rcChart = rcDraw; rcChart.left = rcY.right + 1; rcChart.top = rcLabel.bottom + 1; rcChart.bottom = rcX. top - 1; //pDC->FillSolidRect(rcDraw, RGB(255, 0, 0)); //pDC->FillSolidRect(rcLabel, RGB(255, 0, 0)); //pDC->FillSolidRect(rcX, RGB(0, 255, 0)); //pDC->FillSolidRect(rcY, RGB(0, 0, 255)); //pDC->FillSolidRect(rcChart, RGB(0, 0, 0)); //return; // draw // label CString strLabel; strLabel.Format(_T("band%d --- mean: %.2f, SD: %.2f"), band+1, fMean, fStandDeviation); pDC->DrawText(strLabel, rcLabel, DT_SINGLELINE|DT_CENTER); int y = 0; CRect rcYAxis = rcLabel; CRect rcTemp3; rcYAxis.right = rcY.right - 1; rcYAxis.left = rcYAxis.right - rcTemp2.Width() - 1; pDC->DrawText(_T("(semi-variance "), &rcTemp3, DT_CALCRECT); pDC->DrawText(_T("(semi-variance "), rcYAxis, DT_SINGLELINE|DT_LEFT); rcYAxis.left += rcTemp3.Width(); // change font; pDC->SelectObject(m_pFontSmall); pDC->DrawText(_T("1/2"), &rcTemp3, DT_CALCRECT); pDC->DrawText(_T("1/2"), rcYAxis, DT_SINGLELINE|DT_LEFT); rcYAxis.left += rcTemp3.Width(); // change font pDC->SelectObject(m_pFont); pDC->DrawText(_T(")"), rcYAxis, DT_SINGLELINE|DT_LEFT); // y float f = rcY.Height() / (float)5.0; rcTemp = rcY; rcTemp.bottom = (int)(rcTemp.top + f); for (int i = 0; i < 5; i++) { CString str; str.Format(_T("%.2f"), dp.fMax *(1 - i / 5.0)); pDC->DrawText(str, rcTemp, DT_SINGLELINE|DT_RIGHT); rcTemp.top += f; rcTemp.bottom += f; } // x f = rcX.Width() / (float)5.0; rcTemp = rcX; for (int i = 0; i <= 5; i++) { CString str; str.Format(_T("%d"), (int)(dp.iMax * i / 5.0)); CRect rcMid; pDC->DrawText(str, rcMid, DT_SINGLELINE|DT_CALCRECT); if (i == 0) pDC->DrawText(str, rcX, DT_SINGLELINE|DT_LEFT); else if (i == 5) pDC->DrawText(str, rcX, DT_SINGLELINE|DT_RIGHT); else { CRect rcx = rcTemp; rcx.MoveToX(rcTemp.left - rcMid.Width() / 2); pDC->DrawText(str, rcx, DT_SINGLELINE|DT_LEFT); } rcTemp.left += f; rcTemp.right = rcTemp.left + f + 1; } CRect rcXAxis = rcX; rcXAxis.MoveToX(rcX.right + 10); rcXAxis.right = rcXAxis.right + rcTemp1.Width(); pDC->DrawText(_T("(lag in pixels)"), rcXAxis, DT_SINGLELINE|DT_LEFT); // chart pDC->MoveTo(rcChart.left, rcChart.top); pDC->LineTo(rcChart.left, rcChart.bottom); pDC->LineTo(rcChart.right, rcChart.bottom); int iHeight = rcChart.Height() - 2; int iWidth = rcChart.Width() - 2; int iCount = (int)bandVariogram.size(); CPoint ptStart; ptStart.x = rcChart.left + (int)((float)iWidth / (float)iCount); ptStart.y = rcChart.bottom - (int)(bandVariogram[0] * (float)iHeight / dp.fMax); pDC->MoveTo(ptStart); for (int i = 0; i < iCount; i++) { CPoint pt; pt.x = rcChart.left + (int)((i + 1) * (float)iWidth / (float)iCount); pt.y = rcChart.bottom - (int)(bandVariogram[i] * (float)iHeight / dp.fMax); pDC->LineTo(pt); } // uninit pDC->SelectObject(pOldFont); pDC->SelectObject(pOldPen); pDC->SetTextColor(oldColor); //pDC->SetBkColor(oldBkg); delete pFrameLine; }
void CPlayerSeekBar::SetTimecodeTip(){ CString toolTip; CPoint point , screenPos; GetCursorPos(&point); screenPos = point; ScreenToClient(&point); CRect rcClient; if( !rcClient.PtInRect(point)){ //return; } CRect r = GetChannelRect(); if(r.left <= r.right){ __int64 mPos = 0; if(point.x < r.left) mPos = m_start; else if(point.x >= r.right) mPos = m_stop; else { __int64 w = r.right - r.left; if(m_start < m_stop) mPos = (m_start + ((m_stop - m_start) * (point.x - r.left) + (w/2)) / w); } DVD_HMSF_TIMECODE tcNow = RT2HMSF(mPos); if( tcNow.bHours > 0) toolTip.Format(_T("%02d:%02d:%02d"), tcNow.bHours, tcNow.bMinutes, tcNow.bSeconds); else toolTip.Format(_T("%02d:%02d"), tcNow.bMinutes, tcNow.bSeconds); //AfxMessageBox(toolTip); //if(toolTip.IsEmpty()) // toolTip = _T("Unkown"); if(!toolTip.IsEmpty()){ CMainFrame* pFrame = (CMainFrame*)AfxGetMainWnd(); pFrame->m_tip.m_text = toolTip; CSize tipsize = pFrame->m_tip.CountSize(); point = screenPos; CRect rcTip ( point.x - tipsize.cx/2 , point.y - tipsize.cy - 6,point.x + tipsize.cx/2 , point.y - 6); //SVP_LogMsg5(_T("Tip %d %d %d %d") , rcTip.left,rcTip.top , rcTip.right,rcTip.left); HMONITOR hMonitor = MonitorFromWindow(m_hWnd, MONITOR_DEFAULTTONEAREST); MONITORINFO mi; mi.cbSize = sizeof(MONITORINFO); GetMonitorInfo(hMonitor, &mi); if(rcTip.left < mi.rcWork.left){ rcTip.MoveToX(mi.rcWork.left + 3); }else if(rcTip.right > mi.rcWork.right){ rcTip.MoveToX(mi.rcWork.right - rcTip.Width() - 3); } pFrame->m_tip.MoveWindow( rcTip ); pFrame->m_tip.ShowWindow(SW_SHOWNOACTIVATE); pFrame->m_tip.Invalidate(); } } }