msgBox.cpp
资源名称:pong.rar [点击查看]
上传用户:szsg028
上传日期:2022-08-01
资源大小:12k
文件大小:4k
源码类别:
GDI/图象编程
开发平台:
Visual C++
- #include "msgBox.h"
- msgBox::msgBox( court* cancha, std::string text, std::string prompt )
- {
- m_Cancha = cancha;
- m_sText = text;
- m_sPrompt = prompt;
- m_fontText = CreateFont(17, 0, 0, 0, FW_BOLD , 0, 0, 0, 0, 0, 0, 0, 0, "Courier");
- m_fontPrompt = CreateFont(12, 0, 0, 0, FW_NORMAL , 0, 0, 0, 0, 0, 0, 0, 0, "Courier");
- m_brushFondoMsg = (HBRUSH)CreateSolidBrush( RGB(255, 141, 28) );
- }
- msgBox::~msgBox()
- {
- DeleteObject(m_fontText);
- DeleteObject(m_fontPrompt);
- DeleteObject(m_brushFondoMsg);
- }
- msgBox::msgBox()
- {
- m_Cancha = 0;
- m_sText = "";
- m_sPrompt = "";
- m_fontText = CreateFont(17, 0, 0, 0, FW_BOLD , 0, 0, 0, 0, 0, 0, 0, 0, "Courier");
- m_fontPrompt = CreateFont(12, 0, 0, 0, FW_NORMAL , 0, 0, 0, 0, 0, 0, 0, 0, "Courier");
- m_brushFondoMsg = (HBRUSH)CreateSolidBrush( RGB(255, 141, 28) );
- }
- void msgBox::draw(HDC hDC)
- {
- HBRUSH hOldBrush;
- HFONT hOldFont;
- COLORREF cOldColor;
- int iWidth = 300; //valor por defecto
- int iHeight = 100; //valor por defecto
- int widthTextoLargo = 0;
- int widthTextoCorto = 0;
- SIZE medidas;
- //si hay mensaje, dibujo el mensaje
- SetMapMode(hDC, MM_TEXT);
- //calculo tama駉 del texto
- hOldFont = (HFONT)SelectObject(hDC, m_fontText);
- int MaximoAnchoRecuadro = 300;
- GetTextExtentPoint32(hDC, m_sText.c_str(), m_sText.size(), &medidas);
- widthTextoLargo = medidas.cx;
- //calculo tama駉 del prompt
- SelectObject(hDC, m_fontPrompt);
- GetTextExtentPoint32( hDC, m_sPrompt.c_str(), m_sPrompt.size(), &medidas );
- widthTextoCorto = medidas.cx;
- //recalculo el ancho del mensaje
- if (widthTextoCorto < widthTextoLargo)
- iWidth = (widthTextoLargo + 30);
- else
- iWidth = (widthTextoCorto + 30);
- //dibujo el cuadro del fondo
- hOldBrush = (HBRUSH)SelectObject(hDC, m_brushFondoMsg);
- Rectangle(hDC, (int)((m_Cancha->getWidth() - iWidth)/2), (int)((m_Cancha->getHeight() - iHeight)/2), (int)((m_Cancha->getWidth() - iWidth)/2 + iWidth), (int)((m_Cancha->getHeight() - iHeight)/2 + iHeight));
- //dibujo el TEXTO
- cOldColor = SetBkColor(hDC, RGB(255, 141, 28));
- SetTextColor(hDC, RGB(255, 255, 255));
- SetTextAlign(hDC, TA_CENTER | TA_BASELINE);
- SelectObject(hDC, m_fontText);
- TextOut(hDC, ((m_Cancha->getWidth())/2), ((m_Cancha->getHeight())/2 - 15), m_sText.c_str(), m_sText.size());
- //dibujo el PROMPT
- SelectObject(hDC, m_fontPrompt);
- TextOut(hDC, ((m_Cancha->getWidth())/2), ((m_Cancha->getHeight())/2 + 15), m_sPrompt.c_str(), m_sPrompt.size());
- //restauro a los objetos originales y borro los objetos que ya no uso
- SelectObject(hDC, hOldBrush);
- SetBkColor(hDC, cOldColor);
- }
- void msgBox::setCancha(court* cancha)
- {
- m_Cancha = cancha;
- }
- msgBox& msgBox::operator=(const msgBox& rhs)
- {
- LOGBRUSH logBrush;
- LOGFONT logFont1;
- LOGFONT logFont2;
- m_Cancha = rhs.m_Cancha;
- m_sText = rhs.m_sText;
- m_sPrompt = rhs.m_sPrompt;
- m_fontText = rhs.m_fontText;
- m_fontPrompt = rhs.m_fontPrompt;
- m_brushFondoMsg = rhs.m_brushFondoMsg;
- GetObject(rhs.m_brushFondoMsg, sizeof(LOGBRUSH), &logBrush);
- m_brushFondoMsg = CreateBrushIndirect(&logBrush);
- GetObject(rhs.m_fontText, sizeof(LOGFONT), &logFont1);
- m_fontText = CreateFontIndirect(&logFont1);
- GetObject(rhs.m_fontPrompt, sizeof(LOGFONT), &logFont2);
- m_fontPrompt = CreateFontIndirect(&logFont2);
- return *this;
- }
- msgBox::msgBox(const msgBox& rhs)
- {
- LOGBRUSH logBrush;
- LOGFONT logFont1;
- LOGFONT logFont2;
- m_Cancha = rhs.m_Cancha;
- m_sText = rhs.m_sText;
- m_sPrompt = rhs.m_sPrompt;
- m_fontText = rhs.m_fontText;
- m_fontPrompt = rhs.m_fontPrompt;
- GetObject(rhs.m_brushFondoMsg, sizeof(LOGBRUSH), &logBrush);
- m_brushFondoMsg = CreateBrushIndirect(&logBrush);
- GetObject(rhs.m_fontText, sizeof(LOGFONT), &logFont1);
- m_fontText = CreateFontIndirect(&logFont1);
- GetObject(rhs.m_fontPrompt, sizeof(LOGFONT), &logFont2);
- m_fontPrompt = CreateFontIndirect(&logFont2);
- }