关于Win32API中的MAKELONG
来源:互联网 发布:nba季后赛数据排行榜 编辑:程序博客网 时间:2024/06/07 03:30
Win32API中有一个MAKELONG函数,其实是一个宏,其介绍如:
MAKELONG macro creates an unsigned 32-bit value by concatenating two given 16-bit values.
DWORD MAKELONG(
WORD wLow, // low-order word of long value
WORD wHigh // high-order word of long value
);
大概是将两个16位数值连接成一个32位无符号数值。
在很多地方,有用到例如 (Delphi语法):
var
li_row : Integer;
l_row : wparam;
begin
li_row := 1000; // 例如要滚动到1000行
l_row := MAKELONG(SB_THUMBPOSITION, li_row); // 转换,如果不转换,是滚动不了,API识别不了。
SendMessage(mle_record, WM_VSCROLL, l_row, 0); // 滚动到 mle_record 的 li_row 行
end;
可是在Win32汇编里面,却发现没有这个东西,经过简单试了一下,发现
MAKELONG(SB_THUMBPOSITION, li_row) 其实是相当于 li_row * 65536 + 4
这下好了,在Win32汇编里面也可以使用这样的公式来代替 MAKELONG 宏。
顺便把整理的写下来吧,如下:
xor esi,esi
mov esi,li_row
inc esi
mov li_row,esi
mov eax,li_row
mov ecx,65536D
mul ecx
mov li_row,eax
xor esi,esi
mov esi,li_row
add esi,4D
mov li_row,esi
invoke SendMessage,mle_record,WM_VSCROLL,li_row,0
- 关于Win32API中的MAKELONG
- 关于 Win32API 中的 LoadLibrary
- MAKELONG
- 关于c#调用win32api
- MAKELONG用法
- Win32API
- 一些WIN32API在C#中的运用
- 一些WIN32API在C#中的运用
- MAKELONG, MAKELPARAM, MAKEWPARAM,MAKELRESULT
- MAKEWORD与MAKELONG
- 关于vb.net 调用win32API Reamprocessmemory的问题
- 关于Win32API(主要是一个宏观上分类)
- 关于python提示no module named win32api问题的解决
- MAKEWPARAM 宏 及MAKELONG ,MAKELPARAM,MAKELRESULT
- Win32API大全
- Win32API详解
- 常用WIN32API
- Win32API大全
- MM7 API (4)
- MM7 API (5)
- asp.net(1)
- Icon Design Guidelines-android 图标设计指导
- 莫名其妙的“网线未连接”
- 关于Win32API中的MAKELONG
- php+apach+mysql
- GridView实用技巧总结
- string 和int 转换成byte数组
- 常用的网站功能测试方法
- 职责链模式
- [Python Challenge] - Q5
- 脚本启动java 程序windows +lin...
- ZedGraph控件,2D的线性图、条形图和饼图