问题,症状:

程序的主窗口CMainWnd创建了一个modal dialog,希望这个dialog能接收WM_KEYDOWN消息,但是需要点一下这个dialog窗口它才能接收到(我嫌麻烦),而且我发现,如果我保持CMainWnd处于激活状态,就没有这个问题。

所以就希望这个dialog一创建默认就能接收到WM_KEYDOWN,当然首先想到的是SetFocus,然后就看到了下面提到的没卵用(至少是对我这个问题)的那篇blog,无论是对dialog进行setfocus或者CMainWnd进行setfocus都没有用,也尝试了该blog提到的WM_NEXTDLGCTL,还是没用。

然后又搜到了几个解决办法,什么GotoDlgCtrl啊,PreTranslateMessage啊,统统无法解决这个问题,下面是我搜索过的资料:

http://computer-programming-forum.com/81-vc/73468bccb8affc17.htm

http://computer-programming-forum.com/82-mfc/ee69e2c176cdaf2c.htm

http://computer-programming-forum.com/82-mfc/f99bbc4314038236.htm

http://blog.163.com/lh_bbs/blog/static/1430708032011093159371/

搞得我实在没办法了,我就想到是不是应该有个ActivateWnd之类的,果然找到一个ActivateTopParent(如图,来自CWnd,奇怪的是这货居然在MSDN中搜不到文档!),然后我在OnInitDialog中的倒数第二句(也就是return之前)写上

this->ActivateTopParent()

问题解决!

后来我在OnInitDialog中试了试this->SetActiveWindow(),也没用,去调用CMainWnd的SetActiveWindow还是没有用

---------------------------没卵用---------------------------

原文:http://blogs.msdn.com/b/oldnewthing/archive/2004/08/02/205624.aspx

很棒的原创,我是说为什么在对dialog box使用SetFocus不管用呢

简单的说,解决办法就是

SendMessage(hdlg, WM_NEXTDLGCTL, (WPARAM)hwndControl, TRUE);

如果是MFC,就在dialog的member中调用

this->SendMessage(WM_NEXTDLGCTL, (WPARAM)this->GetSafeHwnd(), TRUE)

或者

this->GotoDlgCtrl(this)

如何激活一个window/dialog && 不能直接对Dialog Box使用SetFocus的更多相关文章

  1. 我告诉你 ,一个 window免费系统下载的网站!

    一个 window免费系统下载的网站! https://msdn.itellyou.cn/

  2. atitit.激活一个窗口总结 swing java .net php

    atitit.激活一个窗口总结 1     激活窗口:鼠标激活vswindows消息激活 1.1      Web框架激活 2     退出激活窗口热键(dbg模式) 3     俩个窗口激活优先级 ...

  3. WPF 远程显示原图 当前主页面 工具栏 一个Window页面的元素适用一个效果

    http://www.jb51.net/article/98384.htm 1.wpf远程显示原图: Stretch="Fill" + ; 主要是因为那个950和650,据显示位置 ...

  4. 打造一个window桌面应用:在线聊天对话机器人

    大家好,我是辰哥~~~ 本文目标:打造一个window桌面应用:在线聊天对话机器人. 今天辰哥教大家做一个在线聊天对话机器人桌面应用,已经打包成exe可执行文件,读者可以直接拿来使用, 先上演示图 聊 ...

  5. window.location属性用法及解决一个window.location.search为什么为空的问题

    通常用window.location该属性获取页面 URL 地址: 1.什么是window.location? 比如URL:http://b.a.com:88/index.php?name=kang& ...

  6. C#创建一个Window服务

    Window服务介绍 Microsoft Windows 服务能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序.这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示 ...

  7. 在 c#中 如何 重新激活一个控件

    比如toolBar是一个组合控件 this.toolBar.CaptionHeight =this.toolBar.Items.Count * 60;//重新激活toolBar控件 CaptionHe ...

  8. window.open实现模式窗口(只弹出一个window.open)

    父页面 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> & ...

  9. c#里面如何激活一个外部程序进程并显示在最前

    using System.Diagnostics; using System.Runtime.InteropServices; [DllImport("user32.dll")] ...

随机推荐

  1. OpenCV学习笔记——视频的边缘检测

    使用Canny算子进行边缘检测,并分开输出到三个窗口中,再给每一个窗口添加文字 代码: #include"cv.h" #include"highgui.h" / ...

  2. PHP $_SERVER 详解

    元素/代码 描述 $_SERVER['PHP_SELF'] 当前执行脚本的文件名,与 document root 有关. $_SERVER['GATEWAY_INTERFACE'] 服务器使用的 CG ...

  3. ecshop 工作流程加载配置介绍

    ecshop 工作流程加载配置介绍 分类: ecshop2014-09-14 09:36 729人阅读 评论(2) 收藏 举报 模板引擎工作流 这里简单介绍下echsop工作流程: 首先,你会发现一般 ...

  4. 20145317彭垚 java课程总结

    课程总结 每周读书笔记链接汇总 第一周http://www.cnblogs.com/5317p/p/5248481.html 第二周http://www.cnblogs.com/5317p/p/527 ...

  5. 20145317彭垚 《Java程序设计》第一次实验实验报告

    20145317彭垚 <Java程序设计>第一次实验实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验名称:Java开发环境的 ...

  6. PHP实例练习--投票和租房子

    一,调查问卷 效果图:

  7. 1 2 3 n

    n(n+1)/2 连续自然数 1,2,3.....,n 队列 从中任意取出1至n个相加,可以表示的连续自然数队列中最大的自然数是多少 受"高斯求和--蛇头蛇尾脑图--长方形对角线脑图--苯环 ...

  8. web.xml总结整理

    web.xml 配置的详细解读 web.xml (部署描述符文件) 整理参考:      加载顺序 ServletContext-->listener->filter->srvlet ...

  9. maven 添加本地jar

    方式一 Xml代码 <dependency> <groupId>org.apache</groupId> <artifactId>test</ar ...

  10. 关于<a href='javascript:function()'>

    <a href='javascript:function()'> 这样写是为了让这个链接不要链接到新页面转而执行一段js代码.和onclick能起到同样的效果,一般来说,如果要调用脚本还是 ...