Fix bug #1080, Unicode stubs must use RichEdit20W, otherwise EM_GETTEXTRANGE gives us ANSI strings

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@6410 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
anders_k 2013-08-15 23:14:12 +00:00
parent 51e2b07f05
commit 5744372364
3 changed files with 28 additions and 10 deletions

View file

@ -385,18 +385,22 @@ FORCE_INLINE int NSISCALL ui_doinstall(void)
{ // load richedit DLL
static const TCHAR riched20[]=_T("RichEd20");
static const TCHAR riched32[]=_T("RichEd32");
static const TCHAR richedit20a[]=_T("RichEdit20A");
#ifdef UNICODE
static const TCHAR richedit20t[]=_T("RichEdit20W");
#else
static const TCHAR richedit20t[]=_T("RichEdit20A");
#endif
static const TCHAR richedit[]=_T("RichEdit");
if (!LoadLibrary(riched20))
{
LoadLibrary(riched32);
LoadLibrary(riched32); // Win95 only ships with v1.0, NT4 has v2.0: web.archive.org/web/20030607222419/http://msdn.microsoft.com/library/en-us/shellcc/platform/commctls/richedit/richeditcontrols/aboutricheditcontrols.asp
}
// make richedit20a point to RICHEDIT
if (!GetClassInfo(NULL,richedit20a,&wc))
// make richedit20a/w point to RICHEDIT
if (!GetClassInfo(NULL,richedit20t,&wc))
{
GetClassInfo(NULL,richedit,&wc);
wc.lpszClassName = richedit20a;
wc.lpszClassName = richedit20t;
RegisterClass(&wc);
}
}
@ -797,7 +801,7 @@ static BOOL CALLBACK LicenseProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM
},
ps_tmpbuf
};
if (tr.chrg.cpMax-tr.chrg.cpMin < sizeof(ps_tmpbuf)) {
if (tr.chrg.cpMax-tr.chrg.cpMin < COUNTOF(ps_tmpbuf)) {
SendMessage(hwLicense,EM_GETTEXTRANGE,0,(LPARAM)&tr);
SetCursor(LoadCursor(0, IDC_WAIT));
ShellExecute(hwndDlg,_T("open"),tr.lpstrText,NULL,NULL,SW_SHOWNORMAL);