INF: Working Around the STRINGTABLE 255 Character Limit

ID Number: Q74800

3.00

WINDOWS

Summary:

Windows STRINGTABLE resources are limited to 255 characters per

string. However, it is possible to work with longer strings using the

technique described in this article.

More Information:

The following function, MyLoadString, will allow strings longer than

255 characters to be loaded. Using the exclamation mark (!) to

indicate that a particular string is part of a longer whole is not

required; any character that does not otherwise start a string may be

used for this purpose. The string IDs used for pieces of the same

string must be consecutive.

MyLoadString(HANDLE hInst, WORD wID, LPSTR szBuf)

{

int i, j;

char szLoadedString[256]; // temporary buffer

*szBuf = 0;

do

{

LoadString(hInst, wID, szLoadedString, 255);

if ('!' == *szLoadedString)

{

lstrcat(szBuf, (szLoadedString + 1));

wID++;

}

else

lstrcat(szBuf, szLoadedString);

}

while ('!' == *szLoadedString);

return lstrlen(szBuf);

}

The RC file will take on a form resembling the following:

STRINGTABLE

BEGIN

100, "!This is the first part of the string to be loaded,"

101, "!this is the second part, "

102, "and this is the third"

END