msgBox.cpp
上传用户:szsg028
上传日期:2022-08-01
资源大小:12k
文件大小:4k
源码类别:

GDI/图象编程

开发平台:

Visual C++

  1. #include "msgBox.h"
  2. msgBox::msgBox( court* cancha, std::string text, std::string prompt )
  3. {
  4. m_Cancha = cancha;
  5. m_sText =  text;
  6. m_sPrompt = prompt;
  7. m_fontText = CreateFont(17, 0, 0, 0, FW_BOLD , 0, 0, 0, 0, 0, 0, 0, 0, "Courier");
  8. m_fontPrompt = CreateFont(12, 0, 0, 0, FW_NORMAL , 0, 0, 0, 0, 0, 0, 0, 0, "Courier");
  9. m_brushFondoMsg = (HBRUSH)CreateSolidBrush( RGB(255, 141, 28) );
  10. }
  11. msgBox::~msgBox()
  12. {
  13. DeleteObject(m_fontText);
  14. DeleteObject(m_fontPrompt);
  15. DeleteObject(m_brushFondoMsg);
  16. }
  17. msgBox::msgBox()
  18. {
  19. m_Cancha = 0;
  20. m_sText =  "";
  21. m_sPrompt = "";
  22. m_fontText = CreateFont(17, 0, 0, 0, FW_BOLD , 0, 0, 0, 0, 0, 0, 0, 0, "Courier");
  23. m_fontPrompt = CreateFont(12, 0, 0, 0, FW_NORMAL , 0, 0, 0, 0, 0, 0, 0, 0, "Courier");
  24. m_brushFondoMsg = (HBRUSH)CreateSolidBrush( RGB(255, 141, 28) );
  25. }
  26. void msgBox::draw(HDC hDC)
  27. {
  28. HBRUSH hOldBrush;
  29. HFONT hOldFont;
  30. COLORREF cOldColor;
  31. int iWidth = 300;  //valor por defecto
  32. int iHeight = 100; //valor por defecto
  33. int widthTextoLargo = 0;
  34. int widthTextoCorto = 0;
  35. SIZE medidas;
  36. //si hay mensaje, dibujo el mensaje
  37. SetMapMode(hDC, MM_TEXT);
  38. //calculo tama駉 del texto
  39. hOldFont = (HFONT)SelectObject(hDC, m_fontText);
  40. int MaximoAnchoRecuadro = 300;
  41. GetTextExtentPoint32(hDC, m_sText.c_str(), m_sText.size(), &medidas);
  42. widthTextoLargo = medidas.cx;
  43. //calculo tama駉 del prompt
  44. SelectObject(hDC, m_fontPrompt);
  45. GetTextExtentPoint32( hDC, m_sPrompt.c_str(), m_sPrompt.size(), &medidas );
  46. widthTextoCorto = medidas.cx;
  47. //recalculo el ancho del mensaje
  48. if (widthTextoCorto < widthTextoLargo)
  49. iWidth = (widthTextoLargo + 30);
  50. else
  51. iWidth = (widthTextoCorto + 30);
  52. //dibujo el cuadro del fondo
  53. hOldBrush = (HBRUSH)SelectObject(hDC, m_brushFondoMsg);
  54. 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));
  55. //dibujo el TEXTO
  56. cOldColor = SetBkColor(hDC, RGB(255, 141, 28));
  57. SetTextColor(hDC, RGB(255, 255, 255));
  58. SetTextAlign(hDC, TA_CENTER | TA_BASELINE);
  59. SelectObject(hDC, m_fontText);
  60. TextOut(hDC, ((m_Cancha->getWidth())/2), ((m_Cancha->getHeight())/2 - 15), m_sText.c_str(), m_sText.size()); 
  61. //dibujo el PROMPT
  62. SelectObject(hDC, m_fontPrompt);
  63. TextOut(hDC, ((m_Cancha->getWidth())/2), ((m_Cancha->getHeight())/2 + 15), m_sPrompt.c_str(), m_sPrompt.size()); 
  64. //restauro a los objetos originales y borro los objetos que ya no uso
  65. SelectObject(hDC, hOldBrush);
  66. SetBkColor(hDC, cOldColor);
  67. }
  68. void msgBox::setCancha(court* cancha)
  69. {
  70. m_Cancha = cancha;
  71. }
  72. msgBox& msgBox::operator=(const msgBox& rhs)
  73. {
  74. LOGBRUSH logBrush;
  75. LOGFONT logFont1;
  76. LOGFONT logFont2;
  77. m_Cancha = rhs.m_Cancha;
  78. m_sText = rhs.m_sText;
  79. m_sPrompt = rhs.m_sPrompt;
  80. m_fontText = rhs.m_fontText;
  81. m_fontPrompt  = rhs.m_fontPrompt;
  82. m_brushFondoMsg = rhs.m_brushFondoMsg;
  83. GetObject(rhs.m_brushFondoMsg, sizeof(LOGBRUSH), &logBrush);
  84. m_brushFondoMsg = CreateBrushIndirect(&logBrush);
  85. GetObject(rhs.m_fontText, sizeof(LOGFONT), &logFont1);
  86. m_fontText = CreateFontIndirect(&logFont1);
  87. GetObject(rhs.m_fontPrompt, sizeof(LOGFONT), &logFont2);
  88. m_fontPrompt = CreateFontIndirect(&logFont2);
  89. return *this;
  90. }
  91. msgBox::msgBox(const msgBox& rhs)
  92. {
  93. LOGBRUSH logBrush;
  94. LOGFONT logFont1;
  95. LOGFONT logFont2;
  96. m_Cancha = rhs.m_Cancha;
  97. m_sText = rhs.m_sText;
  98. m_sPrompt = rhs.m_sPrompt;
  99. m_fontText = rhs.m_fontText;
  100. m_fontPrompt = rhs.m_fontPrompt;
  101. GetObject(rhs.m_brushFondoMsg, sizeof(LOGBRUSH), &logBrush);
  102. m_brushFondoMsg = CreateBrushIndirect(&logBrush);
  103. GetObject(rhs.m_fontText, sizeof(LOGFONT), &logFont1);
  104. m_fontText = CreateFontIndirect(&logFont1);
  105. GetObject(rhs.m_fontPrompt, sizeof(LOGFONT), &logFont2);
  106. m_fontPrompt = CreateFontIndirect(&logFont2);
  107. }