static void test_TxDraw(void) { ITextServices *txtserv; ITextHost *host; HDC tmphdc = GetDC(NULL); DWORD dwAspect = DVASPECT_CONTENT; HDC hicTargetDev = NULL; /* Means "default" device */ DVTARGETDEVICE *ptd = NULL; void *pvAspect = NULL; HRESULT result; RECTL client = {0,0,100,100}; if (!init_texthost(&txtserv, &host)) return; todo_wine { result = ITextServices_TxDraw(txtserv, dwAspect, 0, pvAspect, ptd, tmphdc, hicTargetDev, &client, NULL, NULL, NULL, 0, 0); ok(result == S_OK, "TxDraw failed (result = %x)\n", result); } ITextServices_Release(txtserv); ITextHost_Release(host); }
static void test_TxGetText(void) { HRESULT hres; BSTR rettext; if (!init_texthost()) return; hres = ITextServices_TxGetText(txtserv, &rettext); ok(hres == S_OK, "ITextServices_TxGetText failed (result = %x)\n", hres); free_texthost(); }
static void test_TxGetText(void) { ITextServices *txtserv; ITextHost *host; HRESULT hres; BSTR rettext; if (!init_texthost(&txtserv, &host)) return; hres = ITextServices_TxGetText(txtserv, &rettext); ok(hres == S_OK, "ITextServices_TxGetText failed (result = %x)\n", hres); ITextServices_Release(txtserv); ITextHost_Release(host); }
static void test_TxSetText(void) { HRESULT hres; BSTR rettext; WCHAR settext[] = {'T','e','s','t',0}; if (!init_texthost()) return; hres = ITextServices_TxSetText(txtserv, settext); ok(hres == S_OK, "ITextServices_TxSetText failed (result = %x)\n", hres); hres = ITextServices_TxGetText(txtserv, &rettext); ok(hres == S_OK, "ITextServices_TxGetText failed (result = %x)\n", hres); ok(SysStringLen(rettext) == 4, "String returned of wrong length (expected 4, got %d)\n", SysStringLen(rettext)); ok(memcmp(rettext,settext,SysStringByteLen(rettext)) == 0, "String returned differs\n"); SysFreeString(rettext); free_texthost(); }
static void test_TxSetText(void) { ITextServices *txtserv; ITextHost *host; HRESULT hres; BSTR rettext; WCHAR settext[] = {'T','e','s','t',0}; if (!init_texthost(&txtserv, &host)) return; hres = ITextServices_TxSetText(txtserv, settext); ok(hres == S_OK, "ITextServices_TxSetText failed (result = %x)\n", hres); hres = ITextServices_TxGetText(txtserv, &rettext); ok(hres == S_OK, "ITextServices_TxGetText failed (result = %x)\n", hres); ok(SysStringLen(rettext) == 4, "String returned of wrong length (expected 4, got %d)\n", SysStringLen(rettext)); ok(memcmp(rettext,settext,SysStringByteLen(rettext)) == 0, "String returned differs\n"); /* Null-pointer should behave the same as empty-string */ hres = ITextServices_TxSetText(txtserv, 0); ok(hres == S_OK, "ITextServices_TxSetText failed (result = %x)\n", hres); hres = ITextServices_TxGetText(txtserv, &rettext); ok(hres == S_OK, "ITextServices_TxGetText failed (result = %x)\n", hres); ok(SysStringLen(rettext) == 0, "String returned of wrong length (expected 0, got %d)\n", SysStringLen(rettext)); SysFreeString(rettext); ITextServices_Release(txtserv); ITextHost_Release(host); }
static void test_TxGetNaturalSize(void) { HRESULT result; BOOL ret; /* This value is used when calling TxGetNaturalSize. MSDN says that this is not supported however a null pointer cannot be used as it will cause a segmentation violation. The values in the structure being pointed to are required to be INT_MAX otherwise calculations can give wrong values. */ const SIZEL psizelExtent = {INT_MAX,INT_MAX}; static const WCHAR oneA[] = {'A',0}; /* Results of measurements */ LONG xdim, ydim; /* The device context to do the tests in */ HDC hdcDraw; /* Variables with the text metric information */ INT charwidth_caps_text[26]; TEXTMETRICA tmInfo_text; if (!init_texthost()) return; hdcDraw = GetDC(NULL); SaveDC(hdcDraw); /* Populate the metric strucs */ SetMapMode(hdcDraw,MM_TEXT); GetTextMetricsA(hdcDraw, &tmInfo_text); SetLastError(0xdeadbeef); ret = GetCharWidth32A(hdcDraw,'A','Z',charwidth_caps_text); if (!ret && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED) { win_skip("GetCharWidth32 is not available\n"); goto cleanup; } /* Make measurements in MM_TEXT */ SetMapMode(hdcDraw,MM_TEXT); xdim = 0; ydim = 0; result = ITextServices_TxSetText(txtserv, oneA); ok(result == S_OK, "ITextServices_TxSetText failed (result = %x)\n", result); if (result != S_OK) { skip("Could not set text\n"); goto cleanup; } SetLastError(0xdeadbeef); result = ITextServices_TxGetNaturalSize(txtserv, DVASPECT_CONTENT, hdcDraw, NULL, NULL, TXTNS_FITTOCONTENT, &psizelExtent, &xdim, &ydim); todo_wine ok(result == S_OK || broken(result == E_FAIL), /* WINXP Arabic Language */ "TxGetNaturalSize gave unexpected return value (result = %x)\n", result); if (result == S_OK) { todo_wine ok(ydim == tmInfo_text.tmHeight, "Height calculated incorrectly (expected %d, got %d)\n", tmInfo_text.tmHeight, ydim); /* The native DLL adds one pixel extra when calculating widths. */ todo_wine ok(xdim >= charwidth_caps_text[0] && xdim <= charwidth_caps_text[0] + 1, "Width calculated incorrectly (expected %d {+1}, got %d)\n", charwidth_caps_text[0], xdim); } else skip("TxGetNaturalSize measurements not performed (xdim = %d, ydim = %d, result = %x, error = %x)\n", xdim, ydim, result, GetLastError()); cleanup: RestoreDC(hdcDraw,1); ReleaseDC(NULL,hdcDraw); free_texthost(); }