summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--generic/tkMain.c7
-rw-r--r--generic/tkWindow.c2
-rw-r--r--win/Makefile.in2
-rw-r--r--win/makefile.vc2
-rw-r--r--win/tkWinButton.c8
-rw-r--r--win/tkWinClipboard.c8
-rw-r--r--win/tkWinCursor.c2
-rw-r--r--win/tkWinDialog.c73
-rw-r--r--win/tkWinEmbed.c6
-rw-r--r--win/tkWinFont.c14
-rw-r--r--win/tkWinInit.c5
-rw-r--r--win/tkWinKey.c6
-rw-r--r--win/tkWinMenu.c20
-rw-r--r--win/tkWinPixmap.c2
-rw-r--r--win/tkWinScrlbr.c2
-rw-r--r--win/tkWinSend.c24
-rw-r--r--win/tkWinSendCom.c11
-rw-r--r--win/tkWinTest.c39
-rw-r--r--win/tkWinWm.c24
-rw-r--r--win/tkWinX.c8
-rw-r--r--win/ttkWinMonitor.c4
-rw-r--r--win/ttkWinXPTheme.c9
22 files changed, 164 insertions, 114 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 f49dc39..47be9c4 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/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 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 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 dfcc744..95ff1b6 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);
}
@@ -2297,7 +2306,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);
@@ -2325,7 +2335,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);
@@ -2459,7 +2470,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);
@@ -2491,7 +2503,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.";
@@ -2635,7 +2648,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) {
/*
@@ -2647,7 +2661,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);
@@ -2709,7 +2724,7 @@ 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.
*/
@@ -2927,10 +2942,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);
@@ -3027,7 +3044,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
@@ -3064,7 +3082,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);
@@ -3150,9 +3169,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);
}
@@ -3467,7 +3487,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 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 ad4bed8..dedd017 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 eebe671..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;
@@ -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 bd57ceb..6c8e613 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);
@@ -5466,12 +5468,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)));
@@ -5492,8 +5495,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 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 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) {