- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我在 C# 中导入 WinApi 函数、编写回调等 ( example ) 并且总是想知道:
LRESULT
作为最后的结果? W参数? L-参数 ?WPARAM
和 LPARAM
有时包含结构。所以我需要将它们用作 IntPtr
。 LRESULT
怎么样?我使用 int
或更好的 IntPtr
安全吗?我在 C# 中为 LRESULT 使用什么类型? int
或 IntPtr
?
最佳答案
那是 Charles Simonyi,Microsoft 应用软件组的前负责人,该组开发了 Word 和 Excel。他是制定标识符命名标准的人。由于没有人知道他的姓氏如何发音,他们选择了他出生的国家并称之为匈牙利记法。 Windows 小组也采用了它,但选择了“坏”的一种,System Hungarian。选择标识符的第一个字母以记录变量的类型。与“好”类型相反,Apps Hungarian 通过逻辑类型名称而不是物理类型名称选择前缀。 Simonyi 的版本。
所以它在 Long 中是 L,在 Word 中是 W。 LPCWSTR 就是这样一个傻瓜,指向常量宽字符串的长指针。 System Hungarian 的一个明显问题是,当体系结构发生变化时,它不再能很好地工作。最初选择用于 16 位操作系统(L=32 位,W=16 位),在不更改名称的情况下迁移到 32 位(W=32 位),我们今天是 64 位(L= W=64 位)。
所以请忽略这些前缀,它们只是一个历史事故。您确实必须为 LRESULT 类型选择 IntPtr,在 64 位版本的 Windows 上它当然可以是 64 位值。如果您不这样做,就很难诊断出问题,这是这里的一个常见问题。
题外话,您在照片背景中看到的模糊图像也是关于 Simonyi 的一个有趣的趣闻。微软与其员工分享了它的巨大成功,并将其中许多人变成了千万富翁。您在背景中看到的是停靠在国际空间站的航天飞机的照片。西蒙尼是七位“太空游客”之一,他为自己买了一张去国际空间站的机票。唯一一个这样做的两次,让他损失了 6000 万美元:)
关于c# - LRESULT、WPARAM 和 LPARAM 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17851348/
在 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
我是一名优秀的程序员,十分优秀!