我有一個需要重畫多行文本的窗口,文本可以是可變長度的。 那麼如何去做這件事?在窗口中垂直居中多行文本,純winapi和C++
這是我現在所擁有的,它不起作用。
RECT rc;
GetWindowRect (hwnd, &rc);
int rectHeight = DrawText(hMemDc, text.c_str(), text.size(), &rc, DT_CALCRECT); // Get formating rectangle height
int windowHight = rc.bottom - rc.top;
int windowWidth = rc.right - rc.left;
int yTop = rc.top + ( (windowHight - rectHeight)/2 );
int yBottom = yTop + rectHeight;
int xLeft = rc.left + 20;
int xRight = rc.right - 20;
rc.top = yTop;
rc.bottom = yBottom;
rc.left = xLeft;
rc.right = xRight;
DrawText(hMemDc, text.c_str(), text.size(), &rc, DT_LEFT | DT_WORDBREAK);
有一個'DT_VCENTER'標誌。 – chris
@chris它僅適用於單行。 – StudentX
您需要通過第一次使用'DT_CALCRECT'得到的矩形,然後將計算出的矩形居中放置在窗口中並正常繪製。 –