Skip to content

Commit

Permalink
[EXPLORER] Support Unicode on Start Button InvokeCommand (reactos#7644)
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
katahiromz authored Jan 20, 2025
1 parent d4f283b commit 56988ff
Showing 1 changed file with 19 additions and 9 deletions.
28 changes: 19 additions & 9 deletions base/shell/explorer/startctxmnu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -193,27 +193,37 @@ class CStartMenuBtnCtxMenu :
InvokeCommand(LPCMINVOKECOMMANDINFO lpici)
{
UINT uiCmdId = PtrToUlong(lpici->lpVerb);
if (!IsShellCmdId((UINT_PTR)lpici->lpVerb))
if (!IsShellCmdId(uiCmdId))
{
CMINVOKECOMMANDINFO cmici = { 0 };
CHAR szDir[MAX_PATH];
CMINVOKECOMMANDINFOEX cmici = { sizeof(cmici) };

/* Setup and invoke the shell command */
cmici.cbSize = sizeof(cmici);
cmici.hwnd = m_Owner;
cmici.nShow = SW_NORMAL;
cmici.fMask = CMIC_MASK_UNICODE;
WCHAR szVerbW[MAX_PATH];
if (IS_INTRESOURCE(lpici->lpVerb))
{
cmici.lpVerb = MAKEINTRESOURCEA(uiCmdId - INNERIDOFFSET);
cmici.lpVerbW = MAKEINTRESOURCEW(uiCmdId - INNERIDOFFSET);
}
else
{
cmici.lpVerb = lpici->lpVerb;
cmici.nShow = SW_NORMAL;
SHAnsiToUnicode(lpici->lpVerb, szVerbW, _countof(szVerbW));
cmici.lpVerbW = szVerbW;
}

/* FIXME: Support Unicode!!! */
if (SHGetPathFromIDListA(m_FolderPidl, szDir))
CHAR szDirA[MAX_PATH];
WCHAR szDirW[MAX_PATH];
if (SHGetPathFromIDListW(m_FolderPidl, szDirW))
{
cmici.lpDirectory = szDir;
SHUnicodeToAnsi(szDirW, szDirA, _countof(szDirA));
cmici.lpDirectory = szDirA;
cmici.lpDirectoryW = szDirW;
}

return m_Inner->InvokeCommand(&cmici);
return m_Inner->InvokeCommand((LPCMINVOKECOMMANDINFO)&cmici);
}
m_TrayWnd->ExecContextMenuCmd(uiCmdId);
return S_OK;
Expand Down

0 comments on commit 56988ff

Please sign in to comment.