JCButton按钮控件,关闭窗体时整个程序崩溃的解决方法

xlcsfa 2019-07-26 06:48:02
曾经看到一个一样的帖子,不知道原楼主问题是否解决,本人也遇到一样的问题,经过几天的分析摸索,问题已经解决,特此告之方法以免使用该控件的其他朋友少走弯路。
当使用一些新型实用漂亮的按钮如以下经过本人挑选的三个按钮 JCButton(用户按钮)、EXButton1.ocx、hmButton1.ocx (EXButton1.ocx、hmButton1.ocx按钮更是不需要注册)时,在退出或者程序运行时出现莫名其妙的崩溃(如内存不能为空等),出现此类崩溃的原因是用户在程序中使用了“END”来结束整个程序。可改为 Unload Form1、 Unload Form2、 Unload Form3卸载所有窗体,这样会腾出时间让按钮控件释放所占用的内存,而不是使用“END”一锤定音的结束整个程序。
...全文
445 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xlcsfa 2019-09-18
  • 打赏
  • 举报
回复
引用 3 楼 weixin_40601024 的回复:
引用 1 楼 xlcsfa 的回复:
本人猜想,当程序需要使用不需要注册的控件时(JCButton按钮虽然是用户控件,但生成OCX后一样不需要注册,也只有使用其OCX控件时才会崩溃,使用用户控件未发现崩溃),这些控件要运行,会直接使用内存?那么程序中都不能用“end”来结束整个程序?望高手给出答案
如何用vb语言编写crc16


vb语言编写crc16,这个可用:
Public Function CRC16(P As String) As String
Dim DataA() As Byte
Dim CRC16Lo As Byte, CRC16Hi As Byte 'CRC寄存器
Dim CL As Byte, CH As Byte '多项式码&HA001
Dim SaveHi As Byte, SaveLo As Byte
Dim I As Integer
Dim Flag As Integer
Dim strMsg As String
Dim intLen As Integer
strMsg = Replace(P, " ", "")
intLen = Len(strMsg) / 2 - 1
ReDim DataA(0 To intLen) As Byte
For I = 0 To intLen
DataA(I) = Val("&H" & Mid(strMsg, I * 2 + 1, 2))
Next
CRC16Lo = &HFF
CRC16Hi = &HFF
CL = &H1
CH = &HA0
For I = 0 To UBound(DataA)
CRC16Lo = CRC16Lo Xor DataA(I) '每一个数据与CRC寄存器进行异或
For Flag = 0 To 7
SaveHi = CRC16Hi
SaveLo = CRC16Lo
CRC16Hi = CRC16Hi \ 2 '高位右移一位
CRC16Lo = CRC16Lo \ 2 '低位右移一位
If ((SaveHi And &H1) = &H1) Then '如果高位字节最后一位为1
CRC16Lo = CRC16Lo Or &H80 '则低位字节右移后前面补1
End If '否则自动补0
If ((SaveLo And &H1) = &H1) Then '如果LSB为1,则与多项式码进行异或
CRC16Hi = CRC16Hi Xor CH
CRC16Lo = CRC16Lo Xor CL
End If
Next Flag
Next
CRC16 = Right("0" & Hex(CRC16Lo), 2) & Right("0" & Hex(CRC16Hi), 2) 'CRC16的校验码(低位在前高位在后)
Erase DataA
End Function
xlcsfa 2019-09-18
  • 打赏
  • 举报
回复
是不是JCButton按钮不能用于大型程序?
xlcsfa 2019-09-18
  • 打赏
  • 举报
回复
如今又发现,没有用“end”结束程序的时候,当使用JCButton按钮过多时,且程序较大时也会出现崩溃
舉杯邀明月 2019-08-27
  • 打赏
  • 举报
回复
这没什么好奇怪的,用 End进行“暴力结束”,
 很可能造成一些“资源”(GDI句柄、内存句柄等)不能正确释放,
 引起一些“问题”实属正常。

我的VB程序, 从来没有使用 End来结束运行的。
冰小柠柠柠 2019-08-26
  • 打赏
  • 举报
回复
引用 1 楼 xlcsfa 的回复:
本人猜想,当程序需要使用不需要注册的控件时(JCButton按钮虽然是用户控件,但生成OCX后一样不需要注册,也只有使用其OCX控件时才会崩溃,使用用户控件未发现崩溃),这些控件要运行,会直接使用内存?那么程序中都不能用“end”来结束整个程序?望高手给出答案
如何用vb语言编写crc16
xlcsfa 2019-07-26
  • 打赏
  • 举报
回复
本人猜想,当程序需要使用不需要注册的控件时(JCButton按钮虽然是用户控件,但生成OCX后一样不需要注册,也只有使用其OCX控件时才会崩溃,使用用户控件未发现崩溃),这些控件要运行,会直接使用内存?那么程序中都不能用“end”来结束整个程序?望高手给出答案

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧