【MFC】在DoModal()出一个对话框中(主窗口未退出,被DoModal出的对话框遮住)绘图,除图形外,还有动态创建的控件。这时点开浏览器,再回到程序,无法

goodprocess 2013-06-06 10:01:44
【MFC】在DoModal()出一个对话框中(主窗口未退出,被DoModal出的对话框遮住)绘图,除图形外,还有动态创建的控件。这时点开浏览器,再回到程序,无法响应滚轮事件,左键或者右键事件都可以正常响应。请教一下各位,如何是好。刚来神坛,没有积分,各位帮帮忙。
...全文
170 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodprocess 2013-06-06
  • 打赏
  • 举报
回复
引用 2 楼 zhoujielunzhimi 的回复:
无法响应滚轮消息? 那是因为此时焦点不在窗口上,你点击左键后应该可以滚动了,如果还不行,那就在左键消息中加上 SetFocus();
谢谢你啦,左键点击上去后,还是不能响应滚轮消息。但是可以响应左键按下等消息。个人觉得可能是MFC的对于滚轮等事件的响应方式和左键按下等的事件不同吧。 问题解决啦:在OnPaint()函数最后一行加一句话 this->SetFocus();问题就解决了。 sumos。谢谢你。
sumos 2013-06-06
  • 打赏
  • 举报
回复
无法响应滚轮消息? 那是因为此时焦点不在窗口上,你点击左键后应该可以滚动了,如果还不行,那就在左键消息中加上 SetFocus();
goodprocess 2013-06-06
  • 打赏
  • 举报
回复
个人觉得可能是由于,在回到程序窗口后,进行了Onpaint(),重绘操作,而动态创建的控件也在这时候进行了创建。于是鼠标滚轮的消息就被动态创建的控件截获了,但是不知道如何让绘图窗口重新获得滚轮事件,很是苦恼,孤独纠结ing···
采用MFC编程时,子对话框常常要向窗口传递数据,获取窗口的对象指针便显得非常重要了。 void CMyView::OnModel() //点击菜单,创建对话框的几种变量设置,总共是4种方法,模态的一种,非模态的三种 { // TODO: Add your command handler code here //CDialog modDlg(MAKEINTRESOURCE(IDD_MODEL),this); //modDlg.DoModal(); static bool num=0;//第一次执行第一段,以后再打开都执行第二段。 static CModDlg Dlgless(this);//将MyView指针传进去 if (0==num) { CModDlg mod(this);//将MyView指针传进去 //mod.SetWindowText("局部变量——模态对话框");不允许动态设置模态对话框标题?这句编绎会错 mod.DoModal(); Dlgless.Create(IDD_MODEL);//重复执行会错,要放到构造函数好 Dlgless.ShowWindow(SW_SHOW); Dlgless.SetWindowText("局部静态变量——非模对话框"); m_dlgless.Create(IDD_MODEL,this);//重复执行会错,要放到构造函数好 m_dlgless.ShowWindow(SW_SHOW); m_dlgless.SetWindowText("成员非指针变量——非模对话框"); m_pDlgless=new CModDlg(this);//重复执行会错,要放到构造函数好, m_pDlgless->Create(IDD_MODEL);//重复执行会错,要放到构造函数好, m_pDlgless->ShowWindow(SW_SHOW); m_pDlgless->SetWindowText("成员指针变量——非模对话框"); num=1; } else { Dlgless.ShowWindow(SW_SHOW); m_dlgless.ShowWindow(SW_SHOW); m_pDlgless->ShowWindow(SW_SHOW); } }

19,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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