1

コピー、貼り付け、プロパティ、削除などの IContextMenu 操作を呼び出そうとしていますが、呼び出しが正常に行われているのに、コピーと切り取りの操作のみが実行されません。

以下のシナリオを参照してください。

CMINVOKCOMMANDINFO.lpVerb をそれぞれのコマンド文字列 (「コピー」、「貼り付け」、「プロパティ」など) に設定しています。

CMINVOKECOMMANDINFO cmici={ sizeof(CMINVOKECOMMANDINFO) };
ZeroMemory( &cmici, sizeof(CMINVOKECOMMANDINFO));
cmici.cbSize = sizeof(CMINVOKECOMMANDINFO);
cmici.fMask=0;
cmici.hwnd=m_pOwnerWnd!=NULL ? m_pOwnerWnd->GetSafeHwnd() : NULL;
cmici.lpVerb= "copy";
cmici.lpParameters= NULL;
cmici.lpDirectory=NULL;
cmici.nShow=SW_SHOWNORMAL;
cmici.dwHotKey=0;
cmici.hIcon=NULL;

ITEMIDLIST のコンテキスト メニューを取得しています。

HRESULT hResult = lpParentFolder->GetUIObjectOf(
  m_pOwnerWnd!=NULL ? m_pOwnerWnd->GetSafeHwnd() : NULL, 1,
  (const struct _ITEMIDLIST**)&(lpRelativeIDL), IID_IContextMenu, 0,
  (LPVOID*)&lpcm)

コンテキストメニューのクエリ;

hResult=lpcm->QueryContextMenu(hMenu,0,1,0x7fff,dwFlags);

最後に呼び出します。

    hResult=lpcm->InvokeCommand(&cmici);

::DestroyMenu(hMenu);

lpcm->Release();

if(FAILED(hResult))  
    return FALSE;

return TRUE;

コマンドの削除、プロパティ、貼り付けなどは、コピーと切り取りを除いて正常に機能しています

この点で誰か私を助けてくれませんか?

ありがとう。

4

1 に答える 1

1

OleInitialize という見出しの下のこのリンクで同じ問題が言及されています。

OleInitialize() の呼び出しをフォームの OnCreate イベント ハンドラに移動すると、メニュー項目の切り取り/コピーが機能し始めました。

于 2013-05-21T07:24:31.073 に答える