PreTranslateMessage DoModal() ASSERT(::IsWindow(m_hWnd)
来源:互联网 发布:ps淘宝全屏海报尺寸 编辑:程序博客网 时间:2024/05/22 00:02
PreTranslateMessage 函数调用DoModal()在关闭对话框时会出现下面的bug!
原因分析:在PreTranslateMessage里的获取对应m_hWnd,DoModal()模态对话框退出后,m_hWnd不是有效的窗口句柄,需要return rrue
解决方法:在PreTranslateMessage中处理完键盘消息后,做一下两步:
1.重新设置焦点
2,return TRUE
//Enter键:进入当前选中模块if (pMsg->wParam == VK_RETURN){if (CountEnter == 2){if (::IsWindow(GetSafeHwnd())){pDlg->pDlgPgzb->OnBnClickedBtAdd();// BN_CLICKED 调用了DoModal()////P:重新返回焦点位置&&调用dlgmethod返回return 1;pDlg->pDlgPgzb->SetFocus();pDlg->pDlgPgzb->m_List_Method.SetItemState(0, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);SetCursorPos(120,210);return 1;}}
0 0
- PreTranslateMessage DoModal() ASSERT(::IsWindow(m_hWnd)
- MoveWindow 时候 ASSERT(::IsWindow(m_hWnd))?
- 写MFC程序ASSERT(IsWindow(pTemp->m_hWnd))报错
- 解决GetDlgItem 使用时出现ASSERT(::IsWindow(m_hWnd))断言
- MFC中ASSERT(IsWindow(pTemp->m_hWnd));报错
- 解决两个对话框传值程序中断在ASSERT(::IsWindow(m_hWnd)); return InsertItem(LVIF_TEXT, nItem, lpszItem, 0, 0, 0, 0);
- 【WIN 32 报错】 Expression: ::IsWindow(m_hWnd)
- 从 CDialog::PreTranslateMessage() 开始展开 DoModal()
- IsWindow
- DoModal
- DoModal
- MFC PreTranslateMessage(MSG* pMsg)中调用DoModal()模态窗口问题
- PreTranslateMessage
- PreTranslateMessage
- PreTranslateMessage
- PreTranslateMessage()
- PreTranslateMessage()
- PreTranslateMessage
- Activity堆栈管理
- 杭电ACM试题分类
- pat(B) 1027. 打印沙漏(输入输出)
- keepalived+nginx实现双机热备
- apache常见问题处理
- PreTranslateMessage DoModal() ASSERT(::IsWindow(m_hWnd)
- centos6.5 64位安装MySQL5.6
- iphone开发之UIButton按钮的使用(二)拖线实现 多个按钮用同一个监听方法实现
- 关于onMeasure ()和onLayout()的一些个人理解
- test
- Matlab聚类分析(Cluster Analyses)
- 1.大数据基础(上)_1.大数据简介
- 分类
- 互斥的实例和使用场景