MSG结构的用途是什么?参数代表什么?

时间:2014-02-19 12:13:22

标签: c++ winapi visual-c++

我是vc ++的新手,我正在创建一个win32窗口应用程序。我在我的visual studio中创建了默认项目。在浏览代码时,我找到了MSG msg;。我搜索了很多关于它的用途以及它的参数含义的内容。我在msdn中找到了一个非常简短的描述。

typedef struct tagMSG {
  HWND   hwnd;
  UINT   message;
  WPARAM wParam;
  LPARAM lParam;
  DWORD  time;
  POINT  pt;
} MSG, *PMSG, *LPMSG;

关于msg结构的参数和使用的描述对我来说很难理解。所以任何人都可以为我做好准备。

2 个答案:

答案 0 :(得分:0)

如果可能,您应该避免与此结构有任何关系。在visual studio c ++中,您通常需要使用的是SendMessage()和PostMessage()函数,它们用于在需要时生成消息,并在接收消息的任何内容中添加消息映射。消息映射将消息路由到特定的函数,该函数通常只能看到wParam和lParam消息参数,或者根本看不到任何参数。有许多特殊的消息映射条目使用带有消息中额外参数的函数,通常是pt。

如果您真的在Win32级别编写所有代码并且没有使用MFC和消息映射支持,那么事情就更难了!你需要的是一个处理发送到给定窗口类型的消息的单个函数,它应该使用由消息值驱动的switch语句来调用特定于消息的函数,通常将wParam和lParam传递给它们。关于WindowProc的文档加上谷歌搜索这个名称应该可以帮助你掌握这个。

答案 1 :(得分:0)

Windows使用MSG结构将多种内容传递给您的程序,包括键,鼠标移动,点击,对窗口所做的更改等。不同消息的参数用法不同,因此需要详细信息查找特定消息。您应该使用一本书或教程向您展示创建Win API程序的基础知识。在那里,您将遇到几个必须处理的示例消息。