@son1xx2 As I understand it, I need to call these functions when the window size changes. It's right?
void CUITextInputBox::SetSize(int iWidth, int iHeight)
{
if(iWidth == 0 || iHeight == 0) return;
//if(iWidth == m_iWidth && iHeight == m_iHeight) return;
m_iWidth = iWidth;
m_iHeight = iHeight;
if (m_hMemDC != NULL)
{
DeleteDC(m_hMemDC);
m_hMemDC = NULL;
m_pFontBuffer = NULL;
}
if (m_hBitmap != NULL)
{
DeleteObject(m_hBitmap);
m_hBitmap = NULL;
}
HDC hDC = GetDC(m_hParentWnd);
BITMAPINFO * DIB_INFO;
DIB_INFO = (BITMAPINFO*)new BYTE[sizeof(BITMAPINFOHEADER) + sizeof(PALETTEENTRY) * 256];
memset( DIB_INFO, 0x00, sizeof(BITMAPINFOHEADER) );
DIB_INFO->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
DIB_INFO->bmiHeader.biWidth = iWidth*g_fScreenRate_x;
DIB_INFO->bmiHeader.biHeight = -(iHeight*g_fScreenRate_y);
DIB_INFO->bmiHeader.biPlanes = 1;
DIB_INFO->bmiHeader.biBitCount = 24;
DIB_INFO->bmiHeader.biCompression = BI_RGB;
m_hBitmap = CreateDIBSection(hDC, DIB_INFO, DIB_RGB_COLORS, (void**)&m_pFontBuffer, NULL, NULL);
m_hMemDC = CreateCompatibleDC(hDC);
SelectObject(m_hMemDC, m_hBitmap);
SetFont(g_hFont);
delete [] DIB_INFO;
g_ConsoleDebug->Write(MCD_NORMAL, "HWND:%d", m_hEditWnd);
if(!m_hMemDC || !m_hBitmap)
{
if(m_hEditWnd != NULL)
{
DestroyWindow(m_hEditWnd);
m_hEditWnd = NULL;
}
if (m_hMemDC != NULL)
{
DeleteDC(m_hMemDC);
m_hMemDC = NULL;
m_pFontBuffer = NULL;
}
if (m_hBitmap != NULL)
{
DeleteObject(m_hBitmap);
m_hBitmap = NULL;
}
return;
}
if (m_hEditWnd != NULL)
{
SetWindowPos(m_hEditWnd, 0, 0, 0, iWidth*g_fScreenRate_x, iHeight*g_fScreenRate_y, SWP_NOMOVE | SWP_NOZORDER);
SendMessageW(m_hEditWnd, EM_SETSEL, (WPARAM)0, (LPARAM)0);
}
}
bool CUIRenderTextOriginal::Create(HDC hDC)
{
BITMAPINFO* DIB_INFO;
DIB_INFO = (BITMAPINFO*)new BYTE[ sizeof(BITMAPINFOHEADER) + sizeof(PALETTEENTRY) * 256 ];
memset( DIB_INFO, 0x00, sizeof(BITMAPINFOHEADER) );
DIB_INFO->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
DIB_INFO->bmiHeader.biWidth = 640*g_fScreenRate_x; //. 640
DIB_INFO->bmiHeader.biHeight = -(480*g_fScreenRate_y); //. 480
DIB_INFO->bmiHeader.biPlanes = 1;
DIB_INFO->bmiHeader.biBitCount = 24;
DIB_INFO->bmiHeader.biCompression = BI_RGB;
m_hBitmap = CreateDIBSection(hDC, DIB_INFO, DIB_RGB_COLORS, (void**)&m_pFontBuffer, NULL, NULL);
m_hFontDC = CreateCompatibleDC(hDC);
SelectObject(m_hFontDC, m_hBitmap);
SelectObject(m_hFontDC, g_hFont);
m_dwBackColor = 0; //. Default Background Color;
m_dwTextColor = 0xFFFFFFFF; //. Default Text Color
delete [] DIB_INFO;
if(NULL == m_hFontDC || NULL == m_hBitmap)
{
Release();
return false;
}
return true;
}