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
文件中定义。我找不到一种简单的方法将代码粘贴到这里,但它有一个特殊的文本编辑控件,我正试图用IDID\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: