Example #1
1
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);
	}
}
Example #2
0
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 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);
	}
Example #4
0
//-------------------------------------
/// ダウンロードマネージャーを表示する
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);
		}
	}
}
Example #5
0
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);
	}
}
Example #6
0
	void CUnit::OnShowSelectedLine(){
		//畫圓圈
		CDC *pDC = CDDraw::GetBackCDC();			// 取得 Back Plain 的 CDC

		CPen penBlack;
		CPen penWhite;
		CPen* pOldPen;
		penBlack.CreatePen(PS_SOLID,1,RGB(0,0,0));
		penWhite.CreatePen(PS_SOLID,1,RGB(255,255,255));
		pOldPen = pDC->SelectObject(&penBlack);
		CRect rect;
		CPoint screenPoint(CConvert::GetScreenPointByMapPoint(mapPoint));
		rect.SetRect(	screenPoint.x-bmp->Width()/2-10,
						screenPoint.y-25,
						screenPoint.x+bmp->Width()/2+10,
						screenPoint.y+5);
		pDC->Arc(rect,rect.TopLeft(),rect.TopLeft());
		rect.MoveToY(rect.top+1);
		pDC->SelectObject(&penWhite);
		pDC->Arc(rect,rect.TopLeft(),rect.TopLeft());
		pDC->SelectObject(pOldPen);						//
		CDDraw::ReleaseBackCDC();					// 放掉 Back Plain 的 CDC
	}
Example #7
0
void CGraphEditor::DrawRange(CDC *pDC, int Max, int Min) const
{
	CFont *pOldFont = pDC->SelectObject(m_pSmallFont);
	CString line;

	pDC->FillSolidRect(m_ClientRect.left, m_GraphRect.top, m_GraphRect.left, m_GraphRect.bottom, 0x00);

	pDC->SetBkMode(OPAQUE);
	pDC->SetTextColor(0xFFFFFF);
	pDC->SetBkColor(pDC->GetPixel(0, 0));	// Ugly but works

	CRect textRect(2, 0, GRAPH_LEFT - 5, 10);
	CRect topRect = textRect, bottomRect = textRect;
	
	topRect.MoveToY(m_GraphRect.top - 3);
	line.Format(_T("%02i"), Max);
	pDC->DrawText(line, topRect, DT_RIGHT);

	bottomRect.MoveToY(m_GraphRect.bottom - 13);
	line.Format(_T("%02i"), Min);
	pDC->DrawText(line, bottomRect, DT_RIGHT);

	pDC->SelectObject(pOldFont);
}
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;
}
Example #10
0
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
}