static void test_EM_FORMATRANGE(void)
{
- int i, tpp_x, tpp_y;
+ int r, i, tpp_x, tpp_y;
HDC hdc;
HWND hwndRichEdit = new_richedit(NULL);
+ FORMATRANGE fr;
static const struct {
const char *string; /* The string */
int first; /* First 'pagebreak', 0 for don't care */
tpp_x = 1440 / GetDeviceCaps(hdc, LOGPIXELSX);
tpp_y = 1440 / GetDeviceCaps(hdc, LOGPIXELSY);
+ /* Test the simple case where all the text fits in the page rect. */
+ SendMessage(hwndRichEdit, WM_SETTEXT, 0, (LPARAM)"a");
+ fr.hdc = fr.hdcTarget = hdc;
+ fr.rc.top = fr.rcPage.top = fr.rc.left = fr.rcPage.left = 0;
+ fr.rc.right = fr.rcPage.right = 500 * tpp_x;
+ fr.rc.bottom = fr.rcPage.bottom = 500 * tpp_y;
+ fr.chrg.cpMin = 0;
+ fr.chrg.cpMax = -1;
+ r = SendMessage(hwndRichEdit, EM_FORMATRANGE, FALSE, (LPARAM)&fr);
+ todo_wine ok(r == 2, "r=%d expected r=2\n", r);
+
+ SendMessage(hwndRichEdit, WM_SETTEXT, 0, (LPARAM)"ab");
+ fr.rc.bottom = fr.rcPage.bottom;
+ r = SendMessage(hwndRichEdit, EM_FORMATRANGE, FALSE, (LPARAM)&fr);
+ todo_wine ok(r == 3, "r=%d expected r=3\n", r);
+
SendMessage(hwndRichEdit, EM_FORMATRANGE, FALSE, 0);
for (i = 0; i < sizeof(fmtstrings)/sizeof(fmtstrings[0]); i++)
{
- FORMATRANGE fr;
GETTEXTLENGTHEX gtl;
SIZE stringsize;
- int r, len;
+ int len;
SendMessage(hwndRichEdit, WM_SETTEXT, 0, (LPARAM) fmtstrings[i].string);
ret = SendMessageA(hwnd, EM_GETTEXTLENGTHEX, (WPARAM)>l, 0);
ok(ret == 6, "ret %d\n",ret);
+ /* Unicode/NUMCHARS/NUMBYTES */
+ SendMessage(hwnd, WM_SETTEXT, 0, (LPARAM) test_string_2);
+
+ gtl.flags = GTL_DEFAULT;
+ gtl.codepage = 1200;
+ ret = SendMessage(hwnd, EM_GETTEXTLENGTHEX, (WPARAM) >l, 0);
+ ok(ret == lstrlen(test_string_2),
+ "GTL_DEFAULT gave %i, expected %i\n", ret, lstrlen(test_string_2));
+
+ gtl.flags = GTL_NUMCHARS;
+ gtl.codepage = 1200;
+ ret = SendMessage(hwnd, EM_GETTEXTLENGTHEX, (WPARAM) >l, 0);
+ ok(ret == lstrlen(test_string_2),
+ "GTL_NUMCHARS gave %i, expected %i\n", ret, lstrlen(test_string_2));
+
+ gtl.flags = GTL_NUMBYTES;
+ gtl.codepage = 1200;
+ ret = SendMessage(hwnd, EM_GETTEXTLENGTHEX, (WPARAM) >l, 0);
+ ok(ret == lstrlen(test_string_2)*2,
+ "GTL_NUMBYTES gave %i, expected %i\n", ret, lstrlen(test_string_2)*2);
+
+ gtl.flags = GTL_PRECISE;
+ gtl.codepage = 1200;
+ ret = SendMessage(hwnd, EM_GETTEXTLENGTHEX, (WPARAM) >l, 0);
+ ok(ret == lstrlen(test_string_2)*2,
+ "GTL_PRECISE gave %i, expected %i\n", ret, lstrlen(test_string_2)*2);
+
+ gtl.flags = GTL_NUMCHARS | GTL_PRECISE;
+ gtl.codepage = 1200;
+ ret = SendMessage(hwnd, EM_GETTEXTLENGTHEX, (WPARAM) >l, 0);
+ ok(ret == lstrlen(test_string_2),
+ "GTL_NUMCHAR | GTL_PRECISE gave %i, expected %i\n", ret, lstrlen(test_string_2));
+
+ gtl.flags = GTL_NUMCHARS | GTL_NUMBYTES;
+ gtl.codepage = 1200;
+ ret = SendMessage(hwnd, EM_GETTEXTLENGTHEX, (WPARAM) >l, 0);
+ ok(ret == E_INVALIDARG,
+ "GTL_NUMCHARS | GTL_NUMBYTES gave %i, expected %i\n", ret, E_INVALIDARG);
+
DestroyWindow(hwnd);
}