В настоящее время я пытаюсь подклассифицировать элемент управления Edit, в частности тему электронной почты в Outlook Client. Этот элемент управления имеет класс RichEdit20WPT.Есть ли что-то особенное в сообщениях wndProc для окна RichEdit20WPT?
Я получаю wndProc с помощью следующих методов WINAPI.
<DllImport("ComCtl32.dll", CharSet:=CharSet.Auto)> _
Public Shared Function SetWindowSubclass(hWnd As IntPtr, newProc As Win32SubClassProc, uIdSubclass As IntPtr, dwRefData As IntPtr) As Integer
End Function
<DllImport("comctl32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Public Shared Function DefSubclassProc(ByVal hWnd As IntPtr, ByVal uMsg As IntPtr, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As Integer
End Function
Public Delegate Function Win32SubClassProc(hWnd As IntPtr, Msg As IntPtr, wParam As IntPtr, lParam As IntPtr, uIdSubclass As IntPtr, dwRefData As IntPtr) As Integer
И имел бы такой wndProc;
Private WM_CONTEXTMENU As IntPtr = &H7B
Private Function SubClassProc(hWnd As IntPtr, Msg As IntPtr, wParam As IntPtr, lParam As IntPtr, uIdSubclass As IntPtr, dwRefData As IntPtr) As Integer
Select Case Msg
Case WM_DESTROY
Case WM_NCDESTROY
Case WM_LBUTTONDOWN
Case WM_CONTEXTMENU 'NEVER HAPPENS
Case WM_RBUTTONDOWN
End Select
Return DefSubclassProc(hWnd, Msg, wParam, lParam)
End Function
Я получаю кнопки L и R вниз и вверх, но не WM_CONTEXTMENU. Мое настоящее намерение состоит в том, чтобы добавить пункт меню в контекстное меню, чтобы в качестве альтернативы я использую сообщение WM_RBUTTONDOWN.
Является ли этот контроль особенным и известным, чтобы не показывать сообщение WM_CONTEXTMENU?
У меня также есть проблема, чтобы найти сообщения, которые возникают после выбора чего-либо в контекстном меню. Я понимаю, что сообщения пункта меню, нажатые в контекстном меню, передаются родительскому объекту, который в этом случае является этим окном RichEdit20WPT. Это верно? Примечание. Я не создаю свое собственное контекстное меню, которое я добавляю к существующему, поэтому я не изменяю владельца контекстного меню или что-то в этом роде.
Вы ставите, что есть что-то особенное! Это не стандартный элемент управления Windows.Стандартный элемент управления текстовым полем имеет имя класса 'RichEdit20'. Суффикс 'WPT' - это что-то добавленное командой Outlook для обозначения их пользовательской реализации. –
Мое предположение тогда будет означать, что контекстное меню появится после сообщения правой кнопки мыши. Кроме того, что это не сообщение WM_CONTEXTMENU, это предположение кажется мне подходящим. – darbid
Выполняется ли ваш код в процессе создания окна. –