diff options
-rw-r--r-- | generic/tkMain.c | 7 | ||||
-rw-r--r-- | generic/tkWindow.c | 2 | ||||
-rw-r--r-- | macosx/tkMacOSXBitmap.c | 2 | ||||
-rw-r--r-- | macosx/tkMacOSXClipboard.c | 8 | ||||
-rw-r--r-- | macosx/tkMacOSXConstants.h | 30 | ||||
-rw-r--r-- | macosx/tkMacOSXDialog.c | 17 | ||||
-rw-r--r-- | macosx/tkMacOSXEvent.c | 2 | ||||
-rw-r--r-- | macosx/tkMacOSXFont.c | 10 | ||||
-rw-r--r-- | macosx/tkMacOSXMenu.c | 2 | ||||
-rw-r--r-- | win/Makefile.in | 2 | ||||
-rw-r--r-- | win/makefile.vc | 2 | ||||
-rw-r--r-- | win/tkWinButton.c | 8 | ||||
-rw-r--r-- | win/tkWinClipboard.c | 8 | ||||
-rw-r--r-- | win/tkWinCursor.c | 2 | ||||
-rw-r--r-- | win/tkWinDialog.c | 71 | ||||
-rw-r--r-- | win/tkWinEmbed.c | 6 | ||||
-rw-r--r-- | win/tkWinFont.c | 14 | ||||
-rw-r--r-- | win/tkWinInit.c | 5 | ||||
-rw-r--r-- | win/tkWinKey.c | 6 | ||||
-rw-r--r-- | win/tkWinMenu.c | 20 | ||||
-rw-r--r-- | win/tkWinPixmap.c | 2 | ||||
-rw-r--r-- | win/tkWinScrlbr.c | 2 | ||||
-rw-r--r-- | win/tkWinSend.c | 24 | ||||
-rw-r--r-- | win/tkWinSendCom.c | 11 | ||||
-rw-r--r-- | win/tkWinTest.c | 39 | ||||
-rw-r--r-- | win/tkWinWm.c | 24 | ||||
-rw-r--r-- | win/tkWinX.c | 8 | ||||
-rw-r--r-- | win/ttkWinMonitor.c | 4 | ||||
-rw-r--r-- | win/ttkWinXPTheme.c | 9 |
29 files changed, 194 insertions, 153 deletions
diff --git a/generic/tkMain.c b/generic/tkMain.c index 007903c..dea82d9 100644 --- a/generic/tkMain.c +++ b/generic/tkMain.c @@ -85,10 +85,11 @@ NewNativeObj( Tcl_DString ds; #ifdef UNICODE - if (length > 0) { - length *= sizeof(WCHAR); + if (length < 0) { + length = wcslen(string); } - Tcl_WinTCharToUtf(string, length, &ds); + Tcl_DStringInit(&ds); + Tcl_UniCharToUtfDString(string, length, &ds); #else Tcl_ExternalToUtfDString(NULL, (char *) string, length, &ds); #endif diff --git a/generic/tkWindow.c b/generic/tkWindow.c index 631c6e7..af24447 100644 --- a/generic/tkWindow.c +++ b/generic/tkWindow.c @@ -2857,7 +2857,7 @@ TkCygwinMainEx( /* construct "<path>/libtk8.?.dll", from "<path>/tk8?.dll" */ len = GetModuleFileNameW(Tk_GetHINSTANCE(), name, MAX_PATH); - name[len-2] = '.'; + name[len-2] = L'.'; name[len-1] = name[len-5]; wcscpy(name+len, L".dll"); memcpy(name+len-8, L"libtk8", 6 * sizeof(WCHAR)); diff --git a/macosx/tkMacOSXBitmap.c b/macosx/tkMacOSXBitmap.c index f779097..6ec4048 100644 --- a/macosx/tkMacOSXBitmap.c +++ b/macosx/tkMacOSXBitmap.c @@ -334,7 +334,7 @@ TkpGetNativeAppBitmap( CGContextConcatCTM(dc.context, t); [NSGraphicsContext saveGraphicsState]; [NSGraphicsContext setCurrentContext:[NSGraphicsContext - graphicsContextWithGraphicsPort:dc.context flipped:NO]]; + graphicsContextWithCGContext:dc.context flipped:NO]]; [image drawAtPoint:NSZeroPoint fromRect:NSZeroRect operation:NSCompositeCopy fraction:1.0]; [NSGraphicsContext restoreGraphicsState]; diff --git a/macosx/tkMacOSXClipboard.c b/macosx/tkMacOSXClipboard.c index 6cbcdf6..2ae02e8 100644 --- a/macosx/tkMacOSXClipboard.c +++ b/macosx/tkMacOSXClipboard.c @@ -28,7 +28,7 @@ static Tk_Window clipboardOwner = NULL; NSMutableString *string = [NSMutableString new]; if (dispPtr && dispPtr->clipboardActive && - [type isEqualToString:NSStringPboardType]) { + [type isEqualToString:NSPasteboardTypeString]) { for (TkClipboardTarget *targetPtr = dispPtr->clipTargetPtr; targetPtr; targetPtr = targetPtr->nextPtr) { if (targetPtr->type == XA_STRING || @@ -55,7 +55,7 @@ static Tk_Window clipboardOwner = NULL; if (dispPtr && dispPtr->clipboardActive) { [self tkProvidePasteboard:dispPtr pasteboard:[NSPasteboard generalPasteboard] - provideDataForType:NSStringPboardType]; + provideDataForType:NSPasteboardTypeString]; } } @@ -132,7 +132,7 @@ TkSelGetSelection( NSString *string = nil; NSPasteboard *pb = [NSPasteboard generalPasteboard]; NSString *type = [pb availableTypeFromArray:[NSArray arrayWithObject: - NSStringPboardType]]; + NSPasteboardTypeString]]; if (type) { string = [pb stringForType:type]; @@ -236,7 +236,7 @@ TkSelUpdateClipboard( { NSPasteboard *pb = [NSPasteboard generalPasteboard]; - changeCount = [pb addTypes:[NSArray arrayWithObject:NSStringPboardType] + changeCount = [pb addTypes:[NSArray arrayWithObject:NSPasteboardTypeString] owner:NSApp]; } diff --git a/macosx/tkMacOSXConstants.h b/macosx/tkMacOSXConstants.h index 8ef535c..388d619 100644 --- a/macosx/tkMacOSXConstants.h +++ b/macosx/tkMacOSXConstants.h @@ -25,21 +25,23 @@ * of constants. */ -#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1090 -#define kCTFontDefaultOrientation kCTFontOrientationDefault -#define kCTFontVerticalOrientation kCTFontOrientationVertical +#if MAC_OS_X_VERSION_MIN_REQUIRED < 1090 +#define kCTFontOrientationDefault kCTFontDefaultOrientation +#define kCTFontOrientationVertical kCTFontVerticalOrientation +#define NSModalResponseCancel NSCancelButton #endif -#if MAC_OS_X_VERSION_MIN_REQUIRED >= 101000 -#define NSOKButton NSModalResponseOK +#if MAC_OS_X_VERSION_MIN_REQUIRED < 101000 +#define NSModalResponseOK NSOKButton #endif -#if MAC_OS_X_VERSION_MIN_REQUIRED >= 101100 -#define kCTFontUserFixedPitchFontType kCTFontUIFontUserFixedPitch +#if MAC_OS_X_VERSION_MIN_REQUIRED < 101100 +#define kCTFontUIFontUserFixedPitch kCTFontUserFixedPitchFontType #endif -#if MAC_OS_X_VERSION_MIN_REQUIRED >= 101200 -#define NSAppKitDefined NSEventTypeAppKitDefined +#if MAC_OS_X_VERSION_MIN_REQUIRED < 101200 +#define NSEventTypeAppKitDefined NSAppKitDefined +#else #define NSApplicationDefined NSEventTypeApplicationDefined #define NSApplicationActivatedEventType NSEventSubtypeApplicationActivated #define NSApplicationDeactivatedEventType NSEventSubtypeApplicationDeactivated @@ -94,12 +96,12 @@ #define NSFullScreenWindowMask NSWindowStyleMaskFullScreen #endif -#if MAC_OS_X_VERSION_MIN_REQUIRED >= 101400 -#define NSStringPboardType NSPasteboardTypeString -#define NSOnState NSControlStateValueOn -#define NSOffState NSControlStateValueOff +#if MAC_OS_X_VERSION_MIN_REQUIRED < 101400 +#define NSControlStateValueOn NSOnState +#define NSControlStateValueOff NSOffState +#define NSPasteboardTypeString NSStringPboardType // Now we are also changing names of methods! -#define graphicsContextWithGraphicsPort graphicsContextWithCGContext +#define graphicsContextWithCGContext graphicsContextWithGraphicsPort #endif diff --git a/macosx/tkMacOSXDialog.c b/macosx/tkMacOSXDialog.c index ad952e8..a149bca 100644 --- a/macosx/tkMacOSXDialog.c +++ b/macosx/tkMacOSXDialog.c @@ -16,13 +16,6 @@ #include "tkFileFilter.h" #include "tkMacOSXConstants.h" -#if MAC_OS_X_VERSION_MIN_REQUIRED < 1090 -#define modalOK NSOKButton -#define modalCancel NSCancelButton -#else -#define modalOK NSModalResponseOK -#define modalCancel NSModalResponseCancel -#endif // MAC_OS_X_VERSION_MIN_REQUIRED < 1090 #define modalOther -1 #define modalError -2 @@ -202,7 +195,7 @@ getFileURL( { FilePanelCallbackInfo *callbackInfo = contextInfo; - if (returnCode == modalOK) { + if (returnCode == NSModalResponseOK) { Tcl_Obj *resultObj; if (callbackInfo->multiple) { @@ -230,7 +223,7 @@ getFileURL( } else { Tcl_SetObjResult(callbackInfo->interp, resultObj); } - } else if (returnCode == modalCancel) { + } else if (returnCode == NSModalResponseCancel) { Tcl_ResetResult(callbackInfo->interp); } if (panel == [NSApp modalWindow]) { @@ -411,7 +404,7 @@ Tk_ChooseColorObjCmd( [colorPanel setColor:initialColor]; } returnCode = [NSApp runModalForWindow:colorPanel]; - if (returnCode == modalOK) { + if (returnCode == NSModalResponseOK) { color = [[colorPanel color] colorUsingColorSpace: [NSColorSpace deviceRGBColorSpace]]; numberOfComponents = [color numberOfComponents]; @@ -810,7 +803,7 @@ Tk_GetOpenFileObjCmd( [parent makeKeyWindow]; } - if ((typeVariablePtr && (modalReturnCode == NSOKButton)) + if ((typeVariablePtr && (modalReturnCode == NSModalResponseOK)) && filterInfo.doFileTypes) { /* * The -typevariable must be set to the selected file type, if the @@ -1122,7 +1115,7 @@ Tk_GetSaveFileObjCmd( [parent makeKeyWindow]; } - if (typeVariablePtr && (modalReturnCode == NSOKButton) + if (typeVariablePtr && (modalReturnCode == NSModalResponseOK) && filterInfo.doFileTypes) { /* * The -typevariable must be set to the selected file type, if the diff --git a/macosx/tkMacOSXEvent.c b/macosx/tkMacOSXEvent.c index b9c9b6a..6e778a4 100644 --- a/macosx/tkMacOSXEvent.c +++ b/macosx/tkMacOSXEvent.c @@ -34,7 +34,7 @@ enum { NSInteger subtype; switch ((NSInteger)type) { - case NSAppKitDefined: + case NSEventTypeAppKitDefined: subtype = [theEvent subtype]; switch (subtype) { diff --git a/macosx/tkMacOSXFont.c b/macosx/tkMacOSXFont.c index ee2ddc4..e4f7e82 100644 --- a/macosx/tkMacOSXFont.c +++ b/macosx/tkMacOSXFont.c @@ -16,10 +16,6 @@ #include "tkMacOSXFont.h" #include "tkMacOSXConstants.h" -#define defaultOrientation kCTFontDefaultOrientation -#define verticalOrientation kCTFontVerticalOrientation -#define fixedPitch kCTFontUserFixedPitchFontType - /* #ifdef TK_MAC_DEBUG #define TK_MAC_DEBUG_FONTS @@ -277,7 +273,7 @@ InitFont( fmPtr->fixed = [nsFont advancementForGlyph:glyphs[0]].width == [nsFont advancementForGlyph:glyphs[1]].width; bounds = NSRectFromCGRect(CTFontGetBoundingRectsForGlyphs((CTFontRef) - nsFont, defaultOrientation, ch, boundingRects, nCh)); + nsFont, kCTFontOrientationDefault, ch, boundingRects, nCh)); kern = [nsFont advancementForGlyph:glyphs[2]].width - [fontPtr->nsFont advancementForGlyph:glyphs[2]].width; } @@ -394,7 +390,7 @@ TkpFontPkgInit( systemFont++; } TkInitFontAttributes(&fa); - nsFont = (NSFont*) CTFontCreateUIFontForLanguage(fixedPitch, 11, NULL); + nsFont = (NSFont*) CTFontCreateUIFontForLanguage(kCTFontUIFontUserFixedPitch, 11, NULL); if (nsFont) { GetTkFontAttributesForNSFont(nsFont, &fa); CFRelease(nsFont); @@ -1109,7 +1105,7 @@ DrawCharsInContext( [attributes setObject:(id)fg forKey:(id)kCTForegroundColorAttributeName]; CFRelease(fg); nsFont = [attributes objectForKey:NSFontAttributeName]; - [nsFont setInContext:[NSGraphicsContext graphicsContextWithGraphicsPort: + [nsFont setInContext:[NSGraphicsContext graphicsContextWithCGContext: context flipped:NO]]; CGContextSetTextMatrix(context, CGAffineTransformIdentity); attributedString = [[NSAttributedString alloc] initWithString:string diff --git a/macosx/tkMacOSXMenu.c b/macosx/tkMacOSXMenu.c index 790b6ff..b6fca79 100644 --- a/macosx/tkMacOSXMenu.c +++ b/macosx/tkMacOSXMenu.c @@ -662,7 +662,7 @@ TkpConfigureMenuEntry( [menuItem setEnabled:!(mePtr->state == ENTRY_DISABLED)]; [menuItem setState:((mePtr->type == CHECK_BUTTON_ENTRY || mePtr->type == RADIO_BUTTON_ENTRY) && mePtr->indicatorOn && - (mePtr->entryFlags & ENTRY_SELECTED) ? NSOnState : NSOffState)]; + (mePtr->entryFlags & ENTRY_SELECTED) ? NSControlStateValueOn : NSControlStateValueOff)]; if (mePtr->type != CASCADE_ENTRY && mePtr->accelPtr && mePtr->accelLength) { keyEquivalent = ParseAccelerator(Tcl_GetString(mePtr->accelPtr), &modifierMask); diff --git a/win/Makefile.in b/win/Makefile.in index f857b7c..efc8354 100644 --- a/win/Makefile.in +++ b/win/Makefile.in @@ -170,7 +170,7 @@ LDFLAGS_OPTIMIZE = @LDFLAGS_OPTIMIZE@ #CFLAGS = $(CFLAGS_DEBUG) #CFLAGS = $(CFLAGS_OPTIMIZE) #CFLAGS = $(CFLAGS_DEBUG) $(CFLAGS_OPTIMIZE) -CFLAGS = @CFLAGS@ @CFLAGS_DEFAULT@ -DUNICODE -D_UNICODE -D_ATL_XP_TARGETING +CFLAGS = @CFLAGS@ @CFLAGS_DEFAULT@ -DUNICODE -D_UNICODE -D_ATL_XP_TARGETING -DTCL_UTF_MAX=3 # Special compiler flags to use when building man2tcl on Windows. MAN2TCLFLAGS = @MAN2TCLFLAGS@ diff --git a/win/makefile.vc b/win/makefile.vc index 87fe366..8380b90 100644 --- a/win/makefile.vc +++ b/win/makefile.vc @@ -326,7 +326,7 @@ CONFIG_DEFS =-DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 \ -DTK_NO_DEPRECATED=1
!endif
-PRJ_DEFINES = -DBUILD_ttk $(CONFIG_DEFS) -Dinline=__inline -D _CRT_SECURE_NO_DEPRECATE -D _CRT_NONSTDC_NO_DEPRECATE
+PRJ_DEFINES = -DBUILD_ttk $(CONFIG_DEFS) -Dinline=__inline -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DTCL_UTF_MAX=3
# Additional Link libraries needed beyond those in rules.vc
PRJ_LIBS = netapi32.lib gdi32.lib user32.lib userenv.lib
diff --git a/win/tkWinButton.c b/win/tkWinButton.c index e91857c..52b6e2a 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 19874fb..a14ec47 100644 --- a/win/tkWinClipboard.c +++ b/win/tkWinClipboard.c @@ -79,7 +79,8 @@ TkSelGetSelection( goto error; } data = GlobalLock(handle); - Tcl_WinTCharToUtf((TCHAR *)data, -1, &ds); + Tcl_DStringInit(&ds); + Tcl_UniCharToUtfDString((WCHAR *)data, wcslen((WCHAR *)data), &ds); GlobalUnlock(handle); } else if (IsClipboardFormatAvailable(CF_TEXT)) { /* @@ -157,7 +158,8 @@ TkSelGetSelection( Tcl_DStringAppend(&ds, "\n", 1); } len = wcslen(fname); - Tcl_WinTCharToUtf(fname, len * sizeof(WCHAR), &dsTmp); + Tcl_DStringInit(&dsTmp); + Tcl_UniCharToUtfDString(fname, len, &dsTmp); Tcl_DStringAppend(&ds, Tcl_DStringValue(&dsTmp), Tcl_DStringLength(&dsTmp)); Tcl_DStringFree(&dsTmp); @@ -333,7 +335,7 @@ TkWinClipboardRender( */ Tcl_DStringInit(&ds); - Tcl_WinUtfToTChar(rawText, -1, &ds); + Tcl_UtfToUniCharDString(rawText, -1, &ds); ckfree(rawText); handle = GlobalAlloc(GMEM_MOVEABLE|GMEM_DDESHARE, (unsigned) Tcl_DStringLength(&ds) + 2); 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 bbf49ca..072a14c 100644 --- a/win/tkWinDialog.c +++ b/win/tkWinDialog.c @@ -922,7 +922,8 @@ ColorDlgHookProc( if ((title != NULL) && (title[0] != '\0')) { Tcl_DString ds; - SetWindowText(hDlg, Tcl_WinUtfToTChar(title,-1,&ds)); + Tcl_DStringInit(&ds); + SetWindowText(hDlg, Tcl_UtfToUniCharDString(title, -1, &ds)); Tcl_DStringFree(&ds); } if (tsdPtr->debugFlag) { @@ -1371,7 +1372,8 @@ static int GetFileNameVista(Tcl_Interp *interp, OFNOpts *optsPtr, const char *src; src = Tcl_GetString(optsPtr->extObj); - wstr = (LPWSTR) Tcl_WinUtfToTChar(src, optsPtr->extObj->length, &ds); + Tcl_DStringInit(&ds); + wstr = (LPWSTR) Tcl_UtfToUniCharDString(src, optsPtr->extObj->length, &ds); if (wstr[0] == L'.') ++wstr; hr = fdlgIf->lpVtbl->SetDefaultExtension(fdlgIf, wstr); @@ -1385,7 +1387,8 @@ static int GetFileNameVista(Tcl_Interp *interp, OFNOpts *optsPtr, const char *src; src = Tcl_GetString(optsPtr->titleObj); - wstr = (LPWSTR) Tcl_WinUtfToTChar(src, optsPtr->titleObj->length, &ds); + Tcl_DStringInit(&ds); + wstr = (LPWSTR) Tcl_UtfToUniCharDString(src, optsPtr->titleObj->length, &ds); hr = fdlgIf->lpVtbl->SetTitle(fdlgIf, wstr); Tcl_DStringFree(&ds); if (FAILED(hr)) @@ -1511,7 +1514,8 @@ static int GetFileNameVista(Tcl_Interp *interp, OFNOpts *optsPtr, Tcl_DString ftds; Tcl_Obj *ftobj; - Tcl_WinTCharToUtf(filterPtr[ftix-1].pszName, -1, &ftds); + Tcl_DStringInit(&ftds); + Tcl_UniCharToUtfDString(filterPtr[ftix-1].pszName, wcslen(filterPtr[ftix-1].pszName), &ftds); ftobj = Tcl_NewStringObj(Tcl_DStringValue(&ftds), Tcl_DStringLength(&ftds)); Tcl_ObjSetVar2(interp, optsPtr->typeVariableObj, NULL, @@ -1622,20 +1626,23 @@ static int GetFileNameXP(Tcl_Interp *interp, OFNOpts *optsPtr, enum OFNOper oper } if (optsPtr->extObj != NULL) { - str = Tcl_GetString(optsPtr->extObj); - if (str[0] == '.') - ++str; - Tcl_WinUtfToTChar(str, -1, &extString); + str = Tcl_GetString(optsPtr->extObj); + if (str[0] == '.') + ++str; + Tcl_DStringInit(&extString); + Tcl_UtfToUniCharDString(str, -1, &extString); ofn.lpstrDefExt = (WCHAR *) Tcl_DStringValue(&extString); } - Tcl_WinUtfToTChar(Tcl_DStringValue(&utfFilterString), + Tcl_DStringInit(&filterString); + Tcl_UtfToUniCharDString(Tcl_DStringValue(&utfFilterString), Tcl_DStringLength(&utfFilterString), &filterString); ofn.lpstrFilter = (WCHAR *) Tcl_DStringValue(&filterString); ofn.nFilterIndex = filterIndex; if (Tcl_DStringValue(&optsPtr->utfDirString)[0] != '\0') { - Tcl_WinUtfToTChar(Tcl_DStringValue(&optsPtr->utfDirString), + Tcl_DStringInit(&dirString); + Tcl_UtfToUniCharDString(Tcl_DStringValue(&optsPtr->utfDirString), Tcl_DStringLength(&optsPtr->utfDirString), &dirString); } else { /* @@ -1651,7 +1658,8 @@ static int GetFileNameXP(Tcl_Interp *interp, OFNOpts *optsPtr, enum OFNOper oper Tcl_DStringValue(&optsPtr->utfDirString), &cwd) == NULL)) { Tcl_ResetResult(interp); } else { - Tcl_WinUtfToTChar(Tcl_DStringValue(&cwd), + Tcl_DStringInit(&dirString); + Tcl_UtfToUniCharDString(Tcl_DStringValue(&cwd), Tcl_DStringLength(&cwd), &dirString); } Tcl_DStringFree(&cwd); @@ -1659,7 +1667,8 @@ static int GetFileNameXP(Tcl_Interp *interp, OFNOpts *optsPtr, enum OFNOper oper ofn.lpstrInitialDir = (WCHAR *) Tcl_DStringValue(&dirString); if (optsPtr->titleObj != NULL) { - Tcl_WinUtfToTChar(Tcl_GetString(optsPtr->titleObj), -1, &titleString); + Tcl_DStringInit(&titleString); + Tcl_UtfToUniCharDString(Tcl_GetString(optsPtr->titleObj), -1, &titleString); ofn.lpstrTitle = (WCHAR *) Tcl_DStringValue(&titleString); } @@ -2296,7 +2305,8 @@ static int MakeFilterVista( initialIndex = i+1; /* Windows filter indices are 1-based */ /* First stash away the text description of the pattern */ - Tcl_WinUtfToTChar(filterPtr->name, -1, &ds); + Tcl_DStringInit(&ds); + Tcl_UtfToUniCharDString(filterPtr->name, -1, &ds); nbytes = Tcl_DStringLength(&ds); /* # bytes, not Unicode chars */ nbytes += sizeof(WCHAR); /* Terminating \0 */ dlgFilterPtr[i].pszName = ckalloc(nbytes); @@ -2324,7 +2334,8 @@ static int MakeFilterVista( } /* Again we need a Unicode form of the string */ - Tcl_WinUtfToTChar(Tcl_DStringValue(&patterns), -1, &ds); + Tcl_DStringInit(&ds); + Tcl_UtfToUniCharDString(Tcl_DStringValue(&patterns), -1, &ds); nbytes = Tcl_DStringLength(&ds); /* # bytes, not Unicode chars */ nbytes += sizeof(WCHAR); /* Terminating \0 */ dlgFilterPtr[i].pszSpec = ckalloc(nbytes); @@ -2458,7 +2469,8 @@ Tk_ChooseDirectoryObjCmd( if (utfDir[0] != '\0') { const WCHAR *uniStr; - Tcl_WinUtfToTChar(Tcl_DStringValue(&ofnOpts.utfDirString), -1, + Tcl_DStringInit(&tempString); + Tcl_UtfToUniCharDString(Tcl_DStringValue(&ofnOpts.utfDirString), -1, &tempString); uniStr = (WCHAR *) Tcl_DStringValue(&tempString); @@ -2490,7 +2502,8 @@ Tk_ChooseDirectoryObjCmd( bInfo.lParam = (LPARAM) &cdCBData; if (ofnOpts.titleObj != NULL) { - Tcl_WinUtfToTChar(Tcl_GetString(ofnOpts.titleObj), -1, &titleString); + Tcl_DStringInit(&titleString); + Tcl_UtfToUniCharDString(Tcl_GetString(ofnOpts.titleObj), -1, &titleString); bInfo.lpszTitle = (LPTSTR) Tcl_DStringValue(&titleString); } else { bInfo.lpszTitle = L"Please choose a directory, then select OK."; @@ -2634,7 +2647,8 @@ ChooseDirectoryValidateProc( * like ~ are converted correctly. */ - Tcl_WinTCharToUtf((WCHAR *) lParam, -1, &initDirString); + Tcl_DStringInit(&initDirString); + Tcl_UniCharToUtfDString((WCHAR *) lParam, wcslen((WCHAR *) lParam), &initDirString); if (Tcl_TranslateFileName(chooseDirSharedData->interp, Tcl_DStringValue(&initDirString), &tempString) == NULL) { /* @@ -2646,7 +2660,8 @@ ChooseDirectoryValidateProc( return 1; } Tcl_DStringFree(&initDirString); - Tcl_WinUtfToTChar(Tcl_DStringValue(&tempString), -1, &initDirString); + Tcl_DStringInit(&initDirString); + Tcl_UtfToUniCharDString(Tcl_DStringValue(&tempString), -1, &initDirString); Tcl_DStringFree(&tempString); wcsncpy(string, (WCHAR *) Tcl_DStringValue(&initDirString), MAX_PATH); @@ -2926,10 +2941,12 @@ Tk_MessageBoxObjCmd( tsdPtr->hMsgBoxHook = SetWindowsHookEx(WH_CBT, MsgBoxCBTProc, NULL, GetCurrentThreadId()); src = Tcl_GetString(tmpObj); - tmpPtr = Tcl_WinUtfToTChar(src, tmpObj->length, &tmpBuf); + Tcl_DStringInit(&tmpBuf); + tmpPtr = Tcl_UtfToUniCharDString(src, tmpObj->length, &tmpBuf); if (titleObj != NULL) { src = Tcl_GetString(titleObj); - titlePtr = Tcl_WinUtfToTChar(src, titleObj->length, &titleBuf); + Tcl_DStringInit(&titleBuf); + titlePtr = Tcl_UtfToUniCharDString(src, titleObj->length, &titleBuf); } else { titlePtr = L""; Tcl_DStringInit(&titleBuf); @@ -3026,7 +3043,8 @@ ConvertExternalFilename( { char *p; - Tcl_WinTCharToUtf(filename, -1, dsPtr); + Tcl_DStringInit(dsPtr); + Tcl_UniCharToUtfDString(filename, wcslen(filename), dsPtr); for (p = Tcl_DStringValue(dsPtr); *p != '\0'; p++) { /* * Change the pathname to the Tcl "normalized" pathname, where back @@ -3063,7 +3081,8 @@ GetFontObj( int pt = 0; resObj = Tcl_NewListObj(0, NULL); - Tcl_WinTCharToUtf(plf->lfFaceName, -1, &ds); + Tcl_DStringInit(&ds); + Tcl_UniCharToUtfDString(plf->lfFaceName, wcslen(plf->lfFaceName), &ds); Tcl_ListObjAppendElement(NULL, resObj, Tcl_NewStringObj(Tcl_DStringValue(&ds), -1)); Tcl_DStringFree(&ds); @@ -3149,9 +3168,10 @@ HookProc( if (phd->titleObj != NULL) { Tcl_DString title; - Tcl_WinUtfToTChar(Tcl_GetString(phd->titleObj), -1, &title); + 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); } @@ -3466,7 +3486,8 @@ FontchooserShowCmd( } fontPtr = (TkFont *) f; cf.Flags |= CF_INITTOLOGFONTSTRUCT; - Tcl_WinUtfToTChar(fontPtr->fa.family, -1, &ds); + Tcl_DStringInit(&ds); + Tcl_UtfToUniCharDString(fontPtr->fa.family, -1, &ds); wcsncpy(lf.lfFaceName, (WCHAR *)Tcl_DStringValue(&ds), LF_FACESIZE-1); Tcl_DStringFree(&ds); diff --git a/win/tkWinEmbed.c b/win/tkWinEmbed.c index 329fd6e..f33a275 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 62c33ce..e61c21b 100644 --- a/win/tkWinFont.c +++ b/win/tkWinFont.c @@ -664,11 +664,12 @@ WinFontFamilyEnumProc( int fontType, /* Type of font (not used). */ LPARAM lParam) /* Result object to hold result. */ { - char *faceName = (char *) lfPtr->elfLogFont.lfFaceName; + WCHAR *faceName = 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); @@ -1590,7 +1591,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; @@ -1767,7 +1769,8 @@ AllocFontFamily( 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); @@ -2071,7 +2074,8 @@ WinFontCanUseProc( nameTriedPtr = canUsePtr->nameTriedPtr; fallbackName = (char *) lfPtr->elfLogFont.lfFaceName; - Tcl_ExternalToUtfDString(systemEncoding, fallbackName, -1, &faceString); + Tcl_DStringInit(&faceString); + Tcl_UniCharToUtfDString((WCHAR *)fallbackName, wcslen((WCHAR *)fallbackName), &faceString); fallbackName = Tcl_DStringValue(&faceString); if (SeenName(fallbackName, nameTriedPtr) == 0) { diff --git a/win/tkWinInit.c b/win/tkWinInit.c index 977474c..f36a879 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; Tcl_DString ds; @@ -196,7 +196,8 @@ TkWin32ErrorObj( *p = '\0'; } - Tcl_WinTCharToUtf(lpBuffer, -1, &ds); + Tcl_DStringInit(&ds); + Tcl_UniCharToUtfDString(lpBuffer, wcslen(lpBuffer), &ds); errPtr = Tcl_NewStringObj(Tcl_DStringValue(&ds), Tcl_DStringLength(&ds)); Tcl_DStringFree(&ds); 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 ed2ce93..5938f90 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; @@ -609,11 +609,12 @@ ReconfigureWindowsMenu( itemText = GetEntryText(menuPtr, mePtr); if ((menuPtr->menuType == MENUBAR) || (menuPtr->menuFlags & MENU_SYSTEM_MENU)) { - Tcl_WinUtfToTChar(itemText, -1, &translatedText); - lpNewItem = (const TCHAR *) Tcl_DStringValue(&translatedText); + Tcl_DStringInit(&translatedText); + Tcl_UtfToUniCharDString(itemText, -1, &translatedText); + lpNewItem = (const WCHAR *) Tcl_DStringValue(&translatedText); flags |= MF_STRING; } else { - lpNewItem = (LPCTSTR) mePtr; + lpNewItem = (LPCWSTR) mePtr; flags |= MF_OWNERDRAW; } @@ -1272,7 +1273,8 @@ TkWinHandleMenuEvent( const char *src = TkGetStringFromObj(labelPtr, &len); Tcl_DStringFree(&ds); - wlabel = (WCHAR *) Tcl_WinUtfToTChar(src, len, &ds); + Tcl_DStringInit(&ds); + wlabel = (WCHAR *) Tcl_UtfToUniCharDString(src, len, &ds); if ((underline + 1 < len + 1) && (menuChar == Tcl_UniCharToUpper(wlabel[underline]))) { *plResult = (2 << 16) | i; @@ -3492,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) { @@ -3500,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 fca8561..748ebaf 100644 --- a/win/tkWinSend.c +++ b/win/tkWinSend.c @@ -254,7 +254,8 @@ TkGetInterpNames( if (*p) { Tcl_DString ds; - Tcl_WinTCharToUtf(p + 1, -1, &ds); + Tcl_DStringInit(&ds); + Tcl_UniCharToUtfDString(p + 1, wcslen(p + 1), &ds); result = Tcl_ListObjAppendElement(interp, objList, Tcl_NewStringObj(Tcl_DStringValue(&ds), @@ -619,7 +620,8 @@ BuildMoniker( LPMONIKER pmkItem = NULL; Tcl_DString dString; - Tcl_WinUtfToTChar(name, -1, &dString); + Tcl_DStringInit(&dString); + Tcl_UtfToUniCharDString(name, -1, &dString); hr = CreateFileMoniker((LPOLESTR)Tcl_DStringValue(&dString), &pmkItem); Tcl_DStringFree(&dString); if (SUCCEEDED(hr)) { @@ -761,7 +763,8 @@ Send( vCmd.vt = VT_BSTR; src = Tcl_GetString(cmd); - Tcl_WinUtfToTChar(src, cmd->length, &ds); + Tcl_DStringInit(&ds); + Tcl_UtfToUniCharDString(src, cmd->length, &ds); vCmd.bstrVal = SysAllocString((WCHAR *) Tcl_DStringValue(&ds)); Tcl_DStringFree(&ds); @@ -784,8 +787,8 @@ Send( ehr = VariantChangeType(&vResult, &vResult, 0, VT_BSTR); if (SUCCEEDED(ehr)) { - Tcl_WinTCharToUtf(vResult.bstrVal, (int) SysStringLen(vResult.bstrVal) * - sizeof (WCHAR), &ds); + Tcl_DStringInit(&ds); + Tcl_UniCharToUtfDString(vResult.bstrVal, SysStringLen(vResult.bstrVal), &ds); Tcl_DStringResult(interp, &ds); } @@ -797,8 +800,9 @@ Send( if (hr == DISP_E_EXCEPTION && ei.bstrSource != NULL) { Tcl_Obj *opError, *opErrorCode, *opErrorInfo; - Tcl_WinTCharToUtf(ei.bstrSource, (int) SysStringLen(ei.bstrSource) * - sizeof (WCHAR), &ds); + + Tcl_DStringInit(&ds); + Tcl_UniCharToUtfDString(ei.bstrSource, SysStringLen(ei.bstrSource), &ds); opError = Tcl_NewStringObj(Tcl_DStringValue(&ds), Tcl_DStringLength(&ds)); Tcl_DStringFree(&ds); @@ -869,12 +873,14 @@ TkWinSend_SetExcepInfo( /* TODO: Handle failure to append */ src = Tcl_GetString(opError); - Tcl_WinUtfToTChar(src, opError->length, &ds); + Tcl_DStringInit(&ds); + Tcl_UtfToUniCharDString(src, opError->length, &ds); pExcepInfo->bstrDescription = SysAllocString((WCHAR *) Tcl_DStringValue(&ds)); Tcl_DStringFree(&ds); src = Tcl_GetString(opErrorCode); - Tcl_WinUtfToTChar(src, opErrorCode->length, &ds); + Tcl_DStringInit(&ds); + Tcl_UtfToUniCharDString(src, opErrorCode->length, &ds); pExcepInfo->bstrSource = SysAllocString((WCHAR *) Tcl_DStringValue(&ds)); Tcl_DStringFree(&ds); diff --git a/win/tkWinSendCom.c b/win/tkWinSendCom.c index 9e5b7a0..ebeef1e 100644 --- a/win/tkWinSendCom.c +++ b/win/tkWinSendCom.c @@ -385,8 +385,8 @@ Async( if (SUCCEEDED(hr) && obj->interp) { Tcl_Obj *scriptPtr; - Tcl_WinTCharToUtf(vCmd.bstrVal, (int) SysStringLen(vCmd.bstrVal) * - sizeof (WCHAR), &ds); + Tcl_DStringInit(&ds); + Tcl_UniCharToUtfDString(vCmd.bstrVal, SysStringLen(vCmd.bstrVal), &ds); scriptPtr = Tcl_NewStringObj(Tcl_DStringValue(&ds), Tcl_DStringLength(&ds)); Tcl_DStringFree(&ds); @@ -440,8 +440,8 @@ Send( return hr; } - Tcl_WinTCharToUtf(v.bstrVal, (int) SysStringLen(v.bstrVal) * - sizeof (WCHAR), &ds); + Tcl_DStringInit(&ds); + Tcl_UniCharToUtfDString(v.bstrVal, SysStringLen(v.bstrVal), &ds); scriptPtr = Tcl_NewStringObj(Tcl_DStringValue(&ds), Tcl_DStringLength(&ds)); Tcl_DStringFree(&ds); Tcl_Preserve(interp); @@ -457,7 +457,8 @@ Send( pvResult->vt = VT_BSTR; obj = Tcl_GetObjResult(interp); src = Tcl_GetString(obj); - Tcl_WinUtfToTChar(src, obj->length, &ds); + Tcl_DStringInit(&ds); + Tcl_UtfToUniCharDString(src, obj->length, &ds); pvResult->bstrVal = SysAllocString((WCHAR *) Tcl_DStringValue(&ds)); Tcl_DStringFree(&ds); } diff --git a/win/tkWinTest.c b/win/tkWinTest.c index e58ee7c..f3ec298 100644 --- a/win/tkWinTest.c +++ b/win/tkWinTest.c @@ -177,7 +177,8 @@ AppendSystemError( } else { char *msgPtr; - Tcl_WinTCharToUtf(wMsgPtr, -1, &ds); + Tcl_DStringInit(&ds); + Tcl_UniCharToUtfDString(wMsgPtr, wcslen(wMsgPtr), &ds); LocalFree(wMsgPtr); msgPtr = Tcl_DStringValue(&ds); @@ -375,20 +376,21 @@ TestwineventObjCmd( case WM_SETTEXT: { Tcl_DString ds; - control = TestFindControl(hwnd, id); - if (control == NULL) { - Tcl_SetObjResult(interp, - Tcl_ObjPrintf("Could not find control with id %d", id)); - return TCL_ERROR; - } + control = TestFindControl(hwnd, id); + if (control == NULL) { + Tcl_SetObjResult(interp, + Tcl_ObjPrintf("Could not find control with id %d", id)); + return TCL_ERROR; + } + Tcl_DStringInit(&ds); Tcl_UtfToExternalDString(NULL, Tcl_GetString(objv[4]), -1, &ds); - result = SendMessageA(control, WM_SETTEXT, 0, - (LPARAM) Tcl_DStringValue(&ds)); + result = SendMessageA(control, WM_SETTEXT, 0, + (LPARAM) Tcl_DStringValue(&ds)); Tcl_DStringFree(&ds); if (result == 0) { - Tcl_SetObjResult(interp, Tcl_NewStringObj("failed to send text to dialog: ", -1)); - AppendSystemError(interp, GetLastError()); - return TCL_ERROR; + Tcl_SetObjResult(interp, Tcl_NewStringObj("failed to send text to dialog: ", -1)); + AppendSystemError(interp, GetLastError()); + return TCL_ERROR; } break; } @@ -446,9 +448,11 @@ TestfindwindowObjCmd( return TCL_ERROR; } - title = Tcl_WinUtfToTChar(Tcl_GetString(objv[1]), -1, &titleString); + Tcl_DStringInit(&titleString); + title = Tcl_UtfToUniCharDString(Tcl_GetString(objv[1]), -1, &titleString); if (objc == 3) { - class = Tcl_WinUtfToTChar(Tcl_GetString(objv[2]), -1, &classString); + Tcl_DStringInit(&classString); + class = Tcl_UtfToUniCharDString(Tcl_GetString(objv[2]), -1, &classString); } if (title[0] == 0) title = NULL; @@ -528,8 +532,8 @@ TestgetwindowinfoObjCmd( AppendSystemError(interp, GetLastError()); return TCL_ERROR; } else { - Tcl_DString ds; - Tcl_WinTCharToUtf(buf, -1, &ds); + Tcl_DStringInit(&ds); + Tcl_UniCharToUtfDString(buf, wcslen(buf), &ds); classObj = Tcl_NewStringObj(Tcl_DStringValue(&ds), Tcl_DStringLength(&ds)); Tcl_DStringFree(&ds); } @@ -540,7 +544,8 @@ TestgetwindowinfoObjCmd( Tcl_NewWideIntObj(GetWindowLongPtr((HWND)(size_t)hwnd, GWL_ID))); cch = GetWindowText((HWND)(size_t)hwnd, (LPTSTR)buf, cchBuf); - Tcl_WinTCharToUtf(buf, cch * sizeof (WCHAR), &ds); + Tcl_DStringInit(&ds); + Tcl_UniCharToUtfDString(buf, cch, &ds); textObj = Tcl_NewStringObj(Tcl_DStringValue(&ds), Tcl_DStringLength(&ds)); Tcl_DStringFree(&ds); diff --git a/win/tkWinWm.c b/win/tkWinWm.c index c0f60d8..517ee63 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) { @@ -1246,9 +1246,10 @@ ReadIconFromFile( if (file == NULL) { return NULL; } - Tcl_WinUtfToTChar(file, -1, &ds2); + 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) { @@ -1256,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); /* @@ -2126,12 +2127,13 @@ UpdateWrapper( */ tsdPtr->createWindow = winPtr; - Tcl_WinUtfToTChar(((wmPtr->title != NULL) ? + Tcl_DStringInit(&titleString); + Tcl_UtfToUniCharDString(((wmPtr->title != NULL) ? wmPtr->title : winPtr->nameUid), -1, &titleString); 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); @@ -5459,12 +5461,13 @@ WmTitleCmd( } if (objc == 3) { if (wrapper) { - TCHAR buf[256]; + WCHAR buf[256]; Tcl_DString titleString; int size = 256; GetWindowText(wrapper, buf, size); - Tcl_WinTCharToUtf(buf, -1, &titleString); + Tcl_DStringInit(&titleString); + Tcl_UniCharToUtfDString(buf, wcslen(buf), &titleString); Tcl_SetObjResult(interp, Tcl_NewStringObj( Tcl_DStringValue(&titleString), Tcl_DStringLength(&titleString))); @@ -5484,8 +5487,9 @@ WmTitleCmd( if (!(wmPtr->flags & WM_NEVER_MAPPED) && wmPtr->wrapper != NULL) { Tcl_DString titleString; - Tcl_WinUtfToTChar(wmPtr->title, -1, &titleString); - SetWindowText(wrapper, (LPCTSTR) Tcl_DStringValue(&titleString)); + Tcl_DStringInit(&titleString); + Tcl_UtfToUniCharDString(wmPtr->title, -1, &titleString); + SetWindowText(wrapper, (LPCWSTR) Tcl_DStringValue(&titleString)); Tcl_DStringFree(&titleString); } } diff --git a/win/tkWinX.c b/win/tkWinX.c index baedfb6..d6487bb 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 3bac529..55446c5 100644 --- a/win/ttkWinXPTheme.c +++ b/win/ttkWinXPTheme.c @@ -833,7 +833,8 @@ static void TextElementSize( return; src = TkGetStringFromObj(element->textObj, &len); - Tcl_WinUtfToTChar(src, len, &ds); + Tcl_DStringInit(&ds); + Tcl_UtfToUniCharDString(src, len, &ds); hr = elementData->procs->GetThemeTextExtent( elementData->hTheme, elementData->hDC, @@ -872,7 +873,8 @@ static void TextElementDraw( return; src = TkGetStringFromObj(element->textObj, &len); - Tcl_WinUtfToTChar(src, len, &ds); + Tcl_DStringInit(&ds); + Tcl_UtfToUniCharDString(src, len, &ds); hr = elementData->procs->DrawThemeText( elementData->hTheme, elementData->hDC, @@ -1139,7 +1141,8 @@ Ttk_CreateVsapiElement( return TCL_ERROR; } name = TkGetStringFromObj(objv[0], &length); - className = (WCHAR *) Tcl_WinUtfToTChar(name, length, &classBuf); + Tcl_DStringInit(&classBuf); + className = (WCHAR *) Tcl_UtfToUniCharDString(name, length, &classBuf); /* flags or padding */ if (objc > 3) { |