一个标准窗口过程函数借此原型:传递额外的wParam/lParam参数?
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发送消息时的指针传递给类窗口的程序?
消息旨在以每个窗口为基础发送。你的'hWnd'参数是什么?如果您希望窗口使用相同的过程,请让它们使用相同的类,或者为您使用的每个Windows类指定相应的过程。 – chris
就我而言,这些类有点像“按钮”。我需要宣布其中几个。它们都具有相同的过程,因为它们都是相同类型的“按钮”,但我希望它们位于单独的类中,以便轻松控制和声明按钮。有没有办法做到这一点? – GILGAMESH
但并不是每个按钮都有相同的'HWND'。这就是你通常将他们分开的方式。用'HWND'绘制'有一个大问题吗? – chris