Win32:Editbox + Multiline + Wrap =获取文本高度?

时间:2014-05-04 22:46:37

标签: winapi textbox multiline

我试图将一些只读文本框堆叠在一起,以制作一个可以剪切和粘贴的长滚动列表。

所以我创建了一个具有巨大高度的简单文本框....

HWND aTextBox=CreateWindow("Edit",theText.c(), WS_CHILD|WS_VISIBLE|ES_MULTILINE|ES_AUTOVSCROLL|ES_READONLY, 10, 10,aWidth-20,9999, aWindow, NULL, NULL, NULL);
SendMessage(aTextBox, WM_SETFONT, (WPARAM)gTextFont, 0);

...现在我想弄清楚文本的高度,以便我可以调整文本框的高度以适应。  我现在正在这样做:

HDC aHDC=GetDC(aTextBox);
RECT aRect;
DrawText(aHDC,theText.c(),theText.Len(),&aRect,DT_CALCRECT|DT_LEFT);

// Now size the textbox...
SetWindowPos(aTextBox,NULL,0,0,aWidth-20,aRect.bottom-aRect.top,SWP_NOMOVE);

我得到了一些似乎很接近的奇怪结果......但并不准确。有些太大,有些太小,有些是现货。

任何人都知道我在这里做错了吗?

0 个答案:

没有答案