DlgAfxMessage.cpp
资源名称:GGBT.rar [点击查看]
上传用户:lds876
上传日期:2013-05-25
资源大小:567k
文件大小:8k
源码类别:
P2P编程
开发平台:
Visual C++
- // DlgAfxMessage.cpp : implementation file
- //
- #include "stdafx.h"
- #include "testbt.h"
- #include "DlgAfxMessage.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- int AfxMessageBoxEx(LPCTSTR lpszText, UINT nType)
- {
- CDlgAfxMessage dlg(lpszText, nType);
- return dlg.DoModal();
- }
- /////////////////////////////////////////////////////////////////////////////
- // CDlgAfxMessage dialog
- CDlgAfxMessage::CDlgAfxMessage(LPCTSTR lpszText, UINT nType, CWnd* pParent /*=NULL*/)
- : CDialog(CDlgAfxMessage::IDD, pParent)
- {
- //{{AFX_DATA_INIT(CDlgAfxMessage)
- // NOTE: the ClassWizard will add member initialization here
- //}}AFX_DATA_INIT
- m_strText = lpszText;
- m_nType = nType;
- m_cyIcon = m_cxIcon = 32;
- m_hIcon = 0;
- }
- void CDlgAfxMessage::DoDataExchange(CDataExchange* pDX)
- {
- CDialog::DoDataExchange(pDX);
- //{{AFX_DATA_MAP(CDlgAfxMessage)
- DDX_Control(pDX, IDNO, m_btnNo);
- DDX_Control(pDX, IDCANCEL, m_btnCancel);
- DDX_Control(pDX, IDOK, m_btnOK);
- //}}AFX_DATA_MAP
- }
- BEGIN_MESSAGE_MAP(CDlgAfxMessage, CDialog)
- //{{AFX_MSG_MAP(CDlgAfxMessage)
- ON_WM_PAINT()
- ON_BN_CLICKED(IDNO, OnNo)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- /////////////////////////////////////////////////////////////////////////////
- // CDlgAfxMessage message handlers
- BOOL CDlgAfxMessage::OnInitDialog()
- {
- CDialog::OnInitDialog();
- m_font.CreateFont(-13, 0, 0, 0, 400, 0, 0, 0, 134, 0, 0, 0, 2, "宋体");
- //
- // Create BitmapList
- //
- HBITMAP hbm = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),
- MAKEINTRESOURCE(IDB_BITMAP_DLG_ICONS),
- IMAGE_BITMAP,
- 0,0, // cx,cy
- LR_CREATEDIBSECTION); // | LR_LOADMAP3DCOLORS );
- CBitmap bm;
- bm.Attach(hbm);
- m_ctlImage.Create(16,15, ILC_COLOR8|ILC_MASK, 3, 4);
- m_ctlImage.SetBkColor(RGB(255, 255,255));
- m_ctlImage.Add(&bm, (COLORREF)RGB(255,0,255));
- //
- // set ok cancel button image.
- //
- // m_btnBrowseDir.Create(m_ctlImage.ExtractIcon(2), true, "选择保存路径");
- m_btnOK.Create(m_ctlImage.ExtractIcon(0));
- m_btnCancel.Create(m_ctlImage.ExtractIcon(1));
- m_btnNo.Create(m_ctlImage.ExtractIcon(1));
- //
- // Set dialog text
- //
- SetWindowText(AfxGetApp()->m_pszAppName);
- //
- // compute the size
- //
- int iButtonWidth = 100, iButtonHeight = 30;
- int iImageWidth = m_cyIcon + 20;
- int iEdge = 10;
- int iWidth = 200, iHeight = 0;
- const int iCaptionHeight = ::GetSystemMetrics(SM_CYCAPTION);
- if ((m_nType&0xf) == MB_OK)
- {
- m_hIcon = AfxGetApp()->LoadStandardIcon(IDI_EXCLAMATION);
- iWidth = iButtonWidth + iEdge * 10;
- }
- else if ((m_nType&0xf) == MB_OKCANCEL)
- {
- m_hIcon = AfxGetApp()->LoadStandardIcon(IDI_QUESTION);
- iWidth = iButtonWidth * 2 + iEdge * 12;
- }
- else if ((m_nType&0xf) == MB_YESNO)
- {
- m_hIcon = AfxGetApp()->LoadStandardIcon(IDI_QUESTION);
- iWidth = iButtonWidth * 2 + iEdge * 12;
- }
- else if ((m_nType&0xf) == MB_YESNOCANCEL)
- {
- m_hIcon = AfxGetApp()->LoadStandardIcon(IDI_QUESTION);
- iWidth = iButtonWidth * 3 + iEdge * 13;
- }
- else
- {
- ASSERT(FALSE);
- return FALSE;
- }
- //
- // compute the image rect.
- //
- m_rcImage.top = iEdge;
- m_rcImage.bottom = m_rcImage.top + m_cyIcon;
- m_rcImage.left = iEdge;
- m_rcImage.right = m_rcImage.left + m_cxIcon;
- //
- // compute the text rect.
- //
- CClientDC dc(this);
- // select font.
- CFont* poldFont = dc.SelectObject(&m_font);
- int iTextWidth = 0;
- CString strTemp = m_strText;
- CSize sizeTextExtent = CSize(0, 0);
- while (!strTemp.IsEmpty())
- {
- int iRet = strTemp.Find("rn");
- if (iRet == -1)
- {
- sizeTextExtent = dc.GetTextExtent(strTemp);
- if (iTextWidth < sizeTextExtent.cx)
- iTextWidth = sizeTextExtent.cx;
- break;
- }
- CString strLeft = strTemp.Left(iRet);
- strTemp = strTemp.Right(strTemp.GetLength() - iRet - 2);
- sizeTextExtent = dc.GetTextExtent(strLeft);
- if (iTextWidth < sizeTextExtent.cx)
- iTextWidth = sizeTextExtent.cx;
- }
- if (iTextWidth > (iWidth - iImageWidth - iEdge * 3))
- iWidth = iTextWidth + iImageWidth + iEdge * 3;
- ASSERT(iWidth > iTextWidth);
- m_rcText.left = iImageWidth + iEdge * 2;
- m_rcText.top = iEdge * 2;
- m_rcText.right = m_rcText.left + iTextWidth;
- m_rcText.bottom = m_rcText.top + sizeTextExtent.cy;
- dc.DrawText(m_strText, m_rcText, DT_LEFT|DT_VCENTER|DT_CALCRECT);
- // realease font.
- dc.SelectObject(poldFont);
- //
- // compute button rect.
- //
- CRect rcButton;
- rcButton.top = m_rcText.bottom + 20;
- rcButton.bottom = rcButton.top + iButtonHeight;
- if ((m_nType&0xf) == MB_OK)
- {
- rcButton.left = (iWidth - iButtonWidth) / 2 ;
- rcButton.right = rcButton.left + iButtonWidth;
- GetDlgItem(IDOK)->MoveWindow(rcButton);
- GetDlgItem(IDCANCEL)->ShowWindow(false);
- GetDlgItem(IDNO)->ShowWindow(false);
- }
- else if ((m_nType&0xf) == MB_YESNO)
- {
- rcButton.left = iWidth / 2 - iButtonWidth - iEdge;
- rcButton.right = rcButton.left + iButtonWidth;
- GetDlgItem(IDOK)->MoveWindow(rcButton);
- GetDlgItem(IDOK)->SetWindowText("是");
- rcButton.OffsetRect(iButtonWidth + iEdge*2, 0);
- GetDlgItem(IDCANCEL)->MoveWindow(rcButton);
- GetDlgItem(IDCANCEL)->SetWindowText("否");
- GetDlgItem(IDNO)->ShowWindow(false);
- }
- else if ((m_nType&0xf) == MB_OKCANCEL)
- {
- rcButton.left = iWidth / 2 - iButtonWidth - iEdge;
- rcButton.right = rcButton.left + iButtonWidth;
- GetDlgItem(IDOK)->MoveWindow(rcButton);
- rcButton.OffsetRect(iButtonWidth + iEdge*2, 0);
- GetDlgItem(IDCANCEL)->MoveWindow(rcButton);
- GetDlgItem(IDNO)->ShowWindow(false);
- }
- else if ((m_nType&0xf) == MB_YESNOCANCEL)
- {
- rcButton.left = iWidth / 2 - iButtonWidth - iEdge * 2 - iButtonWidth/2;
- rcButton.right = rcButton.left + iButtonWidth;
- GetDlgItem(IDOK)->MoveWindow(rcButton);
- GetDlgItem(IDOK)->SetWindowText("是(&Y)");
- rcButton.OffsetRect(iButtonWidth + iEdge*2, 0);
- GetDlgItem(IDCANCEL)->MoveWindow(rcButton);
- GetDlgItem(IDCANCEL)->SetWindowText("否(&N)");
- rcButton.OffsetRect(iButtonWidth + iEdge*2, 0);
- GetDlgItem(IDNO)->MoveWindow(rcButton);
- GetDlgItem(IDNO)->SetWindowText("取消");
- }
- else
- {
- ASSERT(FALSE);
- }
- iHeight = rcButton.bottom + 20 + iCaptionHeight;
- //
- // position the window pos.
- //
- CPoint pt(0, 0);
- if (AfxGetMainWnd())
- {
- CRect rc;
- AfxGetMainWnd()->GetWindowRect(rc);
- pt.x = rc.left + rc.Width()/2 - iWidth/2;
- pt.y = rc.top + rc.Height()/2 - iHeight/2;
- }
- MoveWindow(pt.x, pt.y, iWidth, iHeight);
- if (m_nType & MB_DEFBUTTON2 )
- {
- GetDlgItem(IDCANCEL)->SetFocus();
- }
- else
- {
- GetDlgItem(IDOK)->SetFocus();
- }
- return FALSE;
- }
- void CDlgAfxMessage::OnOK()
- {
- if (!UpdateData(TRUE))
- {
- TRACE0("UpdateData failed during dialog termination.n");
- // the UpdateData routine will set focus to correct item
- return;
- }
- if ((m_nType&0xf) == MB_YESNO)
- {
- EndDialog(IDYES);
- }
- else if ((m_nType&0xf) == MB_YESNOCANCEL)
- {
- EndDialog(IDYES);
- }
- else
- {
- ASSERT(((m_nType&0xf) == MB_OK) || ((m_nType&0xf) == MB_OKCANCEL) );
- EndDialog(IDOK);
- }
- }
- void CDlgAfxMessage::OnCancel()
- {
- if ((m_nType&0xf) == MB_YESNO)
- {
- EndDialog(IDNO);
- }
- else if ((m_nType&0xf) == MB_YESNOCANCEL)
- {
- EndDialog(IDNO);
- }
- else
- {
- ASSERT((m_nType&0xf) == MB_OKCANCEL);
- EndDialog(IDCANCEL);
- }
- }
- void CDlgAfxMessage::OnNo()
- {
- ASSERT((m_nType&0xf) == MB_YESNOCANCEL);
- EndDialog(IDCANCEL);
- }
- void CDlgAfxMessage::OnPaint()
- {
- if (!m_hIcon) return;
- CPaintDC dc(this); // device context for painting
- CFont* poldFont = dc.SelectObject(&m_font);
- dc.SetBkMode(TRANSPARENT);
- int iRet = dc.DrawText(m_strText, m_rcText, DT_LEFT | DT_VCENTER);
- dc.SelectObject(poldFont);
- DrawTheIcon(&dc, m_rcImage);
- }
- void CDlgAfxMessage::DrawTheIcon(CDC* pDC, RECT* rcItem)
- {
- if (!m_hIcon)
- {
- ASSERT(FALSE);
- return;
- }
- CRect iconRect = rcItem;
- iconRect.left += ((iconRect.Width() - m_cxIcon)/2);
- // Center the icon vertically
- iconRect.top += ((iconRect.Height() - m_cyIcon)/2);
- iconRect.right = iconRect.left + m_cxIcon;
- iconRect.bottom += iconRect.bottom + m_cyIcon;
- pDC->DrawState(iconRect.TopLeft(),
- iconRect.Size(),
- m_hIcon,
- DSS_NORMAL,
- // (IsDisabled ? DSS_DISABLED : DSS_NORMAL),
- (CBrush*)NULL);
- } // End of DrawTheIcon