4788|9

73

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于first-chance exception in **.exe access violation的问题 [复制链接]

大侠好!
我在EVC4.0下面建了一个“WCE Dynamic -Link Library"的工程,然后再建一个MFC的应用程序,用应用程序调用动态库(dll),在动态库中的WM_PAINT消息中执行第一条语句时,就出现了如题所示的异常,请问一下,怎么解决啊?
拜谢。

最新回复

晕,搞了半天,只是这个对象的变量定义问题,看来问题是已经解决了。谢谢lenux。   详情 回复 发表于 2008-7-31 17:23
点赞 关注

回复
举报

91

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
第一条语句时?是什么内容呢???
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
To 91program:WM_PAINT消息中,第一条语句是:BeginPaint(HWND, &ps);
我觉得不是这个语句的问题,怎么能把我的代码放到这个上面来?
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

4
 
很麻烦的问题。

你dll里显示界面啊。

界面类的初始化部分有没有问题啊?
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

5
 
在第二个贴子中我附加了原代码。
我把一个以前封装好并能正常使用的dll重新用到这里来,也还是会有这样的异常。
不知道是跟什么有关。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

6
 
你的代码是最新的?

CMyButton中的BtnSubclassProc函数是如何和你的button的窗口处理关联到一起的?

你用的sdk是什么?
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

7
 

  1. BOOL CMyButton::Init(HINSTANCE hInst, HWND hBtn)
  2. {
  3. 。。。。
  4. m_pfDefaultProc = (WNDPROC)::SetWindowLong(m_hwnd, GWL_WNDPROC, (DWORD)BtnSubclassProc);       
  5. 。。。
  6. }

  7. LRESULT CALLBACK CMyButton::BtnSubclassProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
  8. {
  9. 。。。。。。。。
  10. //lret = CallWindowProc(pThis->m_pfDefaultProc, hwnd, message, wParam, lParam);
  11.         return DefWindowProc(hwnd, message, wParam, lParam);
  12. }
复制代码


可以出现button。
还有些刷新上的问题,自己修改。

vs2005, wince 5.0 sdk, 测试通过。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

8
 
这个问题编译运行确实正常,但是跟踪调试一下,消息循环的处理不对,在WM_PAINT消息中,执行BeginPaint(HWND, LPPAINTSTRUCT)语句之后,就会产生WM_ERASEBKGND消息,之后就不再执行Paint了!!!而且消息好像也没有了,CE5.0的帮助说明如下:
Calling SetWindowLong with the GWL_WNDPROC index creates a subclass of the window class used to create the window. An application can subclass a system class, but should not subclass a window class created by another process. The SetWindowLong function creates the window subclass by changing the window procedure associated with a particular window class, causing the system to call the new window procedure instead of the previous one. An application must pass any messages not processed by the new window procedure to the previous window procedure by calling CallWindowProc. This allows the application to create a chain of window procedures.
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

9
 

BOOL CMyButton::Init(HINSTANCE hInst, HWND hBtn)
{
.............
GetClientRect(hBtn, &m_rcButton);//需要初始化该结构
}

在头文件:mfctestdlg.h中,把btn定义为成员,而不是局部变量
#include  "../ApiDll/MyButton.h"
class CMFCTestDlg : public CDialog
{

  CMyButton btn;
// Construction
public:
。。。。。。。。。。
}

在cpp去掉它的定义。

能显示图片了。
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

10
 
晕,搞了半天,只是这个对象的变量定义问题,看来问题是已经解决了。谢谢lenux。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
福禄克有奖直播:高精度测温赋能电子制造 报名中!
直播时间:2025年2月28日(周五)上午10:00
直播主题:高精度测温赋能电子制造
小伙伴们儿快来报名直播吧~好礼等你拿!

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表