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 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 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 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 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 }
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; }
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 }