hhctrl.ocx: Declare strdupAtoW in hhctrl.h and use it instead of duplicated *ANSIToUnicode.

This commit is contained in:
Jacek Caban 2007-02-22 22:47:21 +01:00 committed by Alexandre Julliard
parent 6e72b2614a
commit 9a20d35cc8
3 changed files with 17 additions and 26 deletions

View File

@ -20,18 +20,6 @@
#include "hhctrl.h" #include "hhctrl.h"
static LPWSTR CHM_ANSIToUnicode(LPCSTR ansi)
{
LPWSTR unicode;
int count;
count = MultiByteToWideChar(CP_ACP, 0, ansi, -1, NULL, 0);
unicode = HeapAlloc(GetProcessHeap(), 0, count * sizeof(WCHAR));
MultiByteToWideChar(CP_ACP, 0, ansi, -1, unicode, count);
return unicode;
}
/* Reads a string from the #STRINGS section in the CHM file */ /* Reads a string from the #STRINGS section in the CHM file */
static LPWSTR CHM_ReadString(CHMInfo *pChmInfo, DWORD dwOffset) static LPWSTR CHM_ReadString(CHMInfo *pChmInfo, DWORD dwOffset)
{ {
@ -70,7 +58,7 @@ static LPWSTR CHM_ReadString(CHMInfo *pChmInfo, DWORD dwOffset)
{ {
if (!szString[iPos]) if (!szString[iPos])
{ {
stringW = CHM_ANSIToUnicode(szString); stringW = strdupAtoW(szString);
HeapFree(GetProcessHeap(), 0, szString); HeapFree(GetProcessHeap(), 0, szString);
return stringW; return stringW;
} }

View File

@ -57,18 +57,6 @@ typedef struct tagHHInfo
extern HINSTANCE hhctrl_hinstance; extern HINSTANCE hhctrl_hinstance;
static LPWSTR HH_ANSIToUnicode(LPCSTR ansi)
{
LPWSTR unicode;
int count;
count = MultiByteToWideChar(CP_ACP, 0, ansi, -1, NULL, 0);
unicode = HeapAlloc(GetProcessHeap(), 0, count * sizeof(WCHAR));
MultiByteToWideChar(CP_ACP, 0, ansi, -1, unicode, count);
return unicode;
}
/* Loads a string from the resource file */ /* Loads a string from the resource file */
static LPWSTR HH_LoadString(DWORD dwID) static LPWSTR HH_LoadString(DWORD dwID)
{ {
@ -861,7 +849,7 @@ int WINAPI doWinMain(HINSTANCE hInstance, LPSTR szCmdLine)
if (FAILED(OleInitialize(NULL))) if (FAILED(OleInitialize(NULL)))
return -1; return -1;
pHHInfo = HH_OpenHH(hInstance, HH_ANSIToUnicode(szCmdLine)); pHHInfo = HH_OpenHH(hInstance, strdupAtoW(szCmdLine));
if (!pHHInfo || !HH_OpenCHM(pHHInfo) || !HH_CreateViewer(pHHInfo)) if (!pHHInfo || !HH_OpenCHM(pHHInfo) || !HH_CreateViewer(pHHInfo))
{ {
OleUninitialize(); OleUninitialize();

View File

@ -70,4 +70,19 @@ BOOL CHM_OpenCHM(CHMInfo *pCHMInfo, LPCWSTR szFile);
BOOL CHM_LoadWinTypeFromCHM(CHMInfo *pCHMInfo, HH_WINTYPEW *pHHWinType); BOOL CHM_LoadWinTypeFromCHM(CHMInfo *pCHMInfo, HH_WINTYPEW *pHHWinType);
void CHM_CloseCHM(CHMInfo *pCHMInfo); void CHM_CloseCHM(CHMInfo *pCHMInfo);
static inline LPWSTR strdupAtoW(LPCSTR str)
{
LPWSTR ret;
DWORD len;
if(!str)
return NULL;
len = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0);
ret = HeapAlloc(GetProcessHeap(), 0, len*sizeof(WCHAR));
MultiByteToWideChar(CP_ACP, 0, str, -1, ret, len);
return ret;
}
#endif #endif