31#define MODIFIED(rect) (rect.left == 10 && rect.right != 100 && rect.top == 10 && rect.bottom != 100)
32#define EMPTY(rect) (rect.left == rect.right && rect.bottom == rect.top)
40 static CHAR text[] =
"Example text for testing DrawText in "
42 static WCHAR textW[] = {
'W',
'i',
'd',
'e',
' ',
'c',
'h',
'a',
'r',
' ',
43 's',
't',
'r',
'i',
'n',
'g',
'\0'};
44 static CHAR emptystring[] =
"";
46 static CHAR wordbreak_text[] =
"line1 line2";
47 static WCHAR wordbreak_textW[] = {
'l',
'i',
'n',
'e',
'1',
' ',
'l',
'i',
'n',
'e',
'2',0};
48 static WCHAR wordbreak_text_colonW[] = {
'l',
'i',
'n',
'e',
'1',
' ',
'l',
'i',
'n',
'e',
'2',
' ',
':',0};
49 static WCHAR wordbreak_text_csbW[] = {
'l',
'i',
'n',
'e',
'1',
' ',
'l',
'i',
'n',
'e',
'2',
' ',
']',0};
50 static char tabstring[] =
"one\ttwo";
51 INT textlen, textheight, heightcheck;
59 0, 0, 200, 200, 0, 0, 0,
NULL);
67 memset(&lf, 0,
sizeof(lf));
79 ok(
hFont != 0,
"CreateFontIndirectA error %lu\n",
88 trace(
"MM_HIENGLISH rect.bottom %ld\n",
rect.bottom);
89 ok(
rect.bottom < 0,
"In MM_HIENGLISH, DrawText with "
90 "DT_CALCRECT should return a negative rectangle bottom. "
91 "(bot=%ld)\n",
rect.bottom);
103 ok(
hFont != 0,
"CreateFontIndirectA error %lu\n",
112 trace(
"MM_TEXT rect.bottom %ld\n",
rect.bottom);
113 ok(
rect.bottom > 0,
"In MM_TEXT, DrawText with DT_CALCRECT "
114 "should return a positive rectangle bottom. (bot=%ld)\n",
123 ok(textheight==0,
"Got textheight from DrawTextExA\n");
130 ok(textheight==0,
"Got textheight from DrawTextA\n");
131 ok(textheight == heightcheck,
"DrawTextEx and DrawText differ in return\n");
137 ok(textheight!=0,
"Failed to get textheight from DrawTextExA\n");
142 ok(textheight!=0,
"Failed to get textheight from DrawTextA\n");
143 ok(textheight == heightcheck,
"DrawTextEx and DrawText differ in return\n");
152 win_skip(
"XP conformity failed, skipping XP tests. Probably winNT\n");
156 ok(textheight!=0,
"Failed to get textheight from DrawTextExA\n");
162 ok(textheight!=0,
"Failed to get textheight from DrawTextA\n");
163 ok(textheight == heightcheck,
"DrawTextEx and DrawText differ in return\n");
170 ok(textheight==0,
"Got textheight from DrawTextExA\n");
177 ok(textheight==0,
"Got textheight from DrawTextA\n");
178 ok(textheight == heightcheck,
"DrawTextEx and DrawText differ in return\n");
187 ok(textheight==0,
"Got textheight from DrawTextExA\n");
194 ok(textheight==0,
"Got textheight from DrawTextA\n");
195 ok(textheight == heightcheck,
"DrawTextEx and DrawText differ in return\n");
202 ok(textheight!=0,
"Failed to get textheight from DrawTextExA\n");
208 ok(textheight!=0,
"Failed to get textheight from DrawTextA\n");
209 ok(textheight == heightcheck,
"DrawTextEx and DrawText differ in return\n");
217 ok(textheight!=0,
"Failed to get textheight from DrawTextExA\n");
224 ok(textheight!=0,
"Failed to get textheight from DrawTextA\n");
225 ok(textheight == heightcheck,
"DrawTextEx and DrawText differ in return\n");
232 ok(textheight==0,
"Got textheight from DrawTextExA\n");
239 ok(textheight==0,
"Got textheight from DrawTextA\n");
240 ok(textheight == heightcheck,
"DrawTextEx and DrawText differ in return\n");
245 ok(textheight==0,
"Got textheight from DrawTextA\n");
248 ok(textheight==0,
"Got textheight from DrawTextExA\n");
249 ok(textheight == heightcheck,
"DrawTextEx and DrawText differ in return\n");
252 ok(textheight==0,
"Got textheight from DrawTextA\n");
255 ok(textheight==0,
"Got textheight from DrawTextExA\n");
256 ok(textheight == heightcheck,
"DrawTextEx and DrawText differ in return\n");
259 ok(textheight==0,
"Got textheight from DrawTextA\n");
262 ok(textheight==0,
"Got textheight from DrawTextExA\n");
263 ok(textheight == heightcheck,
"DrawTextEx and DrawText differ in return\n");
265 ok(textheight!=0,
"Failed to get textheight from DrawTextA\n");
267 ok(textheight!=0,
"Failed to get textheight from DrawTextExA\n");
268 ok(textheight == heightcheck,
"DrawTextEx and DrawText differ in return\n");
271 ok(textheight!=0,
"Failed to get textheight from DrawTextA\n");
274 ok(textheight!=0,
"Failed to get textheight from DrawTextExA\n");
275 ok(textheight == heightcheck,
"DrawTextEx and DrawText differ in return\n");
277 ok(textheight==0,
"Got textheight from DrawTextA\n");
279 ok(textheight==0,
"Got textheight from DrawTextA\n");
280 ok(textheight == heightcheck,
"DrawTextEx and DrawText differ in return\n");
285 ok(textheight == 1,
"Expect returned height:1 got:%d\n", textheight);
289 ok(textheight == 1,
"Expect returned height:1 got:%d\n", textheight);
296 ok(textheight == 1,
"Expect returned height:1 got:%d\n", textheight);
302 ok(textheight==0,
"Got textheight from DrawTextExA\n");
306 ok(textheight==0,
"Got textheight from DrawTextExA\n");
310 ok(textheight==0,
"Got textheight from DrawTextExA\n");
314 ok(textheight==0,
"Got textheight from DrawTextExA\n");
318 ok(textheight==0,
"Got textheight from DrawTextExA\n");
327 textlen =
rect.right;
345 ok(textheight!=0,
"Failed to get textheight from DrawTextExW\n");
351 ok(textheight!=0,
"Failed to get textheight from DrawTextW\n");
352 ok(textheight == heightcheck,
"DrawTextEx and DrawText differ in return\n");
357 ok(textheight!=0,
"Failed to get textheight from DrawTextExW\n");
362 ok(textheight!=0,
"Failed to get textheight from DrawTextW\n");
363 ok(textheight == heightcheck,
"DrawTextEx and DrawText differ in return\n");
372 win_skip(
"XP conformity failed, skipping XP tests. Probably win 2000\n");
376 ok(textheight==0,
"Got textheight from DrawTextExW\n");
383 ok(textheight==0,
"Got textheight from DrawTextW\n");
384 ok(textheight == heightcheck,
"DrawTextEx and DrawText differ in return\n");
392 ok(textheight==0,
"Got textheight from DrawTextExW\n");
398 ok(textheight==0,
"Got textheight from DrawTextW\n");
399 ok(textheight == heightcheck,
"DrawTextEx and DrawText differ in return\n");
408 ok(textheight!=0,
"Failed to get textheight from DrawTextExW\n");
414 ok(textheight!=0,
"Failed to get textheight from DrawTextW\n");
415 ok(textheight == heightcheck,
"DrawTextEx and DrawText differ in return\n");
421 ok(textheight!=0,
"Failed to get textheight from DrawTextExW\n");
427 ok(textheight!=0,
"Failed to get textheight from DrawTextW\n");
428 ok(textheight == heightcheck,
"DrawTextEx and DrawText differ in return\n");
436 ok(textheight==0,
"Got textheight from DrawTextExW\n");
442 ok(textheight==0,
"Got textheight from DrawTextW\n");
443 ok(textheight == heightcheck,
"DrawTextEx and DrawText differ in return\n");
451 ok(textheight==0,
"Got textheight from DrawTextExW\n");
458 ok(textheight==0,
"Got textheight from DrawTextW\n");
459 ok(textheight == heightcheck,
"DrawTextEx and DrawText differ in return\n");
463 ok(textheight!=0,
"Failed to get textheight from DrawTextW\n");
465 ok(textheight!=0,
"Failed to get textheight from DrawTextExW\n");
466 ok(textheight == heightcheck,
"DrawTextEx and DrawText differ in return\n");
468 ok(textheight!=0,
"Failed to get textheight from DrawTextW\n");
470 ok(textheight!=0,
"Failed to get textheight from DrawTextExW\n");
471 ok(textheight == heightcheck,
"DrawTextEx and DrawText differ in return\n");
474 ok(textheight==0,
"Got textheight from DrawTextW\n");
477 ok(textheight==0,
"Got textheight from DrawTextExW\n");
478 ok(textheight == heightcheck,
"DrawTextEx and DrawText differ in return\n");
480 ok(textheight!=0,
"Failed to get textheight from DrawTextW\n");
482 ok(textheight!=0,
"Failed to get textheight from DrawTextExW\n");
483 ok(textheight == heightcheck,
"DrawTextEx and DrawText differ in return\n");
487 ok(textheight==0,
"Got textheight from DrawTextW\n");
489 ok(textheight==0,
"Got textheight from DrawTextExW\n");
490 ok(textheight == heightcheck,
"DrawTextEx and DrawText differ in return\n");
492 ok(textheight==0,
"Got textheight from DrawTextW\n");
494 ok(textheight==0,
"Got textheight from DrawTextW\n");
495 ok(textheight == heightcheck,
"DrawTextEx and DrawText differ in return\n");
501 ok(textheight!=0,
"Failed to get textheight from DrawTextExW\n");
506 ok(textheight==0,
"Got textheight from DrawTextExW\n");
511 ok(textheight==0,
"Got textheight from DrawTextExW\n");
515 ok(textheight==0,
"Got textheight from DrawTextExW\n");
521 ok(textheight==0,
"Got textheight from DrawTextExW\n");
529 ok(
FALSE,
"FIXME: invalid pointer tests crash on ReactOS.\n");
534 ok(textheight == 0,
"Got textheight from DrawTextExW\n");
539 ok(textheight == 0,
"Got textheight from DrawTextExW\n");
544 ok(textheight == 0,
"Got textheight from DrawTextExA\n");
561 ok(0 ==
rect.left,
"expected 0, got %ld\n",
rect.left);
562 ok(0 ==
rect.right,
"expected 0, got %ld\n",
rect.right);
563 ok(0 ==
rect.top,
"expected 0, got %ld\n",
rect.top);
564 ok(
rect.bottom,
"rect.bottom should not be 0\n");
570 win_skip(
"DrawTextW not implemented\n" );
575 ok(0 ==
rect.left,
"expected 0, got %ld\n",
rect.left);
576 ok(0 ==
rect.right,
"expected 0, got %ld\n",
rect.right);
577 ok(0 ==
rect.top,
"expected 0, got %ld\n",
rect.top);
578 ok(
rect.bottom,
"rect.bottom should not be 0\n");
585 ok(textheight == heightcheck * 2,
"Got unexpected textheight %d, expected %d.\n",
586 textheight, heightcheck * 2);
589 ok(textheight >= heightcheck * 6,
"Got unexpected textheight %d, expected at least %d.\n",
590 textheight, heightcheck * 6);
596 ok(textheight == heightcheck * 2,
"Got unexpected textheight %d, expected %d.\n",
597 textheight, heightcheck * 2);
600 ok(textheight >= heightcheck * 6,
"Got unexpected textheight %d, expected at least %d.\n",
601 textheight, heightcheck * 6);
606 ok(textheight == heightcheck,
"Got unexpected textheight %d, expected %d.\n",
607 textheight, heightcheck);
613 ok(textheight == heightcheck * 2,
"Got unexpected textheight %d, expected %d.\n",
614 textheight, heightcheck * 2);
615 ok(
rect.right >
rect2.
right - 10,
"Got unexpected textwdith %ld, expected larger than %ld.\n",
620 ok(textheight == heightcheck,
"Got unexpected textheight %d, expected %d.\n",
621 textheight, heightcheck);
627 ok(textheight == heightcheck * 2,
"Got unexpected textheight %d, expected %d.\n",
628 textheight, heightcheck * 2);
629 ok(
rect.right >
rect2.
right - 10,
"Got unexpected textwdith %ld, expected larger than %ld.\n",
636 ok(textheight >= heightcheck,
"Got unexpected textheight %d\n", textheight);
639 memset(&dtp, 0,
sizeof(dtp));
642 ok(textheight >= heightcheck,
"Got unexpected textheight %d\n", textheight);
646 memset(&dtp, 0,
sizeof(dtp));
649 ok(textheight >= heightcheck,
"Got unexpected textheight %d\n", textheight);
655 memset(&dtp, 0,
sizeof(dtp));
659 ok(textheight >= heightcheck,
"Got unexpected textheight %d\n", textheight);
684 if((strout[
j]=
str[
i])==
'\t') {
691#define TABTEST( tabval, tabcount, string, _exp) \
692{ int i; char strdisp[64];\
693 for(i=0;i<8;i++) tabs[i]=(i+1)*(tabval); \
694 extent = GetTabbedTextExtentA( hdc, string, strlen( string), (tabcount), tabs); \
695 strfmt( string, strdisp); \
697 ok( extent == _exp, "Test case \"%s\". Text extent is 0x%lx, expected 0x%lx tab %d tabcount %d\n", \
698 strdisp, extent, _exp, tabval, tabcount); \
713 0, 0, 200, 200, 0, 0, 0,
NULL);
722 ok(
extent == 0,
"GetTabbedTextExtentA returned non-zero on nCount == 0\n");
730 for(
t=-1;
t<=1;
t++) {
734 for( tabcount = 1; tabcount <= 8; tabcount +=7) {
748 for(
t=-1;
t<=1;
t++) {
752 for( tabcount = 1; tabcount <= 8; tabcount +=7) {
772 static const char text[] =
"Sample text string";
778 0, 0, 200, 200, 0, 0, 0,
NULL);
812 static const WCHAR helloWorldW[] = {
'H',
'e',
'l',
'l',
'o',
' ',
'W',
'o',
'r',
'l',
'd',0};
814 static const char helloWorld[] =
"Hello World";
892 for (
i = 0;
i < 0x100;
i++)
896 ok(
ret,
"%02x: returns FALSE\n",
i );
static const char * wine_dbgstr_rect(const RECT *prc)
#define ERROR_CALL_NOT_IMPLEMENTED
#define ERROR_INVALID_PARAMETER
#define ERROR_INVALID_HANDLE
#define MultiByteToWideChar
static const WCHAR emptystringW[]
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
_ACRTIMP size_t __cdecl strlen(const char *)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
int align(int length, int align)
GLenum GLuint GLenum GLsizei const GLchar * buf
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
static const WCHAR emptyW[]
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
int WINAPI lstrlenA(LPCSTR lpString)
static struct test_info tests[]
static const WCHAR textW[]
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
static void strfmt(const char *str, char *strout)
static void test_DrawTextCalcRect(void)
static void test_TabbedText(void)
static void test_DrawState(void)
#define TABTEST(tabval, tabcount, string, _exp)
static void test_CharToOem_OemToChar(void)
INT WINAPI MulDiv(INT nNumber, INT nNumerator, INT nDenominator)
INT WINAPI DrawTextW(HDC hdc, LPCWSTR str, INT count, LPRECT rect, UINT flags)
_Out_opt_ int _Out_opt_ int * cy
CHAR lfFaceName[LF_FACESIZE]
static struct wctab tab[]
INT WINAPI DrawTextA(HDC hdc, LPCSTR str, INT count, LPRECT rect, UINT flags)
DWORD WINAPI GetLastError(void)
int WINAPI SetMapMode(_In_ HDC, _In_ int)
HGDIOBJ WINAPI GetStockObject(_In_ int)
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
HFONT WINAPI CreateFontIndirectA(_In_ const LOGFONTA *)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
#define CLIP_DEFAULT_PRECIS
BOOL WINAPI GetTextMetricsA(_In_ HDC, _Out_ LPTEXTMETRICA)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
HWND WINAPI CreateWindowExA(_In_ DWORD dwExStyle, _In_opt_ LPCSTR lpClassName, _In_opt_ LPCSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
DWORD WINAPI GetTabbedTextExtentA(_In_ HDC hdc, _In_reads_(chCount) LPCSTR lpString, _In_ int chCount, _In_ int nTabPositions, _In_reads_opt_(nTabPositions) CONST INT *lpnTabStopPositions)
#define DT_EXTERNALLEADING
BOOL WINAPI CharToOemBuffA(_In_ LPCSTR lpszSrc, _Out_writes_(cchDstLength) LPSTR lpszDst, _In_ DWORD cchDstLength)
BOOL WINAPI CharToOemA(_In_ LPCSTR pSrc, _Out_writes_(_Inexpressible_(strlen(pSrc)+1)) LPSTR pDst)
BOOL WINAPI OemToCharA(_In_ LPCSTR pSrc, _Out_writes_(_Inexpressible_(strlen(pSrc)+1)) LPSTR pDst)
BOOL WINAPI IsRectEmpty(_In_ LPCRECT)
BOOL WINAPI OemToCharW(_In_ LPCSTR pSrc, _Out_writes_(_Inexpressible_(strlen(pSrc)+1)) LPWSTR pDst)
BOOL WINAPI OemToCharBuffW(_In_ LPCSTR lpszSrc, _Out_writes_(cchDstLength) LPWSTR lpszDst, _In_ DWORD cchDstLength)
HDC WINAPI GetDC(_In_opt_ HWND)
BOOL WINAPI SetRectEmpty(_Out_ LPRECT)
BOOL WINAPI DrawStateA(_In_ HDC, _In_opt_ HBRUSH, _In_opt_ DRAWSTATEPROC, _In_ LPARAM, _In_ WPARAM, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
int WINAPI DrawTextExA(_In_ HDC hdc, _Inout_updates_opt_(cchText) LPSTR lpchText, _In_ int cchText, _Inout_ LPRECT lprc, _In_ UINT format, _In_opt_ LPDRAWTEXTPARAMS lpdtp)
int WINAPI DrawTextExW(_In_ HDC hdc, _Inout_updates_opt_(cchText) LPWSTR lpchText, _In_ int cchText, _Inout_ LPRECT lprc, _In_ UINT format, _In_opt_ LPDRAWTEXTPARAMS lpdtp)
BOOL WINAPI DestroyWindow(_In_ HWND)
BOOL WINAPI OemToCharBuffA(_In_ LPCSTR lpszSrc, _Out_writes_(cchDstLength) LPSTR lpszDst, _In_ DWORD cchDstLength)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
BOOL WINAPI CharToOemW(_In_ LPCWSTR pSrc, _Out_writes_(_Inexpressible_(strlen(pSrc)+1)) LPSTR pDst)
BOOL WINAPI CharToOemBuffW(_In_ LPCWSTR lpszSrc, _Out_writes_(cchDstLength) LPSTR lpszDst, _In_ DWORD cchDstLength)