• 全部
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

菜鸟问题,有关句柄 急!!100分求助

fengzizai 2008-04-09 08:42:23
我用vc++6.0mfc做的一个程序,窗口都是dialog的,有两个子窗口好像存在句柄失效问题,当子窗口实例化以后,鼠标点击父窗体是无效的,但是当鼠点击父窗体以外的其他程序或Windows桌面时,程序出现错误退出,后来调试发现当鼠标点击外面时窗口的句柄得到,调试时弹出unhandled exception in 我的程序.exe,而且程序的其他子窗口没有发现这种问题,求教高手
...全文
325 点赞 收藏 30
写回复
30 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
fengzizai 2008-04-24
问题所在找到了,但是还没有解决
问题代码
BOOL FormLogin::PreTranslateMessage(MSG *p)
{
if(GetFocus()->GetDlgCtrlID()==IDC_EDIT1 && p->message ==WM_KEYDOWN && p->wParam==VK_RETURN )
{
m_Password.SetFocus();
return TRUE;
}
else if(GetFocus()->GetDlgCtrlID()==IDC_EDIT2 && p->message ==WM_KEYDOWN && p->wParam==VK_RETURN )
{
m_button_ok.SetFocus();
return TRUE;
}
else if(GetFocus()->GetDlgCtrlID()==IDC_BUTTON_OK && p->message==WM_KEYDOWN && p->wParam==VK_RETURN )
{
OnButtonOk();
return TRUE;
}
else
{
return CDialog::PreTranslateMessage(p);
}
}
不知道大家有什么解决方法没有,只要删掉这些代码程序就好使了
回复
cnzdgs 2008-04-15
这么多人留了E-mail都没搞定?让俺也见识一下是什么难题。
wasay@yeah.net
回复
fengzizai 2008-04-15
问题还没有找到,哪位高手帮帮忙?
回复
cg_xs 2008-04-10
cg-xs@163.com
发过来看看
回复
wrhwww 2008-04-10
发过来给我看看,wrhwww@163.com
你这样说说不清楚
回复
fengzizai 2008-04-10
不好意思,忘记了数据库是sql的了
回复
jameshooo 2008-04-09
this 0×00000000{CWnd hWnd=???}
这个信息表明对象已经被delete了,
回复
yxz_lp 2008-04-09
你的FormLogin创建了定时器,就是处理WM_TIMER 消息时出错的,把创建定时器和定时器处理的相关代码贴出
回复
fengzizai 2008-04-09
调试出错时程序转到winocc.cpp的这个函数里
int CWnd::GetDlgCtrlID() const
{
ASSERT(::IsWindow(m_hWnd));

if (m_pCtrlSite == NULL)
return ::GetDlgCtrlID(m_hWnd);
else
return m_pCtrlSite->GetDlgCtrlID();
}
堆栈显示
CWnd::GetDlgCtrlID() line 259 + 3 bytes
FormLogin::PreTranslateMessage(tagMSG * 0x00492798 {msg=0x00000113 wp=0x00000001 lp=0x00000000}) line 151 + 12 bytes
CWnd::WalkPreTranslateTree(HWND__ * 0x00000000, tagMSG * 0x00492798 {msg=0x00000113 wp=0x00000001 lp=0x00000000}) line 2667 + 18 bytes
CWinThread::PreTranslateMessage(tagMSG * 0x00492798 {msg=0x00000113 wp=0x00000001 lp=0x00000000}) line 665 + 18 bytes
CWinThread::PumpMessage() line 841 + 30 bytes
CWnd::RunModalLoop(unsigned long 4) line 3478 + 19 bytes
CDialog::DoModal() line 536 + 12 bytes
CMyApp::InitInstance() line 67 + 11 bytes
AfxWinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00141f2c, int 1) line 39 + 11 bytes
WinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00141f2c, int 1) line 30
WinMainCRTStartup() line 330 + 54 bytes
KERNEL32! 7c816fd7()

variables 中是这样的

name value
this 0×00000000{CWnd hWnd=???}
- m_hWnd CXX0030:Error:expression cannot be evaluated
- m_hWndOwner CXX0030:Error:expression cannot be evaluated
- m_nFlags CXX0030:Error:expression cannot be evaluated
- m_pfnSuper CXX0030:Error:expression cannot be evaluated
- m_nMsgDragList 49295
- m_nModalResult CXX0030:Error:expression cannot be evaluated
- m_pDropTarget CXX0030:Error:expression cannot be evaluated
- m_pCtrlCont CXX0030:Error:expression cannot be evaluated
- m_pCtrlSite CXX0030:Error:expression cannot be evaluated
由于不会贴图,只好照打了……
回复
Gavin001 2008-04-09
可以自己跟踪一下
搞不定贴代码上来
回复
wflishh 2008-04-09
   关键找到是那地方出错了,是不是你发什么消息出去了。而发送消息的时候你得的句柄又是活动窗口的。
最好是把代码放出来。
回复
iyranly 2008-04-09
断点跟踪调试,看问题出在哪里,又为什么窗口句柄失效,是没有创建成功还是其他原因,这些都要自己检查
回复
cnzdgs 2008-04-09
代码
回复
jameshooo 2008-04-09
没看懂
回复
cg_xs 2008-04-09
跟踪错误堆栈,把错的那代码贴上来.应该是你窗口消息刷新问题
回复
CathySun118 2008-04-09
请上相关代码
回复
吹雪 2008-04-09
调试时应该能看到出错的代码地址呀。
按F5调试。
回复
yxz_lp 2008-04-09
没说清楚,子窗口是模式的还是非模式的,如果是模式的,当子窗口实例化以后,主窗口被禁用,鼠标点击当然没反应。
当鼠点击父窗体以外的其他程序或Windows桌面时,程序出现错误退出。//应该不会,使你的代码有问题,贴代码
回复
fengzizai 2008-04-09
有问题的两个窗体是FormLogin和FormSetting,谢谢
回复
fengzizai 2008-04-09
已经发过去了,麻烦给看看
回复
加载更多回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2008-04-09 08:42
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……