WinCE中调用自绘制控件动态库的问题

叶落寒山 2010-07-18 10:06:43
问题描述:
1、首先我创建了一个WinCE下基于对话框的应用程序SddpApp,还创建了一个WinCE下基于
Regular DLL with MFC statically linked 模式的动态库SddpGraph。在该动态库中
导出一个数码管类CLED,简要代码如下。
class __declspec(dllexport) CLED : public CStatic
{
public:
CLED(void);
virtual ~CLED(void);
public:
.........
protected:
afx_msg void OnPaint();
afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor);
DECLARE_MESSAGE_MAP()
private:
......

};
2、在SddpApp中使用该控件
CLED m_Depth_LED;

DDX_Control(pDX,IDC_DEPTH_LED,m_Depth_LED);//IDC_DEPTH_LED 是一个Static Text型控件的ID

问题是:
应用程序启动后,弹出错误对话框,提示的位置是Wincore.cpp的1144行和1152行
Wincore.cpp中
BOOL CWnd::DestroyWindow()
{
#ifdef _AFX_NO_OCC_SUPPORT
BOOL bResult = ::DestroyWindow(m_hWnd);
#else //_AFX_NO_OCC_SUPPORT
BOOL bResult;
if (m_pCtrlSite == NULL)
bResult = ::DestroyWindow(m_hWnd);
else
bResult = m_pCtrlSite->DestroyControl();
#endif //_AFX_NO_OCC_SUPPORT //1144行

// Note that 'this' may have been deleted at this point,
// (but only if pWnd != NULL)
if (pWnd != NULL)
{
// Should have been detached by OnNcDestroy
#ifdef _DEBUG
ASSERT(pMap->LookupPermanent(hWndOrig) == NULL); //1152 行
#endif
}
}
如果不使用动态库,将CLED的代码拷到SddpApp的工程下,就没有错误。
初学WinCE,不知道如何下手,而且用的开发环境是Vs2005。到现在不知道如何跟踪调试WinCE程序,总提示
无法部署。所以找不到程序是怎么进入到DestroyWindow中的,哪个地方会触发这样的操作?OnPaint()函数
会吗?
遇到类似问题的朋友帮个忙,谢谢大家!!!!!!!!!!
...全文
115 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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