- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
一个标准的窗口过程函数采用这个原型(prototype):
LRESULT CALLBACK WndProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
当消息如WM_MOUSEMOVE
或 WM_CHAR
, WndProc
函数将接收消息源自的窗口,以及任何额外的参数,这些参数将与 msg 和 wParam/lParam 一起。
我现在拥有的是一个类。说
class Random
{
public:
void Initialize ();
private:
void Draw ();
HWND hWnd;
friend LRESULT CALLBACK RandomProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
};
hWnd
之后由 Initialize ()
初始化和创建, 它会发送类似 WM_LBUTTONDOWN
的消息至 RandomProc
.收到消息后,我想要RandomProc
使用 Draw ()
重画类的窗口 Random
.
问题是,我会有多个 Random
变量,每个变量都有一个窗口。所有窗口都会将它们的消息发送到 RandomProc
, 并希望它重绘 hWnd
的相应窗口.我不知道哪个随机变量根据 hWnd 参数或 msg/wParam/lParam 发送消息,因此无法访问适当的 Draw ()
功能,无法重绘正确的窗口。
有没有一种方法可以在每次发送消息时将指向窗口类的指针传递给过程,或者是否有另一种方法可以访问其 hWnd 发送消息的 Random 类?
最佳答案
您不是在寻找 GetWindowLongPtr
吗?/SetWindowLongPtr
函数?
此函数分配/检索指向/来自窗口句柄的任意指针。您可以将指向 Random 类实例的指针分配给您创建的每个窗口。在 RandomProc
中,您只需使用 GetWindowLongPtr
并将指针转换为 Random*
。
正如 Chris 在评论中所说,使用 GWLP_USERDATA
属性来分配指针。
关于c++ - 传递额外的 wParam/lParam 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10766305/
在 Delphi 6 中 WPARAM 被声明为已签名: WPARAM = Longint; 在 Delphi 2010 中,WPARAM 被声明为已签名: WPARAM = INT_PTR; 但在
我正在寻找一种将对象(在我的例子中为 vector)作为 WPARAM 传递的方法采用 C++11 风格。 我发现的教程使用了 C 风格的转换或 reinterpret_cast传递一个指向对象的指针
我正在尝试获取由消息的 wParam 属性中返回的整数表示的实际系统消息。有没有办法做到这一点或可以实现这一目标的功能? 最佳答案 这是关于 WndProc 的问题吗?你说的是哪条消息? LRESUL
下面是整体代码: LRESULT WmPointerAPI::WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { HRES
如果我使用计算机鼠标滚动窗口,我会得到以下 Spy++ 结果: fwKeys: 0, zDelta: -120 我需要通过代码模拟鼠标滚轮事件,所以我像这样使用 PostMessage: Public
出于不相关的原因,我在 C# 应用程序的 WinForm 中捕获 WM_SYSCOMMAND 消息。有时,我的处理程序会收到带有 wParam 0xF063 的 WM_SYSCOMMAND 消息。 文
我目前正在尝试实现 http://www.codeproject.com/KB/threads/winspy.aspx 中的一些代码(子类化部分)到我的项目中,但遇到一些问题,我调试了 dll,似乎当
我有一个来自 WM_KEYDOWN 消息的 pMsg->wParam,我想将它转换成一个 CString。我该怎么做? 我试过下面的代码: TCHAR ch[2]; ch[0] = pMsg->wPa
在处理 What's wrong with this unmanaged code in C#? 中描述的问题时我偶然发现了参数 wParam 及其类型 IntPtr for SendMessage
在查看 RAWINPUT 结构的 MSDN 文档时,它有以下声明: typedef struct tagRAWINPUT { RAWINPUTHEADER header; union {
尝试这样做: 代码: WPARAM wParam = MAKEWPARAM(MK_LBUTTON, MK_RBUTTON, MK_SHIFT, MK_CONTROL, MK_MBUTTON); Pos
我知道 wParam 和 lParam 是(我相信是 32 位)特定于当时正在传递的消息的信息位,但是有什么方法可以分辨每条消息放入这两个消息中的内容吗? 我在某处读到 wParam 是 16 位而
一个标准的窗口过程函数采用这个原型(prototype): LRESULT CALLBACK WndProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM l
将值传递给同时接受 WPARAM 和 LPARAM 参数的函数时,我传递其中的哪一个参数是否重要?有人告诉我,如果我使用 Windows x64,我应该使用 WPARAM;这是真的? 最佳答案 发送消
我知道我在这里很懒,我应该自己搜索头文件,但是 LPARAM 和 WPARAM 参数的实际类型是什么?它们是指针,还是四字节整数?我正在编写一些 C# 互操作代码,并希望确保它能够在 x64 系统上运
我需要填充结构的成员: typedef struct SPEVENT { SPEVENTENUM eEventId : 16; SPEVENTLPARAMTYPE el
我有点困惑。当一个文件被拖到一个带有 WS_EX_ACCEPTFILES 标记的窗口上时,它会将一个 PostMessage 放入 WndProc 函数中,该函数将 UINT 消息设置为 WM_DRO
我正在尝试调用 win32api.SendMessage()通过我的 Python 应用程序(即发送应用程序)。 接收应用程序的 API 声明消息的格式为:::SendMessage(, , (WPA
我在 C# 中导入 WinApi 函数、编写回调等 ( example ) 并且总是想知道: 它们是什么意思? LRESULT 作为最后的结果? W参数? L-参数 ? 如何安全地“包裹”它们 WPA
这个问题在这里已经有了答案: How should I pass negative values to SendMessage and Perform when they expect a Nativ
我是一名优秀的程序员,十分优秀!