Sendmessage在方法定义内部无法正常工作

Sendmessage not working properly inside of a method definition

本文关键字:常工作 工作 方法 定义 内部 Sendmessage      更新时间:2023-10-16

为了防止WM_LBUTTONUP事件被代码淹没,我决定创建一个类方法,其中包含最初在WM_LBUTTONUP上触发的代码。

示例:

case WM_LBUTTONUP:
{//Code that used to trigger on WM_LBUTTONUP below:
x=4;
y=2;
SendMessage(hWnd, CUSTOM_WMMESSAGE, NULL, NULL);
}//The above SendMessage() call works

方法定义:

void Dog::bark(HWND hindow, INT wm_message)
{//All code that used to trigger on WM_LBUTTON up was moved to this method
x=4;
y=2;
SendMessage(hwindow, wm_message, NULL, NULL);
}

之后:

case WM_LBUTTONUP:
{Object.bark();}
//When SendMessage was called this way (inside of a method definition)
//it did not work!

问题:

SendMessage()在WM_LBUTTONUP上工作,但它没有在类方法内部使用。但是,一旦我从WM_LBUTTONUP上的类方法调用SendMessage(),消息就不会被发送(这意味着SendMessage(。

请注意:

方法定义与WM_LBUTTON不在同一个文件中(我希望保持这种方式,以防止main.cpp中填充过多代码:)

编辑

包含类定义的文件名称为Dog.hpp我在main.cpp中包含了Dog.pp。我已经成功地创建了其他类方法(在dog.hpp内部),这些方法都有效,所以我知道这个类或头文件代码没有错。唯一的问题是,当SendMessage()函数在dog.hpp内部调用时,与在main.cpp中调用类似,它不起作用。

Object.bark()需要输入参数,但您没有将其传递给它。您需要这样做:

case WM_LBUTTONUP:
{
Object.bark(hWnd, CUSTOM_WMMESSAGE);
break; // <-- this is missing in your original code as well!
}