我的程序为什么不能正常运行呀?

hgwi hgwi 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
本来想让鼠标一进入窗口按钮就自动移开,但为什么鼠标一进入窗口,按钮就不见了,到底是什么地方出的问题呀?请帮帮我谢谢!
.386
.model flat,stdcall
option casemap:none
WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
iRand proto :DWORD, :DWORD
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib

.data
ClassName db "SimpleWinClass",0
AppName db "程序演示-控件",0
ButtonClassName db "button",0
ButtonText db "来点我",0
.data?
hInstance HINSTANCE ?
CommandLine LPSTR ?
hwndButton HWND ?
MousePoint POINT <>
ButtonPoint POINT <>
ButtonRect RECT <>
WinRect RECT<>
.const
ButtonID equ 1
.code
start:
invoke GetModuleHandle, NULL
mov hInstance,eax
invoke GetCommandLine
mov CommandLine,eax
invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT
invoke ExitProcess,eax

WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
LOCAL wc:WNDCLASSEX
LOCAL msg:MSG
LOCAL hwnd:HWND
mov wc.cbSize,SIZEOF WNDCLASSEX
mov wc.style, CS_HREDRAW or CS_VREDRAW
mov wc.lpfnWndProc, OFFSET WndProc
mov wc.cbClsExtra,NULL
mov wc.cbWndExtra,NULL
push hInst
pop wc.hInstance
mov wc.hbrBackground,COLOR_BTNFACE+1
mov wc.lpszMenuName,NULL
mov wc.lpszClassName,OFFSET ClassName
invoke LoadIcon,NULL,IDI_APPLICATION
mov wc.hIcon,eax
mov wc.hIconSm,eax
invoke LoadCursor,NULL,IDC_ARROW
mov wc.hCursor,eax
invoke RegisterClassEx, addr wc
invoke CreateWindowEx,NULL,ADDR ClassName, \
ADDR AppName, WS_OVERLAPPEDWINDOW,\
CW_USEDEFAULT, CW_USEDEFAULT,\
300,200,NULL,NULL, hInst,NULL
mov hwnd,eax
invoke ShowWindow, hwnd,SW_SHOWNORMAL
invoke UpdateWindow, hwnd
.WHILE TRUE
invoke GetMessage, ADDR msg,NULL,0,0
.BREAK .IF (!eax)
invoke TranslateMessage, ADDR msg
invoke DispatchMessage, ADDR msg
.ENDW
mov eax,msg.wParam
ret
WinMain endp

WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
.IF uMsg==WM_DESTROY
invoke PostQuitMessage,NULL
.ELSEIF uMsg==WM_CREATE
invoke CreateWindowEx,NULL, ADDR uttonClassName,ADDR \ButtonText,WS_CHILD or WS_VISIBLE or \BS_DEFPUSHBUTTON,70,75,140,25,hWnd,ButtonID,hInstance,NULL
mov hwndButton,eax
invoke SetFocus, hwndButton
.ELSEIF uMsg==WM_MOUSEMOVE
mov eax,lParam
and eax,0FFFFH
mov MousePoint.x,eax
mov eax,lParam
shr eax,16
mov MousePoint.y,eax
invoke GetWindowRect,hwndButton,ADDR ButtonRect
mov eax,ButtonRect.left
mov edx,ButtonRect.right
.IF MousePoint.x>eax&&MousePoint.x<edx
mov eax,ButtonRect.top
mov edx,ButtonRect.bottom
.IF MousePoint.y>eax&&MousePoint.y<edx
invoke GetWindowRect,hInstance,ADDR WinRect invoke iRand,WinRect.left,WinRect.right
mov ButtonRect.left,eax
invoke iRand,WinRect.top,WinRect.bottom mov ButtonRect.right,eax
.ENDIF
.ENDIF
invoke SetWindowPos,hwndButton,NULL,ButtonRect.left,
\ButtonRect.right,NULL,NULL,SWP_NOSIZE
.ELSE
invoke DefWindowProc,hWnd,uMsg,wParam,lParam
ret
.ENDIF
xor eax,eax
ret
WndProc endp
iRand proc uses ecx edx first:DWORD, second:DWORD
invoke GetTickCount ; 取得随机数种子,当然,可用别的方法代替
mov ecx, 23 ; X = ecx = 23
mul ecx ; eax = eax * X
add eax, 7 ; eax = eax + Y (Y = 7)
mov ecx, second ; ecx = 上限
sub ecx, first ; ecx = 上限 - 下限
inc ecx ; Z = ecx + 1 (得到了范围)
xor edx, edx ; edx = 0
div ecx ; eax = eax mod Z (余数在edx里面)
add edx, first ; 修正产生的随机数的范围
mov eax, edx ; eax = Rand_Number
ret
iRand endp
end start
...全文

相关推荐

Python运行数据采集问题:程序不能正常运行,如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

bug菌¹

创新!高级!【日前、日内非滚动、日内滚动调度以及实时修正】考虑需求侧响应的智慧楼宇多时间尺度调度策略(Matlab代码实现)

创新!高级!【日前、日内非滚动、日内滚动调度以及实时修正】考虑需求侧响应的智慧楼宇多时间尺度调度策略(Matlab代码实现)内容概要:本文介绍了一种考虑需求侧响应的智慧楼宇多时间尺度调度策略,涵盖日前、日内非滚动、日内滚动调度以及实时修正四个阶段,旨在通过Matlab代码实现对智慧楼宇能源系统的优化管理。该策略结合需求侧响应机制,提升能源利用效率与系统运行经济性,适用于新能源背景下的智能建筑能源调度场景。; 适合人群:具备一定电力系统或能源管理基础知识,熟悉Matlab编程,从事科研或工程应用的研究人员与技术人员。; 使用场景及目标:① 实现智慧楼宇在多时间尺度下的精细化能源调度;② 探索需求侧响应在楼宇级能源管理系统中的建模与应用;③ 借助Matlab仿真平台完成调度策略的开发、测试与优化。; 阅读建议:建议读者结合Matlab代码与相关电力系统调度理论,逐步理解各调度阶段的建模逻辑,重点关注优化目标函数与约束条件的设计,同时推荐通过案例仿真验证策略的有效性。

荔枝科研社

Vue3 + Flask + MQTT:构建智慧医院患者服务大厅

Vue3 + Flask + MQTT:构建智慧医院患者服务大厅,mysql+flask+mqtt客服+ai

速易达网络

论文复现带有攻击角约束的大机动目标协同攻击制导律(Simulink仿真、Matlab代码实现)

内容概要:本文介绍了一个名为“带有攻击角约束的大机动目标协同攻击制导律”的Matlab/Simulink仿真项目,旨在通过复现相关学术论文中的制导算法,实现对高速、大机动目标的多导弹协同攻击,并满足特定的攻击角度要求。该资源详细提供了Simulink仿真模型和配套的Matlab代码,涉及超扭滑模(STSMC)、快速终端滑模(FTSMC)等先进控制算法的应用,以确保制导律的精确性、鲁棒性及多弹协同的同时攻击性能。项目不仅涵盖算法的数学建模与控制逻辑实现,还通过三维空间仿真验证了针对强机动目标的制导有效性。; 适合人群:具备Matlab/Simulink基础操作能力,从事或研究飞行器制导、导航与控制(GNC)、自动化、航空航天工程、兵器科学与技术等相关领域的研究生、科研人员及工程师。; 使用场景及目标:① 学习和复现带有攻击角约束的协同攻击制导算法;② 研究和对比不同滑模控制技术(如STSMC, FTSMC)在制导系统中的性能表现;③ 利用提供的仿真模型和代码进行二次开发、算法优化及拓展至三维多弹协同攻击场景。; 阅读建议:使用者应结合相关论文的理论部分,仔细阅读和调试所提供的Matlab代码与Simulink模型,重点关注制导律的设计逻辑、各模块之间的信号传递关系以及关键控制参数的设置与整定,以深入理解多弹协同制导与攻击角约束的实现原理。

吃兔子的大脑腐

新能源纯电动汽车驾驶员模块、整车控制器、减速器模块、车速模块等建模Simulink仿真模型

内容概要:本文档提供了新能源纯电动汽车多个关键模块的Simulink仿真模型资源,涵盖驾驶员模块、整车控制器、减速器模块、车速模块等核心子系统,通过模块化建模仿真手段,完整呈现了电动汽车动力传动与控制系统的动态响应机制与交互逻辑。资源不仅包括各独立模块的精细化建模,还涉及系统级集成与联合仿真,适用于开展整车性能分析、控制策略验证及能量管理优化等科研任务,旨在为新能源汽车领域的教学研究与工程开发提供可靠的技术参考与仿真平台支撑。; 适合人群:具备一定自动化、电气工程或车辆工程背景,从事新能源汽车系统仿真、控制算法开发等相关工作的研究人员、高校师生及工程技术人员。; 使用场景及目标:①用于新能源汽车动力系统建模与仿真教学实验;②支撑整车控制策略(如扭矩分配、能量回收)的设计与验证;③作为科研项目中系统级仿真平台的基础组件,提升开发效率与仿真精度; 阅读建议:建议使用者结合实际研究需求,深入理解各模块内部结构与参数设置,灵活调整模型以适配不同工况,并利用提供的完整资源目录进一步拓展学习与应用范围。

稷下科研社
评论 4
收藏 已收藏
分享
返回顶部
hgwi
汇编语言 21,500 成员 41,619 内容