From 168bc3c1f9f4f57f0eb8be8bfa2db0fae62d55d6 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" <nijtmans@users.sourceforge.net> Date: Tue, 11 Jun 2019 11:39:44 +0000 Subject: More TCHAR -> WCHAR conversions --- generic/tkWindow.c | 8 +++--- unix/tkUnixFont.c | 2 +- win/tkWinButton.c | 8 +++--- win/tkWinClipboard.c | 4 +-- win/tkWinCursor.c | 2 +- win/tkWinDialog.c | 79 +++++++++++++++++++++++++--------------------------- win/tkWinEmbed.c | 6 ++-- win/tkWinFont.c | 62 ++++++++++++++++++++--------------------- win/tkWinInit.c | 8 +++--- win/tkWinKey.c | 6 ++-- win/tkWinMenu.c | 14 +++++----- win/tkWinPixmap.c | 2 +- win/tkWinScrlbr.c | 2 +- win/tkWinSend.c | 2 +- win/tkWinTest.c | 4 +-- win/tkWinWm.c | 12 ++++---- win/tkWinX.c | 8 +++--- win/ttkWinMonitor.c | 4 +-- win/ttkWinXPTheme.c | 2 +- 19 files changed, 115 insertions(+), 120 deletions(-) diff --git a/generic/tkWindow.c b/generic/tkWindow.c index 6ad9477..47be9c4 100644 --- a/generic/tkWindow.c +++ b/generic/tkWindow.c @@ -2851,16 +2851,16 @@ TkCygwinMainEx( * but before starting to execute commands. */ Tcl_Interp *interp) { - TCHAR name[MAX_PATH]; + WCHAR name[MAX_PATH]; size_t len; void (*tkmainex)(int, char **, Tcl_AppInitProc *, Tcl_Interp *); /* construct "<path>/libtk8.?.dll", from "<path>/tk8?.dll" */ len = GetModuleFileNameW(Tk_GetHINSTANCE(), name, MAX_PATH); - name[len-2] = TEXT('.'); + name[len-2] = L'.'; name[len-1] = name[len-5]; - _tcscpy(name+len, TEXT(".dll")); - memcpy(name+len-8, TEXT("libtk8"), 6 * sizeof(TCHAR)); + wcscpy(name+len, L".dll"); + memcpy(name+len-8, L"libtk8", 6 * sizeof(WCHAR)); tkcygwindll = LoadLibrary(name); if (!tkcygwindll) { diff --git a/unix/tkUnixFont.c b/unix/tkUnixFont.c index c94aff2..84de08f 100644 --- a/unix/tkUnixFont.c +++ b/unix/tkUnixFont.c @@ -245,7 +245,7 @@ static unsigned RankAttributes(FontAttributes *wantPtr, FontAttributes *gotPtr); static void ReleaseFont(UnixFont *fontPtr); static void ReleaseSubFont(Display *display, SubFont *subFontPtr); -static int SeenName(const char *name, Tcl_DString *dsPtr); +static int SeenName(const WCHAR *name, Tcl_DString *dsPtr); #ifndef WORDS_BIGENDIAN static int Ucs2beToUtfProc(ClientData clientData, const char*src, int srcLen, int flags, Tcl_EncodingState*statePtr, diff --git a/win/tkWinButton.c b/win/tkWinButton.c index 0b71327..a0d1ebd 100644 --- a/win/tkWinButton.c +++ b/win/tkWinButton.c @@ -131,7 +131,7 @@ InitBoxes(void) ThreadSpecificData *tsdPtr = (ThreadSpecificData *) Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); - hrsrc = FindResource(module, TEXT("buttons"), RT_BITMAP); + hrsrc = FindResource(module, L"buttons", RT_BITMAP); if (hrsrc == NULL) { Tcl_Panic("FindResource() failed for buttons bitmap resource, " "resources in tk_base.rc must be linked into Tk dll or static executable"); @@ -242,15 +242,15 @@ CreateProc( { Window window; HWND parent; - const TCHAR *class; + const WCHAR *class; WinButton *butPtr = (WinButton *)instanceData; parent = Tk_GetHWND(parentWin); if (butPtr->info.type == TYPE_LABEL) { - class = TEXT("STATIC"); + class = L"STATIC"; butPtr->style = SS_OWNERDRAW | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS; } else { - class = TEXT("BUTTON"); + class = L"BUTTON"; butPtr->style = BS_OWNERDRAW | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS; } butPtr->hwnd = CreateWindow(class, NULL, butPtr->style, diff --git a/win/tkWinClipboard.c b/win/tkWinClipboard.c index 06bc362..37e1603 100644 --- a/win/tkWinClipboard.c +++ b/win/tkWinClipboard.c @@ -79,8 +79,8 @@ TkSelGetSelection( goto error; } data = GlobalLock(handle); - Tcl_DStringInit(&ds) - Tcl_UniCharToUtfDString((TCHAR *)data, wcslen((TCHAR *)data), &ds); + Tcl_DStringInit(&ds); + Tcl_UniCharToUtfDString((WCHAR *)data, wcslen((WCHAR *)data), &ds); GlobalUnlock(handle); } else if (IsClipboardFormatAvailable(CF_TEXT)) { /* diff --git a/win/tkWinCursor.c b/win/tkWinCursor.c index 622ba4d..6a9dc75 100644 --- a/win/tkWinCursor.c +++ b/win/tkWinCursor.c @@ -41,7 +41,7 @@ typedef struct { static struct CursorName { const char *name; - LPCTSTR id; + LPCWSTR id; } cursorNames[] = { {"starting", IDC_APPSTARTING}, {"arrow", IDC_ARROW}, diff --git a/win/tkWinDialog.c b/win/tkWinDialog.c index 6b7c011..14f442b 100644 --- a/win/tkWinDialog.c +++ b/win/tkWinDialog.c @@ -143,8 +143,8 @@ static const struct {int type; int btnIds[3];} allowedTypes[] = { */ typedef struct { - TCHAR initDir[MAX_PATH]; /* Initial folder to use */ - TCHAR retDir[MAX_PATH]; /* Returned folder to use */ + WCHAR initDir[MAX_PATH]; /* Initial folder to use */ + WCHAR retDir[MAX_PATH]; /* Returned folder to use */ Tcl_Interp *interp; int mustExist; /* True if file must exist to return from * callback */ @@ -161,7 +161,7 @@ typedef struct OFNData { int dynFileBufferSize; /* Dynamic filename buffer size, stored to * avoid shrinking and expanding the buffer * when selection changes */ - TCHAR *dynFileBuffer; /* Dynamic filename buffer */ + WCHAR *dynFileBuffer; /* Dynamic filename buffer */ } OFNData; /* @@ -180,12 +180,9 @@ typedef struct OFNOpts { int confirmOverwrite; /* Confirm before overwriting */ int mustExist; /* Used only for */ int forceXPStyle; /* XXX - Force XP style even on newer systems */ - TCHAR file[TK_MULTI_MAX_PATH]; /* File name + WCHAR file[TK_MULTI_MAX_PATH]; /* File name XXX - fixed size because it was so historically. Why not malloc'ed ? - XXX - also, TCHAR should really be WCHAR - because TkWinGetUnicodeEncoding is always - UCS2. */ } OFNOpts; @@ -596,7 +593,7 @@ static UINT APIENTRY OFNHookProc(HWND hdlg, UINT uMsg, WPARAM wParam, LPARAM lParam); static LRESULT CALLBACK MsgBoxCBTProc(int nCode, WPARAM wParam, LPARAM lParam); static void SetTkDialog(ClientData clientData); -static const char *ConvertExternalFilename(TCHAR *filename, +static const char *ConvertExternalFilename(WCHAR *filename, Tcl_DString *dsPtr); static void LoadShellProcs(void); @@ -644,7 +641,7 @@ static void LoadShellProcs() if (shell32_handle != NULL) return; /* We have already been through here. */ - shell32_handle = GetModuleHandle(TEXT("shell32.dll")); + shell32_handle = GetModuleHandle(L"shell32.dll"); if (shell32_handle == NULL) /* Should never happen but check anyways. */ return; @@ -1629,7 +1626,7 @@ static int GetFileNameXP(Tcl_Interp *interp, OFNOpts *optsPtr, enum OFNOper oper */ ofnData.dynFileBufferSize = 512; - ofnData.dynFileBuffer = ckalloc(512 * sizeof(TCHAR)); + ofnData.dynFileBuffer = ckalloc(512 * sizeof(WCHAR)); } if (optsPtr->extObj != NULL) { @@ -1638,13 +1635,13 @@ static int GetFileNameXP(Tcl_Interp *interp, OFNOpts *optsPtr, enum OFNOper oper ++str; Tcl_DStringInit(&extString); Tcl_UtfToUniCharDString(str, -1, &extString); - ofn.lpstrDefExt = (TCHAR *) Tcl_DStringValue(&extString); + ofn.lpstrDefExt = (WCHAR *) Tcl_DStringValue(&extString); } Tcl_DStringInit(&filterString); Tcl_UtfToUniCharDString(Tcl_DStringValue(&utfFilterString), Tcl_DStringLength(&utfFilterString), &filterString); - ofn.lpstrFilter = (TCHAR *) Tcl_DStringValue(&filterString); + ofn.lpstrFilter = (WCHAR *) Tcl_DStringValue(&filterString); ofn.nFilterIndex = filterIndex; if (Tcl_DStringValue(&optsPtr->utfDirString)[0] != '\0') { @@ -1671,12 +1668,12 @@ static int GetFileNameXP(Tcl_Interp *interp, OFNOpts *optsPtr, enum OFNOper oper } Tcl_DStringFree(&cwd); } - ofn.lpstrInitialDir = (TCHAR *) Tcl_DStringValue(&dirString); + ofn.lpstrInitialDir = (WCHAR *) Tcl_DStringValue(&dirString); if (optsPtr->titleObj != NULL) { Tcl_DStringInit(&titleString); Tcl_UtfToUniCharDString(Tcl_GetString(optsPtr->titleObj), -1, &titleString); - ofn.lpstrTitle = (TCHAR *) Tcl_DStringValue(&titleString); + ofn.lpstrTitle = (WCHAR *) Tcl_DStringValue(&titleString); } /* @@ -1741,7 +1738,7 @@ static int GetFileNameXP(Tcl_Interp *interp, OFNOpts *optsPtr, enum OFNOper oper * first element is the directory path. */ - TCHAR *files = ofnData.dynFileBuffer; + WCHAR *files = ofnData.dynFileBuffer; Tcl_Obj *returnList = Tcl_NewObj(); int count = 0; @@ -1953,7 +1950,7 @@ OFNHookProc( if (notifyPtr->hdr.code == CDN_FILEOK || notifyPtr->hdr.code == CDN_SELCHANGE) { int dirsize, selsize; - TCHAR *buffer; + WCHAR *buffer; int buffersize; /* @@ -1977,7 +1974,7 @@ OFNHookProc( if ((selsize > 1) && (dirsize > 0)) { if (ofnData->dynFileBufferSize < buffersize) { - buffer = ckrealloc(buffer, buffersize * sizeof(TCHAR)); + buffer = ckrealloc(buffer, buffersize * sizeof(WCHAR)); ofnData->dynFileBufferSize = buffersize; ofnData->dynFileBuffer = buffer; } @@ -1994,7 +1991,7 @@ OFNHookProc( if (buffer[0] == '"') { BOOL findquote = TRUE; - TCHAR *tmp = buffer; + WCHAR *tmp = buffer; while (*buffer != '\0') { if (findquote) { @@ -2023,7 +2020,7 @@ OFNHookProc( if (TCL_PATH_ABSOLUTE == Tcl_GetPathType(Tcl_DStringValue(&tmpfile))) { /* re-get the full path to the start of the buffer */ - buffer = (TCHAR *) ofnData->dynFileBuffer; + buffer = (WCHAR *) ofnData->dynFileBuffer; SendMessage(hdlg, CDM_GETSPEC, selsize, (LPARAM) buffer); } else { *(buffer-1) = '\\'; @@ -2440,14 +2437,14 @@ Tk_ChooseDirectoryObjCmd( int objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { - TCHAR path[MAX_PATH]; + WCHAR path[MAX_PATH]; int oldMode, result; LPCITEMIDLIST pidl; /* Returned by browser */ BROWSEINFO bInfo; /* Used by browser */ ChooseDir cdCBData; /* Structure to pass back and forth */ LPMALLOC pMalloc; /* Used by shell */ HWND hWnd; - TCHAR saveDir[MAX_PATH]; + WCHAR saveDir[MAX_PATH]; Tcl_DString titleString; /* Title */ Tcl_DString tempString; /* temporary */ Tcl_Obj *objPtr; @@ -2475,17 +2472,17 @@ Tk_ChooseDirectoryObjCmd( utfDir = Tcl_DStringValue(&ofnOpts.utfDirString); if (utfDir[0] != '\0') { - const TCHAR *uniStr; + const WCHAR *uniStr; Tcl_DStringInit(&tempString); Tcl_UtfToUniCharDString(Tcl_DStringValue(&ofnOpts.utfDirString), -1, &tempString); - uniStr = (TCHAR *) Tcl_DStringValue(&tempString); + uniStr = (WCHAR *) Tcl_DStringValue(&tempString); /* Convert possible relative path to full path to keep dialog happy. */ GetFullPathName(uniStr, MAX_PATH, saveDir, NULL); - _tcsncpy(cdCBData.initDir, saveDir, MAX_PATH); + wcsncpy(cdCBData.initDir, saveDir, MAX_PATH); } /* XXX - rest of this (original) code has no error checks at all. */ @@ -2504,7 +2501,7 @@ Tk_ChooseDirectoryObjCmd( bInfo.hwndOwner = hWnd; bInfo.pszDisplayName = path; bInfo.pidlRoot = NULL; - if (_tcslen(cdCBData.initDir) == 0) { + if (wcslen(cdCBData.initDir) == 0) { GetCurrentDirectory(MAX_PATH, cdCBData.initDir); } bInfo.lParam = (LPARAM) &cdCBData; @@ -2514,7 +2511,7 @@ Tk_ChooseDirectoryObjCmd( Tcl_UtfToUniCharDString(Tcl_GetString(ofnOpts.titleObj), -1, &titleString); bInfo.lpszTitle = (LPTSTR) Tcl_DStringValue(&titleString); } else { - bInfo.lpszTitle = TEXT("Please choose a directory, then select OK."); + bInfo.lpszTitle = L"Please choose a directory, then select OK."; } /* @@ -2574,8 +2571,8 @@ Tk_ChooseDirectoryObjCmd( Tcl_SetErrorCode(interp, "TK", "DIRDIALOG", "PSEUDO", NULL); } pMalloc->lpVtbl->Free(pMalloc, (void *) pidl); - } else if (_tcslen(cdCBData.retDir) > 0) { - _tcscpy(path, cdCBData.retDir); + } else if (wcslen(cdCBData.retDir) > 0) { + wcscpy(path, cdCBData.retDir); } pMalloc->lpVtbl->Release(pMalloc); } @@ -2631,11 +2628,11 @@ ChooseDirectoryValidateProc( LPARAM lParam, LPARAM lpData) { - TCHAR selDir[MAX_PATH]; + WCHAR selDir[MAX_PATH]; ChooseDir *chooseDirSharedData = (ChooseDir *) lpData; Tcl_DString tempString; Tcl_DString initDirString; - TCHAR string[MAX_PATH]; + WCHAR string[MAX_PATH]; ThreadSpecificData *tsdPtr = Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); @@ -2656,7 +2653,7 @@ ChooseDirectoryValidateProc( */ Tcl_DStringInit(&initDirString); - Tcl_UniCharToUtfDString((TCHAR *) lParam, wcslen((TCHAR *) lParam), &initDirString); + Tcl_UniCharToUtfDString((WCHAR *) lParam, wcslen((WCHAR *) lParam), &initDirString); if (Tcl_TranslateFileName(chooseDirSharedData->interp, Tcl_DStringValue(&initDirString), &tempString) == NULL) { /* @@ -2671,7 +2668,7 @@ ChooseDirectoryValidateProc( Tcl_DStringInit(&initDirString); Tcl_UtfToUniCharDString(Tcl_DStringValue(&tempString), -1, &initDirString); Tcl_DStringFree(&tempString); - _tcsncpy(string, (TCHAR *) Tcl_DStringValue(&initDirString), + wcsncpy(string, (WCHAR *) Tcl_DStringValue(&initDirString), MAX_PATH); Tcl_DStringFree(&initDirString); @@ -2690,8 +2687,8 @@ ChooseDirectoryValidateProc( * User HAS to select a valid directory. */ - wsprintf(selDir, TEXT("Directory '%s' does not exist,\n") - TEXT("please select or enter an existing directory."), + wsprintf(selDir, L"Directory '%s' does not exist,\n" + L"please select or enter an existing directory.", chooseDirSharedData->retDir); MessageBox(NULL, selDir, NULL, MB_ICONEXCLAMATION|MB_OK); chooseDirSharedData->retDir[0] = '\0'; @@ -2731,11 +2728,11 @@ ChooseDirectoryValidateProc( case BFFM_INITIALIZED: { /* - * Directory browser intializing - tell it where to start from, user + * Directory browser initializing - tell it where to start from, user * specified parameter. */ - TCHAR *initDir = chooseDirSharedData->initDir; + WCHAR *initDir = chooseDirSharedData->initDir; SetCurrentDirectory(initDir); @@ -2754,7 +2751,7 @@ ChooseDirectoryValidateProc( ULONG ulCount, ulAttr; if (SUCCEEDED(psfFolder->lpVtbl->ParseDisplayName( - psfFolder, hwnd, NULL, (TCHAR *) + psfFolder, hwnd, NULL, (WCHAR *) initDir, &ulCount,&pidlMain,&ulAttr)) && (pidlMain != NULL)) { SendMessage(hwnd, BFFM_SETSELECTION, FALSE, @@ -3046,12 +3043,12 @@ SetTkDialog( static const char * ConvertExternalFilename( - TCHAR *filename, + WCHAR *filename, Tcl_DString *dsPtr) { char *p; - Tcl_DStringInit(dsPtr) + Tcl_DStringInit(dsPtr); Tcl_UniCharToUtfDString(filename, wcslen(filename), dsPtr); for (p = Tcl_DStringValue(dsPtr); *p != '\0'; p++) { /* @@ -3179,7 +3176,7 @@ HookProc( Tcl_DStringInit(&title); Tcl_UtfToUniCharDString(Tcl_GetString(phd->titleObj), -1, &title); if (Tcl_DStringLength(&title) > 0) { - SetWindowText(hwndDlg, (LPCTSTR) Tcl_DStringValue(&title)); + SetWindowText(hwndDlg, (LPCWSTR) Tcl_DStringValue(&title)); } Tcl_DStringFree(&title); } @@ -3496,7 +3493,7 @@ FontchooserShowCmd( cf.Flags |= CF_INITTOLOGFONTSTRUCT; Tcl_DStringInit(&ds); Tcl_UtfToUniCharDString(fontPtr->fa.family, -1, &ds); - _tcsncpy(lf.lfFaceName, (TCHAR *)Tcl_DStringValue(&ds), + wcsncpy(lf.lfFaceName, (WCHAR *)Tcl_DStringValue(&ds), LF_FACESIZE-1); Tcl_DStringFree(&ds); lf.lfFaceName[LF_FACESIZE-1] = 0; diff --git a/win/tkWinEmbed.c b/win/tkWinEmbed.c index c45f088..22ad0dd 100644 --- a/win/tkWinEmbed.c +++ b/win/tkWinEmbed.c @@ -303,10 +303,10 @@ TkpUseWindow( * order to avoid bug 1096074 in future. */ - TCHAR msg[256]; + WCHAR msg[256]; - wsprintf(msg, TEXT("Unable to get information of window \"%.40hs\". Attach to this\nwindow may have unpredictable results if it is not a valid container.\n\nPress Ok to proceed or Cancel to abort attaching."), string); - if (IDCANCEL == MessageBox(hwnd, msg, TEXT("Tk Warning"), + wsprintf(msg, L"Unable to get information of window \"%.40hs\". Attach to this\nwindow may have unpredictable results if it is not a valid container.\n\nPress Ok to proceed or Cancel to abort attaching.", string); + if (IDCANCEL == MessageBox(hwnd, msg, L"Tk Warning", MB_OKCANCEL | MB_ICONWARNING)) { Tcl_SetObjResult(interp, Tcl_NewStringObj( "Operation has been canceled", -1)); diff --git a/win/tkWinFont.c b/win/tkWinFont.c index 4ffa32b..1f1361d 100644 --- a/win/tkWinFont.c +++ b/win/tkWinFont.c @@ -50,11 +50,11 @@ typedef struct FontFamily { int isSymbolFont; /* Non-zero if this is a symbol font. */ int isWideFont; /* 1 if this is a double-byte font, 0 * otherwise. */ - BOOL (WINAPI *textOutProc)(HDC hdc, int x, int y, TCHAR *str, int len); + BOOL (WINAPI *textOutProc)(HDC hdc, int x, int y, WCHAR *str, int len); /* The procedure to use to draw text after it * has been converted from UTF-8 to the * encoding of this font. */ - BOOL (WINAPI *getTextExtentPoint32Proc)(HDC, TCHAR *, int, LPSIZE); + BOOL (WINAPI *getTextExtentPoint32Proc)(HDC, WCHAR *, int, LPSIZE); /* The procedure to use to measure text after * it has been converted from UTF-8 to the * encoding of this font. */ @@ -179,12 +179,6 @@ typedef struct ThreadSpecificData { static Tcl_ThreadDataKey dataKey; /* - * Information cached about the system at startup time. - */ - -static Tcl_Encoding systemEncoding; - -/* * Procedures used only in this file. */ @@ -262,7 +256,6 @@ void TkpFontPkgInit( TkMainInfo *mainPtr) /* The application being created. */ { - systemEncoding = TkWinGetUnicodeEncoding(); TkWinSetupSystemFonts(mainPtr); } @@ -446,7 +439,7 @@ TkWinSetupSystemFonts( { LOGFONT lfFixed = { 0, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET, - 0, 0, DEFAULT_QUALITY, FIXED_PITCH | FF_MODERN, TEXT("") + 0, 0, DEFAULT_QUALITY, FIXED_PITCH | FF_MODERN, L"" }; long pointSize, dpi; HDC hdc = GetDC(NULL); @@ -664,11 +657,12 @@ WinFontFamilyEnumProc( int fontType, /* Type of font (not used). */ LPARAM lParam) /* Result object to hold result. */ { - char *faceName = (char *) lfPtr->elfLogFont.lfFaceName; + WCHAR *faceName = (WCHAR *) lfPtr->elfLogFont.lfFaceName; Tcl_Obj *resultObj = (Tcl_Obj *) lParam; Tcl_DString faceString; - Tcl_ExternalToUtfDString(systemEncoding, faceName, -1, &faceString); + Tcl_DStringInit(&faceString); + Tcl_UniCharToUtfDString(faceName, wcslen(faceName), &faceString); Tcl_ListObjAppendElement(NULL, resultObj, Tcl_NewStringObj( Tcl_DStringValue(&faceString), Tcl_DStringLength(&faceString))); Tcl_DStringFree(&faceString); @@ -858,7 +852,7 @@ Tk_MeasureChars( (int) (p - start), &runString); size.cx = 0; familyPtr->getTextExtentPoint32Proc(hdc, - (TCHAR *)Tcl_DStringValue(&runString), + (WCHAR *)Tcl_DStringValue(&runString), Tcl_DStringLength(&runString) >> familyPtr->isWideFont, &size); Tcl_DStringFree(&runString); @@ -885,7 +879,7 @@ Tk_MeasureChars( Tcl_UtfToExternalDString(familyPtr->encoding, start, (int) (p - start), &runString); size.cx = 0; - familyPtr->getTextExtentPoint32Proc(hdc, (TCHAR *) Tcl_DStringValue(&runString), + familyPtr->getTextExtentPoint32Proc(hdc, (WCHAR *) Tcl_DStringValue(&runString), Tcl_DStringLength(&runString) >> familyPtr->isWideFont, &size); Tcl_DStringFree(&runString); @@ -919,7 +913,7 @@ Tk_MeasureChars( Tcl_DStringAppend(&runString,buf,dstWrote); size.cx = 0; familyPtr->getTextExtentPoint32Proc(hdc, - (TCHAR *) Tcl_DStringValue(&runString), + (WCHAR *) Tcl_DStringValue(&runString), Tcl_DStringLength(&runString) >> familyPtr->isWideFont, &size); if ((curX+size.cx) > maxLength) { @@ -1469,10 +1463,10 @@ MultiFontTextOut( Tcl_UtfToExternalDString(familyPtr->encoding, source, (int) (p - source), &runString); familyPtr->textOutProc(hdc, x-(tm.tmOverhang/2), y, - (TCHAR *)Tcl_DStringValue(&runString), + (WCHAR *)Tcl_DStringValue(&runString), Tcl_DStringLength(&runString)>>familyPtr->isWideFont); familyPtr->getTextExtentPoint32Proc(hdc, - (TCHAR *)Tcl_DStringValue(&runString), + (WCHAR *)Tcl_DStringValue(&runString), Tcl_DStringLength(&runString) >> familyPtr->isWideFont, &size); x += size.cx; @@ -1490,7 +1484,7 @@ MultiFontTextOut( Tcl_UtfToExternalDString(familyPtr->encoding, source, (int) (p - source), &runString); familyPtr->textOutProc(hdc, x-(tm.tmOverhang/2), y, - (TCHAR *)Tcl_DStringValue(&runString), + (WCHAR *)Tcl_DStringValue(&runString), Tcl_DStringLength(&runString) >> familyPtr->isWideFont); Tcl_DStringFree(&runString); } @@ -1565,7 +1559,7 @@ InitFont( Tcl_Encoding encoding; Tcl_DString faceString; TkFontAttributes *faPtr; - TCHAR buf[LF_FACESIZE]; + WCHAR buf[LF_FACESIZE]; window = Tk_WindowId(tkwin); hwnd = (window == None) ? NULL : TkWinGetHWND(window); @@ -1590,7 +1584,8 @@ InitFont( */ GetTextFace(hdc, LF_FACESIZE, buf); - Tcl_ExternalToUtfDString(systemEncoding, (char *) buf, -1, &faceString); + Tcl_DStringInit(&faceString); + Tcl_UniCharToUtfDString(buf, wcslen(buf), &faceString); fontPtr->font.fid = (Font) fontPtr; fontPtr->hwnd = hwnd; @@ -1761,13 +1756,14 @@ AllocFontFamily( FontFamily *familyPtr; Tcl_DString faceString; Tcl_Encoding encoding; - TCHAR buf[LF_FACESIZE]; + WCHAR buf[LF_FACESIZE]; ThreadSpecificData *tsdPtr = Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); hFont = SelectObject(hdc, hFont); GetTextFace(hdc, LF_FACESIZE, buf); - Tcl_ExternalToUtfDString(systemEncoding, (char *) buf, -1, &faceString); + Tcl_DStringInit(&faceString); + Tcl_UniCharToUtfDString(buf, wcslen(buf), &faceString); faceName = Tk_GetUid(Tcl_DStringValue(&faceString)); Tcl_DStringFree(&faceString); hFont = SelectObject(hdc, hFont); @@ -1825,15 +1821,15 @@ AllocFontFamily( if (encoding == NULL) { encoding = Tcl_GetEncoding(NULL, "unicode"); familyPtr->textOutProc = - (BOOL (WINAPI *)(HDC, int, int, TCHAR *, int)) TextOutW; + (BOOL (WINAPI *)(HDC, int, int, WCHAR *, int)) TextOutW; familyPtr->getTextExtentPoint32Proc = - (BOOL (WINAPI *)(HDC, TCHAR *, int, LPSIZE)) GetTextExtentPoint32W; + (BOOL (WINAPI *)(HDC, WCHAR *, int, LPSIZE)) GetTextExtentPoint32W; familyPtr->isWideFont = 1; } else { familyPtr->textOutProc = - (BOOL (WINAPI *)(HDC, int, int, TCHAR *, int)) TextOutA; + (BOOL (WINAPI *)(HDC, int, int, WCHAR *, int)) TextOutA; familyPtr->getTextExtentPoint32Proc = - (BOOL (WINAPI *)(HDC, TCHAR *, int, LPSIZE)) GetTextExtentPoint32A; + (BOOL (WINAPI *)(HDC, WCHAR *, int, LPSIZE)) GetTextExtentPoint32A; familyPtr->isWideFont = 0; } @@ -2070,8 +2066,9 @@ WinFontCanUseProc( fontPtr = canUsePtr->fontPtr; nameTriedPtr = canUsePtr->nameTriedPtr; - fallbackName = (char *) lfPtr->elfLogFont.lfFaceName; - Tcl_ExternalToUtfDString(systemEncoding, fallbackName, -1, &faceString); + fallbackName = (char *)lfPtr->elfLogFont.lfFaceName; + Tcl_DStringInit(&faceString); + Tcl_UniCharToUtfDString((WCHAR *)fallbackName, wcslen((WCHAR *)fallbackName), &faceString); fallbackName = Tcl_DStringValue(&faceString); if (SeenName(fallbackName, nameTriedPtr) == 0) { @@ -2493,8 +2490,9 @@ GetScreenFont( lf.lfQuality = DEFAULT_QUALITY; lf.lfPitchAndFamily = DEFAULT_PITCH | FF_DONTCARE; - Tcl_UtfToExternalDString(systemEncoding, faceName, -1, &ds); - _tcsncpy(lf.lfFaceName, (TCHAR *)Tcl_DStringValue(&ds), LF_FACESIZE-1); + Tcl_DStringInit(&ds); + Tcl_UtfToUniCharDString(faceName, -1, &ds); + wcsncpy(lf.lfFaceName, (WCHAR *)Tcl_DStringValue(&ds), LF_FACESIZE-1); Tcl_DStringFree(&ds); lf.lfFaceName[LF_FACESIZE-1] = 0; hFont = CreateFontIndirect(&lf); @@ -2528,7 +2526,7 @@ FamilyExists( int result; Tcl_DString faceString; - Tcl_UtfToExternalDString(systemEncoding, faceName, -1, &faceString); + Tcl_UtfToUniCharDString(faceName, -1, &faceString); /* * If the family exists, WinFontExistProc() will be called and @@ -2537,7 +2535,7 @@ FamilyExists( * non-zero value. */ - result = EnumFontFamilies(hdc, (TCHAR*) Tcl_DStringValue(&faceString), + result = EnumFontFamilies(hdc, (WCHAR*) Tcl_DStringValue(&faceString), (FONTENUMPROC) WinFontExistProc, 0); Tcl_DStringFree(&faceString); return (result == 0); diff --git a/win/tkWinInit.c b/win/tkWinInit.c index 9add471..b2d5ba4 100644 --- a/win/tkWinInit.c +++ b/win/tkWinInit.c @@ -179,7 +179,7 @@ TkWin32ErrorObj( HRESULT hrError) { LPTSTR lpBuffer = NULL, p = NULL; - TCHAR sBuffer[30]; + WCHAR sBuffer[30]; Tcl_Obj* errPtr = NULL; #ifdef _UNICODE Tcl_DString ds; @@ -191,11 +191,11 @@ TkWin32ErrorObj( if (lpBuffer == NULL) { lpBuffer = sBuffer; - wsprintf(sBuffer, TEXT("Error Code: %08lX"), hrError); + wsprintf(sBuffer, L"Error Code: %08lX", hrError); } - if ((p = _tcsrchr(lpBuffer, TEXT('\r'))) != NULL) { - *p = TEXT('\0'); + if ((p = wcsrchr(lpBuffer, L'\r')) != NULL) { + *p = L'\0'; } #ifdef _UNICODE diff --git a/win/tkWinKey.c b/win/tkWinKey.c index 8db34af..c1f9891 100644 --- a/win/tkWinKey.c +++ b/win/tkWinKey.c @@ -186,7 +186,7 @@ KeycodeToKeysym( { BYTE keys[256]; int result, deadkey, shift; - TCHAR buf[4]; + WCHAR buf[4]; unsigned int scancode = MapVirtualKey(keycode, 0); /* @@ -572,7 +572,7 @@ TkpSetKeycodeAndState( } } if (keySym >= 0x20) { - result = VkKeyScan((TCHAR) keySym); + result = VkKeyScan((WCHAR) keySym); if (result != -1) { shift = result >> 8; if (shift & 1) @@ -625,7 +625,7 @@ XKeysymToKeycode( } } if (keysym >= 0x20) { - result = VkKeyScan((TCHAR) keysym); + result = VkKeyScan((WCHAR) keysym); if (result != -1) { return (KeyCode) (result & 0xff); } diff --git a/win/tkWinMenu.c b/win/tkWinMenu.c index 460a743..3cd6494 100644 --- a/win/tkWinMenu.c +++ b/win/tkWinMenu.c @@ -19,8 +19,8 @@ * The class of the window for popup menus. */ -#define MENU_CLASS_NAME TEXT("MenuWindowClass") -#define EMBEDDED_MENU_CLASS_NAME TEXT("EmbeddedMenuWindowClass") +#define MENU_CLASS_NAME L"MenuWindowClass" +#define EMBEDDED_MENU_CLASS_NAME L"EmbeddedMenuWindowClass" /* * Used to align a windows bitmap inside a rectangle @@ -573,7 +573,7 @@ ReconfigureWindowsMenu( TkMenuEntry *mePtr; HMENU winMenuHdl = (HMENU) menuPtr->platformData; char *itemText = NULL; - const TCHAR *lpNewItem; + const WCHAR *lpNewItem; UINT flags; UINT itemID; int i, count, systemMenu = 0, base; @@ -611,10 +611,10 @@ ReconfigureWindowsMenu( || (menuPtr->menuFlags & MENU_SYSTEM_MENU)) { Tcl_DStringInit(&translatedText); Tcl_UtfToUniCharDString(itemText, -1, &translatedText); - lpNewItem = (const TCHAR *) Tcl_DStringValue(&translatedText); + lpNewItem = (const WCHAR *) Tcl_DStringValue(&translatedText); flags |= MF_STRING; } else { - lpNewItem = (LPCTSTR) mePtr; + lpNewItem = (LPCWSTR) mePtr; flags |= MF_OWNERDRAW; } @@ -3494,7 +3494,7 @@ TkpMenuThreadInit(void) ThreadSpecificData *tsdPtr = Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); - tsdPtr->menuHWND = CreateWindow(MENU_CLASS_NAME, TEXT("MenuWindow"), WS_POPUP, + tsdPtr->menuHWND = CreateWindow(MENU_CLASS_NAME, L"MenuWindow", WS_POPUP, 0, 0, 10, 10, NULL, NULL, Tk_GetHINSTANCE(), NULL); if (!tsdPtr->menuHWND) { @@ -3502,7 +3502,7 @@ TkpMenuThreadInit(void) } tsdPtr->embeddedMenuHWND = - CreateWindow(EMBEDDED_MENU_CLASS_NAME, TEXT("EmbeddedMenuWindow"), + CreateWindow(EMBEDDED_MENU_CLASS_NAME, L"EmbeddedMenuWindow", WS_POPUP, 0, 0, 10, 10, NULL, NULL, Tk_GetHINSTANCE(), NULL); if (!tsdPtr->embeddedMenuHWND) { diff --git a/win/tkWinPixmap.c b/win/tkWinPixmap.c index aa1ebde..92b4f50 100644 --- a/win/tkWinPixmap.c +++ b/win/tkWinPixmap.c @@ -106,7 +106,7 @@ Tk_GetPixmap( MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpMsgBuf, 0, NULL)) { MessageBox(NULL, (LPTSTR) lpMsgBuf, - TEXT("Tk_GetPixmap: Error from CreateDIBSection"), + L"Tk_GetPixmap: Error from CreateDIBSection", MB_OK | MB_ICONINFORMATION); LocalFree(lpMsgBuf); } diff --git a/win/tkWinScrlbr.c b/win/tkWinScrlbr.c index 43a33ee..1edb1d8 100644 --- a/win/tkWinScrlbr.c +++ b/win/tkWinScrlbr.c @@ -223,7 +223,7 @@ CreateProc( | SBS_HORZ; } - scrollPtr->hwnd = CreateWindow(TEXT("SCROLLBAR"), NULL, style, + scrollPtr->hwnd = CreateWindow(L"SCROLLBAR", NULL, style, Tk_X(tkwin), Tk_Y(tkwin), Tk_Width(tkwin), Tk_Height(tkwin), parent, NULL, Tk_GetHINSTANCE(), NULL); diff --git a/win/tkWinSend.c b/win/tkWinSend.c index a4c9d4e..748ebaf 100644 --- a/win/tkWinSend.c +++ b/win/tkWinSend.c @@ -873,7 +873,7 @@ TkWinSend_SetExcepInfo( /* TODO: Handle failure to append */ src = Tcl_GetString(opError); - Tcl_DStringInit(&ds) + Tcl_DStringInit(&ds); Tcl_UtfToUniCharDString(src, opError->length, &ds); pExcepInfo->bstrDescription = SysAllocString((WCHAR *) Tcl_DStringValue(&ds)); diff --git a/win/tkWinTest.c b/win/tkWinTest.c index 68c54f6..957bc02 100644 --- a/win/tkWinTest.c +++ b/win/tkWinTest.c @@ -435,7 +435,7 @@ TestfindwindowObjCmd( int objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument values. */ { - const TCHAR *title = NULL, *class = NULL; + const WCHAR *title = NULL, *class = NULL; Tcl_DString titleString, classString; HWND hwnd = NULL; int r = TCL_OK; @@ -515,7 +515,7 @@ TestgetwindowinfoObjCmd( Tcl_WideInt hwnd; Tcl_Obj *dictObj = NULL, *classObj = NULL, *textObj = NULL; Tcl_Obj *childrenObj = NULL; - TCHAR buf[512]; + WCHAR buf[512]; int cch, cchBuf = 256; Tcl_DString ds; diff --git a/win/tkWinWm.c b/win/tkWinWm.c index 6aecfa8..1337cbc 100644 --- a/win/tkWinWm.c +++ b/win/tkWinWm.c @@ -883,7 +883,7 @@ InitWindowClass( class.lpszClassName = TK_WIN_TOPLEVEL_CLASS_NAME; class.lpfnWndProc = WmProc; if (titlebaricon == NULL) { - class.hIcon = LoadIcon(Tk_GetHINSTANCE(), TEXT("tk")); + class.hIcon = LoadIcon(Tk_GetHINSTANCE(), L"tk"); } else { class.hIcon = GetIcon(titlebaricon, ICON_BIG); if (class.hIcon == NULL) { @@ -1249,7 +1249,7 @@ ReadIconFromFile( Tcl_DStringInit(&ds2); Tcl_UtfToUniCharDString(file, -1, &ds2); Tcl_DStringFree(&ds); - res = (DWORD *)SHGetFileInfo((TCHAR *)Tcl_DStringValue(&ds2), 0, &sfiSM, + res = (DWORD *)SHGetFileInfo((WCHAR *)Tcl_DStringValue(&ds2), 0, &sfiSM, sizeof(SHFILEINFO), SHGFI_SMALLICON|SHGFI_ICON); if (res != 0) { @@ -1257,7 +1257,7 @@ ReadIconFromFile( unsigned size; Tcl_ResetResult(interp); - res = (DWORD *)SHGetFileInfo((TCHAR *)Tcl_DStringValue(&ds2), 0, &sfi, + res = (DWORD *)SHGetFileInfo((WCHAR *)Tcl_DStringValue(&ds2), 0, &sfi, sizeof(SHFILEINFO), SHGFI_ICON); /* @@ -2133,7 +2133,7 @@ UpdateWrapper( wmPtr->wrapper = CreateWindowEx(wmPtr->exStyle, TK_WIN_TOPLEVEL_CLASS_NAME, - (LPCTSTR) Tcl_DStringValue(&titleString), + (LPCWSTR) Tcl_DStringValue(&titleString), wmPtr->style, x, y, width, height, parentHWND, NULL, Tk_GetHINSTANCE(), NULL); Tcl_DStringFree(&titleString); @@ -5468,7 +5468,7 @@ WmTitleCmd( } if (objc == 3) { if (wrapper) { - TCHAR buf[256]; + WCHAR buf[256]; Tcl_DString titleString; int size = 256; @@ -5497,7 +5497,7 @@ WmTitleCmd( Tcl_DStringInit(&titleString); Tcl_UtfToUniCharDString(wmPtr->title, -1, &titleString); - SetWindowText(wrapper, (LPCTSTR) Tcl_DStringValue(&titleString)); + SetWindowText(wrapper, (LPCWSTR) Tcl_DStringValue(&titleString)); Tcl_DStringFree(&titleString); } } diff --git a/win/tkWinX.c b/win/tkWinX.c index e410644..647474a 100644 --- a/win/tkWinX.c +++ b/win/tkWinX.c @@ -127,7 +127,7 @@ TkGetServerInfo( OSVERSIONINFOW os; if (!buffer[0]) { - HANDLE handle = GetModuleHandle(TEXT("NTDLL")); + HANDLE handle = GetModuleHandle(L"NTDLL"); int(__stdcall *getversion)(void *) = (int(__stdcall *)(void *))GetProcAddress(handle, "RtlGetVersion"); os.dwOSVersionInfoSize = sizeof(OSVERSIONINFOW); @@ -258,7 +258,7 @@ TkWinXInit( if (GetLocaleInfo(LANGIDFROMLCID(PTR2INT(GetKeyboardLayout(0))), LOCALE_IDEFAULTANSICODEPAGE | LOCALE_RETURN_NUMBER, - (LPTSTR) &lpCP, sizeof(lpCP)/sizeof(TCHAR)) + (LPTSTR) &lpCP, sizeof(lpCP)/sizeof(WCHAR)) && TranslateCharsetInfo(INT2PTR(lpCP), &lpCs, TCI_SRCCODEPAGE)) { UpdateInputLanguage((int) lpCs.ciCharset); } @@ -346,8 +346,8 @@ TkWinGetPlatformTheme(void) if ((os.dwMajorVersion == 5 && os.dwMinorVersion == 1)) { HKEY hKey; - LPCTSTR szSubKey = TEXT("Control Panel\\Appearance"); - LPCTSTR szCurrent = TEXT("Current"); + LPCWSTR szSubKey = L"Control Panel\\Appearance"; + LPCWSTR szCurrent = L"Current"; DWORD dwSize = 200; char pBuffer[200]; diff --git a/win/ttkWinMonitor.c b/win/ttkWinMonitor.c index 5d9cf0a..e3608f3 100644 --- a/win/ttkWinMonitor.c +++ b/win/ttkWinMonitor.c @@ -72,8 +72,8 @@ CreateThemeMonitorWindow(HINSTANCE hinst, Tcl_Interp *interp) { WNDCLASSEX wc; HWND hwnd = NULL; - TCHAR title[32] = TEXT("TtkMonitorWindow"); - TCHAR name[32] = TEXT("TtkMonitorClass"); + WCHAR title[32] = L"TtkMonitorWindow"; + WCHAR name[32] = L"TtkMonitorClass"; wc.cbSize = sizeof(WNDCLASSEX); wc.style = CS_HREDRAW | CS_VREDRAW; diff --git a/win/ttkWinXPTheme.c b/win/ttkWinXPTheme.c index be9d5c8..e217149 100644 --- a/win/ttkWinXPTheme.c +++ b/win/ttkWinXPTheme.c @@ -95,7 +95,7 @@ LoadXPThemeProcs(HINSTANCE *phlib) * if we are running at least on Windows XP. */ HINSTANCE handle; - *phlib = handle = LoadLibrary(TEXT("uxtheme.dll")); + *phlib = handle = LoadLibrary(L"uxtheme.dll"); if (handle != 0) { /* -- cgit v0.12