繁体   English   中英

8086 程序集鼠标右键单击中断

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM