编译错误后点停止vb就自动退出了是怎么回事

fengyin520 2008-12-05 09:13:12
由于代码写的比较多,以前也发生过这样的事,后来不知怎么好的,最近又出这样的问题了,假如我的代码里有个未定义的变量或其他能导致运行时出现编译错误的提示然后点调试,再点窗口的停止按钮,vb就自己退出了,vb没问题,新建的工程就没问题。哪位高手遇到过这种情况,应该是我的某个代码的问题,但如何能找到具体有问题的代码啊。
...全文
97 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
klj123 2008-12-08
  • 打赏
  • 举报
回复
我也出现过类似的问题,我是重新建个工程,然后将代码拷过去就解决了问题。
是是非非 2008-12-08
  • 打赏
  • 举报
回复
搜索一下 无崩溃子类化
fengyin520 2008-12-07
  • 打赏
  • 举报
回复
终于找着问题的原因了,原来以为没信用api但后来发现了以前被注释掉的api又用了,导致了vb退出,具体代码是这样的,朋友们帮我分析一下这个代码出了什么问题了,为什么会导致vb异常


'控制窗体最小限定的代码
'新建一个标准模块.
'代码如下
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long
Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" _
(ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long

Declare Sub CopyMemory Lib "KERNEL32" Alias "RtlMoveMemory" ( _
lpvDest As Any, lpvSource As Any, ByVal cbCopy As Long)
Public Const GWL_WNDPROC = (-4)
Public Const WM_GETMINMAXINFO = &H24
Type POINTAPI
X As Long
Y As Long
End Type
Type MINMAXINFO
ptReserved As POINTAPI
ptMaxSize As POINTAPI
ptMaxPosition As POINTAPI
ptMinTrackSize As POINTAPI
ptMaxTrackSize As POINTAPI
End Type
Public preWinProc As Long

Public Function wndproc(ByVal hWnd As Long, ByVal Msg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
Dim lwd As Long, hwd As Long
If Msg = WM_GETMINMAXINFO Then
Dim maxmin As MINMAXINFO
CopyMemory maxmin, ByVal lParam, Len(maxmin)
'maxmin.ptMaxTrackSize.x = 500 '设定最大Resize的宽度
'maxmin.ptMaxTrackSize.y = 400 '设定最大Resize的高度
maxmin.ptMinTrackSize.X = 800 '设定最小Resize的宽度
maxmin.ptMinTrackSize.Y = 600 '设定最小Resize的高度
CopyMemory ByVal lParam, maxmin, Len(maxmin)
Else
wndproc = CallWindowProc(preWinProc, hWnd, Msg, wParam, lParam)
End If
End Function



在form load里写
'控制窗体最小限定的代码
Dim ret As Long
preWinProc = GetWindowLong(Me.hWnd, GWL_WNDPROC)
ret = SetWindowLong(Me.hWnd, GWL_WNDPROC, AddressOf wndproc)
'控制窗体最小限定的代码

在unload里写
'控制窗体最小限定的代码
Dim ret As Long
ret = SetWindowLong(Me.hWnd, GWL_WNDPROC, preWinProc)
'控制窗体最小限定的代码

fengyin520 2008-12-06
  • 打赏
  • 举报
回复
option explicit 一直用,api也很少用,出问题之前和之后好像没用过api,以前用过,但用完一直好好的,没出问题,还有没有其他方面的原因了呢?
xredhat 2008-12-05
  • 打赏
  • 举报
回复
首先窗体用上option explicit
然后再检查一下api调用
导致这个问题应该是读写了不允许的内存引起的
fengyin520 2008-12-05
  • 打赏
  • 举报
回复
应该不是病毒,因为在好几台机器上试都是这样的呀
xielang127 2008-12-05
  • 打赏
  • 举报
回复
顶一下
hbsjz33 2008-12-05
  • 打赏
  • 举报
回复
友情up
qap22 2008-12-05
  • 打赏
  • 举报
回复
友情up
zsj05 2008-12-05
  • 打赏
  • 举报
回复
好像有病毒
sonic_andy 2008-12-05
  • 打赏
  • 举报
回复
全编译执行试试?
net的最近面试经典试题ASP.NET面试题集合 1. 简述 private、 protected、 public、 internal 修饰符的访问权限。 答 . private : 私有成员, 在类的内部才可以访问。 protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,没有访问限制。 internal: 在同一命名空间内可以访问。 2 .列举ASP.NET 页面之间传递值的几种方式。 答. 1.使用QueryString, 如....?id=1; response. Redirect().... 2.使用Session变量 3.使用Server.Transfer 3. 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。 答:public class MainClass { public static void Main() { Console.WriteLine(Foo(30)); } public static int Foo(int i) { if (i 0 && i <= 2) return 1; else return Foo(i -1) + Foo(i - 2); } } 4.C#中的委托是什么?事件是不是一种委托? 答 : 委托可以把一个方法作为参数代入另一个方法。 委托可以理解为指向一个函数的引用。 是,是一种特殊的委托 5.override与重载的区别 答 : override 与重载的区别。重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要 Override 是进行基类中函数的重写。为了适应需要。 6.如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理? 答 : this.Server.Transfer 7.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty? 答: foreach (System.Windows.Forms.Control control in this.Controls) { if (control is System.Windows.Forms.TextBox) { System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control ; tb.Text = String.Empty ; } } 8.请编程实现一个冒泡排序算法? 答: int [] array = new int ; int temp = 0 ; for (int i = 0 ; i < array.Length - 1 ; i++) { for (int j = i + 1 ; j < array.Length ; j++) { if (array[j] < array) { temp = array ; array = array[j] ; array[j] = temp ; } } } 9.描述一下C#中索引器的实现过程,是否只能根据数字进行索引? 答:不是。可以用任意类型。 10.求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m [Page] 答: int Num = this.TextBox1.Text.ToString() ; int Sum = 0 ; for (int i = 0 ; i < Num + 1 ; i++) { if((i%2) == 1) { Sum += i ; } else { Sum = Sum - I ; } } System.Console.WriteLine(Sum.ToString()); System.Console.ReadLine() ; 11.用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层? 答:一般为3层 数据访问层,业务层,表示层。 数据访问层对数据库进行增删查改。 业务层一般分为二层,业务表观层实现与表示层的沟通,业务规则层实现用户密码的安全等。 表示层为了与用户交互例如用户添加表单。 优点: 分工明确,条理清晰,易于调试,而且具有可扩展性。 缺点: 增加成本。 12.在下面的例子里 using Sy

7,765

社区成员

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

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