[英]8086 assembly right mouse click interrupts
我正在 Windows 机器上使用 8086 程序集进行一个项目,我需要知道单击了哪个鼠标按钮。 这有什么中断? 或者我如何去发现这个?
谢谢
如果你正在制作一个在 windows 下运行的 DOS 程序,你可以使用软件中断 0x33,函数 3,它返回 BL 寄存器中的按钮状态:
mov ax,0x3 int 0x33 test bl,1 jnz left_button_pressed test bl,2 jnz right_button_pressed
更多信息在这里http://www.ctyme.com/intr/rb-5959.htm
如果您正在制作本机 Windows 应用程序,您可以通过检查传递给您注册的 WndProc 的标准鼠标按钮消息(WM_LBUTTONDOWN/UP 、WM_RBUTTONDOWN/UP 、WM_MBUTTONDOWN/UP)来测试按钮按下情况,该消息是由您的程序创建的主窗口.
WndProc 的函数声明为“LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);”,消息类型在 uMsg 中传递,因此您需要检查 [esp+12] 处的 DWORD 并进行比较它带有您要处理的消息 ID。
在“DOS”机器上,查看软件中断 0x33 。
命令 AH = 0x03 返回在寄存器 CX 中按下的鼠标按钮(以及其他寄存器中的鼠标坐标和其他信息)。
如果可用,当然为此目的使用 Windows API 会容易得多,如 matja 的回答所示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.