Consistent usage of istring, use STR_[Get|Set]Ptr where appropriate.

This commit is contained in:
Uwe Bonnes 2002-01-22 00:51:16 +00:00 committed by Alexandre Julliard
parent 440adc193a
commit e0ab2b7f2a
1 changed files with 68 additions and 124 deletions

View File

@ -148,13 +148,28 @@ typedef struct
#define TOOLBAR_HasDropDownArrows(exStyle) ((exStyle & TBSTYLE_EX_DRAWDDARROWS) ? TRUE : FALSE)
static LPWSTR
TOOLBAR_GetText(TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr)
{
LPWSTR lpText = NULL;
/* FIXME: iString == -1 is undocumented */
if ((HIWORD(btnPtr->iString) != 0) && (btnPtr->iString != -1))
lpText = (LPWSTR)btnPtr->iString;
else if ((btnPtr->iString >= 0) && (btnPtr->iString < infoPtr->nNumStrings))
lpText = infoPtr->strings[btnPtr->iString];
return lpText;
}
static void
TOOLBAR_DumpButton(TOOLBAR_INFO *infoPtr, TBUTTON_INFO *bP, INT btn_num, BOOL internal)
{
if (TRACE_ON(toolbar)){
TRACE("button %d id %d, bitmap=%d, state=%02x, style=%02x, data=%08lx, string=%d\n",
TRACE("button %d id %d, bitmap=%d, state=%02x, style=%02x, data=%08lx, stringid=%x\n",
btn_num, bP->idCommand,
bP->iBitmap, bP->fsState, bP->fsStyle, bP->dwData, bP->iString);
TRACE("string %s\n", debugstr_w(TOOLBAR_GetText(infoPtr,bP)));
if (internal)
TRACE("button %d id %d, hot=%s, row=%d, rect=(%d,%d)-(%d,%d)\n",
btn_num, bP->idCommand,
@ -226,20 +241,6 @@ TOOLBAR_SendNotify (NMHDR *nmhdr, TOOLBAR_INFO *infoPtr, UINT code)
(WPARAM) nmhdr->idFrom, (LPARAM)nmhdr);
}
static LPWSTR
TOOLBAR_GetText(TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr)
{
LPWSTR lpText = NULL;
/* FIXME: iString == -1 is undocumented */
if ((HIWORD(btnPtr->iString) != 0) && (btnPtr->iString != -1))
lpText = (LPWSTR)btnPtr->iString;
else if ((btnPtr->iString >= 0) && (btnPtr->iString < infoPtr->nNumStrings))
lpText = infoPtr->strings[btnPtr->iString];
return lpText;
}
/***********************************************************************
* TOOLBAR_GetBitmapIndex
*
@ -443,7 +444,7 @@ TOOLBAR_DrawString (TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr,
/* get a pointer to the text */
lpText = TOOLBAR_GetText(infoPtr, btnPtr);
TRACE ("lpText: %s\n", debugstr_w(lpText));
TRACE ("Stringtext: %s\n", debugstr_w(lpText));
/* draw text */
if (lpText) {
@ -814,11 +815,9 @@ TOOLBAR_MeasureString(TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr,
lpSize->cx = 0;
lpSize->cy = 0;
if (!(btnPtr->fsState & TBSTATE_HIDDEN) &&
(btnPtr->iString > -1) &&
(btnPtr->iString < infoPtr->nNumStrings))
if (!(btnPtr->fsState & TBSTATE_HIDDEN) )
{
LPWSTR lpText = infoPtr->strings[btnPtr->iString];
LPWSTR lpText = TOOLBAR_GetText(infoPtr, btnPtr);
/* first get size of all the text */
GetTextExtentPoint32W (hdc, lpText, strlenW (lpText), lpSize);
@ -2154,7 +2153,7 @@ TOOLBAR_AddStringA (HWND hwnd, WPARAM wParam, LPARAM lParam)
if ((wParam) && (HIWORD(lParam) == 0)) {
char szString[256];
INT len, lenW;
INT len;
TRACE("adding string from resource!\n");
len = LoadStringA ((HINSTANCE)wParam, (UINT)lParam,
@ -2175,15 +2174,13 @@ TOOLBAR_AddStringA (HWND hwnd, WPARAM wParam, LPARAM lParam)
COMCTL32_Free (oldStrings);
}
lenW = MultiByteToWideChar( CP_ACP, 0, szString, -1, NULL, 0 );
infoPtr->strings[infoPtr->nNumStrings] = COMCTL32_Alloc (sizeof(WCHAR)*lenW);
MultiByteToWideChar( CP_ACP, 0, szString, -1,
infoPtr->strings[infoPtr->nNumStrings], lenW );
/*COMCTL32_Alloc zeros out the allocated memory*/
Str_SetPtrAtoW (&infoPtr->strings[infoPtr->nNumStrings], szString );
infoPtr->nNumStrings++;
}
else {
LPSTR p = (LPSTR)lParam;
INT len, lenW;
INT len;
if (p == NULL)
return -1;
@ -2207,10 +2204,7 @@ TOOLBAR_AddStringA (HWND hwnd, WPARAM wParam, LPARAM lParam)
COMCTL32_Free (oldStrings);
}
lenW = MultiByteToWideChar( CP_ACP, 0, p, -1, NULL, 0 );
infoPtr->strings[infoPtr->nNumStrings] = COMCTL32_Alloc (sizeof(WCHAR)*lenW);
MultiByteToWideChar( CP_ACP, 0, p, -1,
infoPtr->strings[infoPtr->nNumStrings], lenW );
Str_SetPtrAtoW (&infoPtr->strings[infoPtr->nNumStrings], p );
infoPtr->nNumStrings++;
p += (len+1);
@ -2284,9 +2278,7 @@ TOOLBAR_AddStringW (HWND hwnd, WPARAM wParam, LPARAM lParam)
COMCTL32_Free (oldStrings);
}
infoPtr->strings[infoPtr->nNumStrings] =
COMCTL32_Alloc (sizeof(WCHAR)*(len+1));
strcpyW (infoPtr->strings[infoPtr->nNumStrings], szString);
Str_SetPtrW (&infoPtr->strings[infoPtr->nNumStrings], szString);
infoPtr->nNumStrings++;
}
}
@ -2315,9 +2307,7 @@ TOOLBAR_AddStringW (HWND hwnd, WPARAM wParam, LPARAM lParam)
COMCTL32_Free (oldStrings);
}
infoPtr->strings[infoPtr->nNumStrings] =
COMCTL32_Alloc (sizeof(WCHAR)*(len+1));
strcpyW (infoPtr->strings[infoPtr->nNumStrings], p);
Str_SetPtrW (&infoPtr->strings[infoPtr->nNumStrings], p);
infoPtr->nNumStrings++;
p += (len+1);
@ -2723,13 +2713,8 @@ TOOLBAR_GetButtonInfoA (HWND hwnd, WPARAM wParam, LPARAM lParam)
if (lpTbInfo->dwMask & TBIF_STYLE)
lpTbInfo->fsStyle = btnPtr->fsStyle;
if (lpTbInfo->dwMask & TBIF_TEXT) {
if ((btnPtr->iString >= 0) && (btnPtr->iString < infoPtr->nNumStrings))
{
if (!WideCharToMultiByte( CP_ACP, 0, (LPWSTR)infoPtr->strings[btnPtr->iString], -1,
lpTbInfo->pszText, lpTbInfo->cchText, NULL, NULL ))
lpTbInfo->pszText[lpTbInfo->cchText-1] = 0;
}
else lpTbInfo->pszText[0]=0;
LPWSTR lpText = TOOLBAR_GetText(infoPtr,btnPtr);
Str_GetPtrWtoA (lpText, lpTbInfo->pszText,lpTbInfo->cchText);
}
return nIndex;
}
@ -2770,10 +2755,8 @@ TOOLBAR_GetButtonInfoW (HWND hwnd, WPARAM wParam, LPARAM lParam)
if (lpTbInfo->dwMask & TBIF_STYLE)
lpTbInfo->fsStyle = btnPtr->fsStyle;
if (lpTbInfo->dwMask & TBIF_TEXT) {
if ((btnPtr->iString >= 0) || (btnPtr->iString < infoPtr->nNumStrings))
lstrcpynW (lpTbInfo->pszText,
(LPWSTR)infoPtr->strings[btnPtr->iString],
lpTbInfo->cchText);
LPWSTR lpText = TOOLBAR_GetText(infoPtr,btnPtr);
Str_GetPtrW (lpText,lpTbInfo->pszText,lpTbInfo->cchText);
}
return nIndex;
@ -2797,23 +2780,19 @@ static LRESULT
TOOLBAR_GetButtonTextA (HWND hwnd, WPARAM wParam, LPARAM lParam)
{
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
INT nIndex, nStringIndex;
INT nIndex;
LPWSTR lpText;
if (lParam == 0)
return -1;
nIndex = TOOLBAR_GetButtonIndex (infoPtr, (INT)wParam, FALSE);
if (nIndex == -1)
return -1;
nStringIndex = infoPtr->buttons[nIndex].iString;
lpText = TOOLBAR_GetText(infoPtr,&infoPtr->buttons[nIndex]);
TRACE("index=%d stringIndex=%d\n", nIndex, nStringIndex);
if ((nStringIndex < 0) || (nStringIndex >= infoPtr->nNumStrings))
return -1;
if (lParam == 0)
return -1;
return WideCharToMultiByte( CP_ACP, 0, (LPWSTR)infoPtr->strings[nStringIndex], -1,
return WideCharToMultiByte( CP_ACP, 0, lpText, -1,
(LPSTR)lParam, 0x7fffffff, NULL, NULL ) - 1;
}
@ -2822,25 +2801,21 @@ static LRESULT
TOOLBAR_GetButtonTextW (HWND hwnd, WPARAM wParam, LPARAM lParam)
{
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
INT nIndex, nStringIndex;
INT nIndex;
LPWSTR lpText;
if (lParam == 0)
return -1;
nIndex = TOOLBAR_GetButtonIndex (infoPtr, (INT)wParam, FALSE);
if (nIndex == -1)
return -1;
nStringIndex = infoPtr->buttons[nIndex].iString;
lpText = TOOLBAR_GetText(infoPtr,&infoPtr->buttons[nIndex]);
TRACE("index=%d stringIndex=%d\n", nIndex, nStringIndex);
strcpyW ((LPWSTR)lParam, lpText);
if ((nStringIndex < 0) || (nStringIndex >= infoPtr->nNumStrings))
return -1;
if (lParam == 0)
return -1;
strcpyW ((LPWSTR)lParam, (LPWSTR)infoPtr->strings[nStringIndex]);
return strlenW ((LPWSTR)infoPtr->strings[nStringIndex]);
return strlenW (lpText);
}
@ -3163,25 +3138,17 @@ TOOLBAR_InsertButtonA (HWND hwnd, WPARAM wParam, LPARAM lParam)
nIndex * sizeof(TBUTTON_INFO));
}
/* if passed string and not index, then add string */
if(HIWORD(lpTbb->iString) && lpTbb->iString!=-1) {
int len;
LPSTR ptr;
len = strlen((char*)lpTbb->iString) + 2;
ptr = COMCTL32_Alloc(len*sizeof(char));
strcpy(ptr, (char*)lpTbb->iString);
ptr[len - 1] = 0; /* ended by two '\0' */
lpTbb->iString = TOOLBAR_AddStringA(hwnd, 0, (LPARAM)ptr);
COMCTL32_Free(ptr);
}
/* insert new button */
infoPtr->buttons[nIndex].iBitmap = lpTbb->iBitmap;
infoPtr->buttons[nIndex].idCommand = lpTbb->idCommand;
infoPtr->buttons[nIndex].fsState = lpTbb->fsState;
infoPtr->buttons[nIndex].fsStyle = lpTbb->fsStyle;
infoPtr->buttons[nIndex].dwData = lpTbb->dwData;
/* if passed string and not index, then add string */
if(HIWORD(lpTbb->iString) && lpTbb->iString!=-1) {
Str_SetPtrAtoW ((LPWSTR *)&infoPtr->buttons[nIndex].iString, (LPCSTR )lpTbb->iString);
}
else
infoPtr->buttons[nIndex].iString = lpTbb->iString;
if ((infoPtr->hwndToolTip) && !(lpTbb->fsStyle & TBSTYLE_SEP)) {
@ -3242,18 +3209,6 @@ TOOLBAR_InsertButtonW (HWND hwnd, WPARAM wParam, LPARAM lParam)
nIndex * sizeof(TBUTTON_INFO));
}
/* if passed string and not index, then add string */
if(HIWORD(lpTbb->iString) && lpTbb->iString!=-1) {
int len;
LPWSTR ptr;
len = strlenW((WCHAR*)lpTbb->iString) + 2;
ptr = COMCTL32_Alloc(len*sizeof(WCHAR));
strcpyW(ptr, (WCHAR*)lpTbb->iString);
ptr[len - 1] = 0; /* ended by two '\0' */
lpTbb->iString = TOOLBAR_AddStringW(hwnd, 0, (LPARAM)ptr);
COMCTL32_Free(ptr);
}
/* insert new button */
infoPtr->buttons[nIndex].iBitmap = lpTbb->iBitmap;
@ -3261,6 +3216,11 @@ TOOLBAR_InsertButtonW (HWND hwnd, WPARAM wParam, LPARAM lParam)
infoPtr->buttons[nIndex].fsState = lpTbb->fsState;
infoPtr->buttons[nIndex].fsStyle = lpTbb->fsStyle;
infoPtr->buttons[nIndex].dwData = lpTbb->dwData;
/* if passed string and not index, then add string */
if(HIWORD(lpTbb->iString) && lpTbb->iString!=-1) {
Str_SetPtrW ((LPWSTR *)&infoPtr->buttons[nIndex].iString, (LPWSTR)lpTbb->iString);
}
else
infoPtr->buttons[nIndex].iString = lpTbb->iString;
if ((infoPtr->hwndToolTip) && !(lpTbb->fsStyle & TBSTYLE_SEP)) {
@ -3542,21 +3502,13 @@ TOOLBAR_SetButtonInfoA (HWND hwnd, WPARAM wParam, LPARAM lParam)
if (lptbbi->dwMask & TBIF_STYLE)
btnPtr->fsStyle = lptbbi->fsStyle;
if (lptbbi->dwMask & TBIF_TEXT) {
if ((btnPtr->iString >= 0) ||
(btnPtr->iString < infoPtr->nNumStrings)) {
TRACE("Ooooooch\n");
#if 0
WCHAR **lpString = &infoPtr->strings[btnPtr->iString];
INT len = lstrlenA (lptbbi->pszText);
*lpString = COMCTL32_ReAlloc (lpString, sizeof(WCHAR)*(len+1));
#endif
if ((lptbbi->dwMask & TBIF_TEXT) && ((INT)lptbbi->pszText != -1)) {
if ((HIWORD(btnPtr->iString) == 0) || (btnPtr->iString == -1))
/* iString is index, zero it to make Str_SetPtr succeed */
btnPtr->iString=0;
/* this is the ultimate sollution */
/* Str_SetPtrA (&infoPtr->strings[btnPtr->iString], lptbbi->pszText); */
Str_SetPtrAtoW ((LPWSTR *)&btnPtr->iString, lptbbi->pszText);
}
}
return TRUE;
}
@ -3593,20 +3545,12 @@ TOOLBAR_SetButtonInfoW (HWND hwnd, WPARAM wParam, LPARAM lParam)
if (lptbbi->dwMask & TBIF_STYLE)
btnPtr->fsStyle = lptbbi->fsStyle;
if (lptbbi->dwMask & TBIF_TEXT) {
if ((btnPtr->iString >= 0) ||
(btnPtr->iString < infoPtr->nNumStrings)) {
#if 0
WCHAR **lpString = &infoPtr->strings[btnPtr->iString];
INT len = lstrlenW (lptbbi->pszText);
*lpString = COMCTL32_ReAlloc (lpString, sizeof(WCHAR)*(len+1));
#endif
/* this is the ultimate solution */
/* Str_SetPtrA (&infoPtr->strings[btnPtr->iString], lptbbi->pszText); */
if ((lptbbi->dwMask & TBIF_TEXT) && ((INT)lptbbi->pszText != -1)) {
if ((HIWORD(btnPtr->iString) == 0) || (btnPtr->iString == -1))
/* iString is index, zero it to make Str_SetPtr succeed */
btnPtr->iString=0;
Str_SetPtrW ((LPWSTR *)&btnPtr->iString, lptbbi->pszText);
}
}
return TRUE;
}