Skip to content

Commit 56988ff

Browse files
authored
[EXPLORER] Support Unicode on Start Button InvokeCommand (reactos#7644)
Support Unicode on Start Button context menu for international text support. JIRA issue: N/A - Support Unicode in CStartMenuBtnCtxMenu::InvokeCommand method by using CMINVOKECOMMANDINFOEX structure.
1 parent d4f283b commit 56988ff

File tree

1 file changed

+19
-9
lines changed

1 file changed

+19
-9
lines changed

base/shell/explorer/startctxmnu.cpp

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -193,27 +193,37 @@ class CStartMenuBtnCtxMenu :
193193
InvokeCommand(LPCMINVOKECOMMANDINFO lpici)
194194
{
195195
UINT uiCmdId = PtrToUlong(lpici->lpVerb);
196-
if (!IsShellCmdId((UINT_PTR)lpici->lpVerb))
196+
if (!IsShellCmdId(uiCmdId))
197197
{
198-
CMINVOKECOMMANDINFO cmici = { 0 };
199-
CHAR szDir[MAX_PATH];
198+
CMINVOKECOMMANDINFOEX cmici = { sizeof(cmici) };
200199

201200
/* Setup and invoke the shell command */
202-
cmici.cbSize = sizeof(cmici);
203201
cmici.hwnd = m_Owner;
202+
cmici.nShow = SW_NORMAL;
203+
cmici.fMask = CMIC_MASK_UNICODE;
204+
WCHAR szVerbW[MAX_PATH];
204205
if (IS_INTRESOURCE(lpici->lpVerb))
206+
{
205207
cmici.lpVerb = MAKEINTRESOURCEA(uiCmdId - INNERIDOFFSET);
208+
cmici.lpVerbW = MAKEINTRESOURCEW(uiCmdId - INNERIDOFFSET);
209+
}
206210
else
211+
{
207212
cmici.lpVerb = lpici->lpVerb;
208-
cmici.nShow = SW_NORMAL;
213+
SHAnsiToUnicode(lpici->lpVerb, szVerbW, _countof(szVerbW));
214+
cmici.lpVerbW = szVerbW;
215+
}
209216

210-
/* FIXME: Support Unicode!!! */
211-
if (SHGetPathFromIDListA(m_FolderPidl, szDir))
217+
CHAR szDirA[MAX_PATH];
218+
WCHAR szDirW[MAX_PATH];
219+
if (SHGetPathFromIDListW(m_FolderPidl, szDirW))
212220
{
213-
cmici.lpDirectory = szDir;
221+
SHUnicodeToAnsi(szDirW, szDirA, _countof(szDirA));
222+
cmici.lpDirectory = szDirA;
223+
cmici.lpDirectoryW = szDirW;
214224
}
215225

216-
return m_Inner->InvokeCommand(&cmici);
226+
return m_Inner->InvokeCommand((LPCMINVOKECOMMANDINFO)&cmici);
217227
}
218228
m_TrayWnd->ExecContextMenuCmd(uiCmdId);
219229
return S_OK;

0 commit comments

Comments
 (0)