Не можете отправить WM_LBUTTONDBLCLK на edit notepad ?
У меня есть один проект C++ API,
В этом проекте Генделя в блокнот Windows и инъекционных DLL в процесс Notepad, я хочу с двойным щелчком мыши в области редактирования Блокнот на текст моей программы диагностики двойным щелчком мыши, а затем сделать текст в выделенных и показать выделенный текст в подсказки на позиции мыши.
Теперь не удается обнаружить WM_LBUTTONDBLCLK в NewWndProc
Это часть кода:
Что я уже пробовал:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
HWND hwnd= FindWindow ("Блокнот", NULL );
HMENU hMenu, hSubMenu;
с ним hmenu = легко приготовить в домашних(hwnd элемента);
hSubMenu=GetSubMenu(hMenu, 5);
if (hSubMenu==0 )
{
hSubMenu = CreatePopupMenu();
AppendMenu (hSubMenu, MF_CHECKED | MF_UNCHECKED, ID_EXTENSION_DICTIONARY_BY_MOUSE, " включить словарь мышью");
AppendMenu (hSubMenu, MF_CHECKED | MF_UNCHECKED, ID_EXTENSION_DICTIONARY_BY_CLIPBOARD , " включить Словарь по буферу обмена");
AppendMenu(hSubMenu, MF_CHECKED | MF_UNCHECKED, ID_EXTENSION_CLIPBOARD_SPY, " Enable Clipboard Spy");
AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, " & amp; расширение");
SetMenu (hwnd, hMenu);
}
PostMessage(hwnd, WM_COMMAND, GetMenuItemID(hSubMenu, 1), 0);
возвращает 0;
}
LRESULT callback по NewWndProc(hwnd элемента его hwnd, uint с сообщением, параметр wparam параметр wparam, lparam должен параметр lparam)
{
переключатель (сообщение)
{
дело WM_MBUTTONDBLCLK :
msgbox ("найти двойной щелчок мыши ");
дело CS_DBLCLKS:
{
С ним hmenu ним hmenu = легко приготовить в домашних(hwnd элемента);
if (GetMenuState(hmenu, ID_EXTENSION_DICTIONARY_BY_MOUSE, MF_BYCOMMAND | MF_CHECKED))
{
HWND hwndEdit = FindWindowEx(Hwnd, NULL, "EDIT", NULL);
SendMessage(hwndEdit, 0x304, 0, 0);
SendMessage(hwndEdit, 0x304, 0, 0);
SendMessage(hwndEdit, WM_COPY, 0, 0);
SendMessage(hwndEdit, WM_PASTE, 0, 0);
INT nSelStart, nSelEnd;
nSelStart = 2;
nSelEnd = 1000;
Метод SendMessage (&ампер hwndEdit, EM_GETSEL, (параметр wparam); nSelStart, (параметр lparam)&ампер;nSelEnd);
int textLen = (int)SendMessage(hwndEdit, WM_GETTEXTLENGTH, 0, 0);
if (textLen > 0)
{
CONST WCHAR bufferSize = 1024;
Wchar textBuffer[bufferSize] ;
Метод SendMessage(hwndEdit, WM_GETTEXT, (параметр wparam)параметр bufferSize, (параметр lparam)textBuffer);
CreateToolTipForRect(hwndEdit, (LPSTR)textBuffer);
}
}
}
перерыв;
дело WM_COMMAND:
{ HMENU hmenu;
переключатель (LOWORD(wParam))
{
дело ID_EXTENSION_DICTIONARY_BY_MOUSE:
//if(BN_CLICKED == HIWORD(wParam)){}
{
с ним hmenu = легко приготовить в домашних(hwnd элемента);
CheckOrUncheckMenuItem(ID_EXTENSION_DICTIONARY_BY_MOUSE,hmenu);
перерыв;
}
//CheckMenuItem(hmenu, ID_EXTENSION_DICTIONARY_BY_MOUSE, MF_BYCOMMAND | MF_CHECKED);
// ModifyMenu(hmenu, IDM_REGULAR, MF_BYCOMMAND | MF_CHECKED | MF_OWNERDRAW, IDM_REGULAR, (LPTSTR) & ID_EXTENSION_DICTIONARY_BY_MOUSE);
дело ID_EXTENSION_DICTIONARY_BY_CLIPBOARD:
{
с ним hmenu = легко приготовить в домашних(hwnd элемента);
CheckOrUncheckMenuItem(ID_EXTENSION_DICTIONARY_BY_CLIPBOARD,hmenu);
перерыв;
}
дело ID_EXTENSION_CLIPBOARD_SPY:
{
с ним hmenu = легко приготовить в домашних(hwnd элемента);
CheckOrUncheckMenuItem(ID_EXTENSION_CLIPBOARD_SPY,hmenu);
перерыв;
}
по умолчанию:
вернуть процедуру defwindowproc(hwnd элемента, сообщение , параметр wparam, lparam должен);
}
}
перерыв;
дело WM_MOVE:
перерыв;
случае сообщения wm_destroy:
{
LPCTSTR strMsg = " это сообщение было отправлено";
Метод SendMessage(его hwnd, WM_SETTEXT, 0, (параметр lparam)(LPCTSTR)strmsg отображается);
перерыв;
}
case WM_SIZE:
перерыв;
}
вернуться CallWindowProc((функция WndProc)OldWndProc, его hwnd, сообщение, параметр wparam, lparam должен);
}
Philippe Mori
Если нет особого смысла изменять поведение Блокнота. Если Блокнот не может быть непосредственно использован в качестве автономного приложения в вашем случае, то отобразите многострочное текстовое поле непосредственно в вашем приложении.
Кроме того, вы не использовали кодовый блок, чтобы сделать ваш код читаемым, и они часто являются плохой практикой кодирования в вашем коде в виде жестко закодированных констант и строк. Это сделает код более трудным для понимания, поддержки или локализации на другом языке.