Article ID: 200893
Article Last Modified on 7/13/2004
wchar_t* GetStringFromStringTable( UINT uStringID )
{
wchar_t *pwchMem, *pwchCur;
UINT idRsrcBlk = uStringID / 16 + 1;
int strIndex = uStringID % 16;
HINSTANCE hModule = NULL;
HRSRC hResource = NULL;
hResource = FindResourceEx( AfxGetResourceHandle(), RT_STRING,
MAKEINTRESOURCE(idRsrcBlk),
MAKELANGID(LANG_NEUTRAL,
SUBLANG_DEFAULT) );
if( hResource != NULL )
{
pwchMem = (wchar_t *)LoadResource( hModule, hResource );
if( pwchMem != NULL )
{
pwchCur = pwchMem;
for(int i = 0; i<16; i++ )
{
if( *pwchCur )
{
int cchString = *pwchCur; // String size in characters.
pwchCur++;
if( i == strIndex )
{
// The string has been found in the string table.
wchar_t *pwchTemp = new wchar_t[ cchString ];
wcsncpy( pwchTemp, pwchCur, cchString );
return pwchTemp;
}
pwchCur += cchString;
}
else
pwchCur++;
}
}
}
return NULL;
}
Additional query words: LoadString FindResourceEx
Keywords: kbhowto kbdbcs kbunicode kbintldev kbresource kbstring KB200893