A
Another_eYes
Unregistered / Unconfirmed
GUEST, unregistred user!
遇到一个很棘手的问题:
我写了个控件,运行时动态create的话一切正常。安装也正常,design
时也能将我的控件放到form上,显示也很正常,用Object Inspector
修改其中的属性时显示也有反应。
编译也通过。但是一旦运行,即出现‘Access Violation at address xxxxx, write of address xxxxxx...', 根本无法启动程序。
单步跟踪发觉application.run不能执行。
我在控件中用了makeobjectinstance, setwindowlong(form.handle,
GWL_WNDPROC,...)将我的一个类中的过程替换了form的wndproc
替换的工作我是override control.SetParent方法,然后在其中进行的。
可以肯定,此时form.handle已经建立.
由于动态create的控件运行正常,可以排除替换form的wndproc的
中代码有问题。
现在怀疑问题出在替换过程中,即makeobjectinstance出错,但是
无法跟踪,不能确定问题所在。
求助:
1. 除了makeobjectinstance之外是否还有其他可能出现该问题?
2. 有无方法跟踪一个已经安装了的控件中的代码。
3. 在我控件create整个过程的哪一步运行makeobjectintance才不会
出现问题?
4. 有没有其他好的建议?
我写了个控件,运行时动态create的话一切正常。安装也正常,design
时也能将我的控件放到form上,显示也很正常,用Object Inspector
修改其中的属性时显示也有反应。
编译也通过。但是一旦运行,即出现‘Access Violation at address xxxxx, write of address xxxxxx...', 根本无法启动程序。
单步跟踪发觉application.run不能执行。
我在控件中用了makeobjectinstance, setwindowlong(form.handle,
GWL_WNDPROC,...)将我的一个类中的过程替换了form的wndproc
替换的工作我是override control.SetParent方法,然后在其中进行的。
可以肯定,此时form.handle已经建立.
由于动态create的控件运行正常,可以排除替换form的wndproc的
中代码有问题。
现在怀疑问题出在替换过程中,即makeobjectinstance出错,但是
无法跟踪,不能确定问题所在。
求助:
1. 除了makeobjectinstance之外是否还有其他可能出现该问题?
2. 有无方法跟踪一个已经安装了的控件中的代码。
3. 在我控件create整个过程的哪一步运行makeobjectintance才不会
出现问题?
4. 有没有其他好的建议?