C++ 在createdialog创建的窗口中捕获编辑控件的MouseMove消息?

C++ 在createdialog创建的窗口中捕获编辑控件的MouseMove消息?,c++,visual-studio,onmousemove,C++,Visual Studio,Onmousemove,我有一个由创建的对话框窗口 对话框窗口中有一个文本编辑控件,它是由CreateDialog()调用自动创建的,但是我似乎无法捕捉它的OnMouseMove消息-只有它的父窗口(控件的父窗口,而不是对话框)CreateDialog()只允许您为主对话框(而不是子对象,如编辑控件)设置过程函数,如果我在那里捕捉到OnMouseMove消息,它们只会触发主对话框本身上的鼠标移动(没有控件的任何地方,例如按钮、文本编辑框等) 除了使用CreateWindowEx()(和所有子对象)手动创建窗口外,是否有

我有一个由创建的对话框窗口

对话框窗口中有一个文本编辑控件,它是由
CreateDialog()
调用自动创建的,但是我似乎无法捕捉它的
OnMouseMove
消息-只有它的父窗口(控件的父窗口,而不是对话框)
CreateDialog()
只允许您为主对话框(而不是子对象,如编辑控件)设置过程函数,如果我在那里捕捉到
OnMouseMove
消息,它们只会触发主对话框本身上的鼠标移动(没有控件的任何地方,例如按钮、文本编辑框等)

除了使用
CreateWindowEx()
(和所有子对象)手动创建窗口外,是否有办法通过ID或其他方式捕获与特定文本编辑控件关联的
OnMouseMove
消息?我通过
GetDlgItem()
检索了它的句柄

我最终要做的是阅读鼠标光标下方的文本,如果单词被识别/匹配,则显示相关的工具提示,如果您有任何想法,我肯定会接受其他选择

以下是基本代码:

创建对话框,使用
DBG\u DLG
模板定义控件

hDbg=CreateDialog(hCurInst,TEXT(“DBG_DLG”),0,DbgDlgProc);
DBG\u DLG
模板在项目的
.rc
文件中定义。我找不到一种简单的方法将代码粘贴到这里,但它有一个特殊的文本编辑控件,我正试图用ID
ID\u OP\u ED
来捕获它

DbgDlgProc()
中的相关代码无效,只捕获与主对话框相关的消息,而不捕获控件本身。将鼠标悬停在控件上不会导致此例程捕获任何消息

BOOL回调DbgDlgProc(
HWND HWND,
UINT消息,
WPARAM WPARAM,
LPARAM
)
{
开关(信息)
{
案例WM_初始化对话框:
返回TRUE;
案例WM_MOUSEMOVE:
OnMouseMove(GET_X_LPARAM(LPARAM),GET_Y_LPARAM(LPARAM),(DWORD)wParam);
返回FALSE;

一旦您编辑了子文本的HWND(从
GetDlgItem()
),您可以使用
SetWindowLongPtr()
或更好的
SetWindowSubclass()
直接对其进行子类化。您的子类将接收直接发送到控件的所有消息

有关更多详细信息,请参阅MSDN:


一旦您编辑了子文本的HWND(从
GetdGitem()
),您可以使用
SetWindowLongPtr()
或更好的
SetWindowSubclass()
直接对其进行子类化。您的子类将接收直接发送到控件的所有消息

有关更多详细信息,请参阅MSDN: