• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 100分求救:Atl组件中键盘消息的响应问题

100分求救:Atl组件中键盘消息的响应问题

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了atl组件,键盘atl,键盘atl在哪,atl34砂轮,atl方形动力电池等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 100分求救:Atl组件中键盘消息的响应问题
描述:

在Atl组件中提供了一个接口,调用接口弹出一个mfc的非模态对话框,这个对话框上的几个edit控件无法响应ctrl+v,ctrl+x等键盘事件,而同样的把非模态改为模态即可响应,请各位大侠赐教:非模态下应该怎么做才能响应ctrl+v,ctrl+x等键盘事件??


解决方案1:

Jiangsheng:
1.2.1.13   组件/DLL中创建非模态对话框不能处理某些键   
  问:我的COM组件中有几个非模态对话框,使用客户程序调用这些非模态对话框,但却发现它们不能响应键盘操作,比如按回车或tab键都不起作用,郁闷死了,这些键盘操作对我来说挺重要。有哪位高手能给予指点迷津,先谢谢啦!   
  答:要让非模态对话框处理对话框特定消息,消息循环需要调用IsDialogMessage   API。但是动态库和COM组件无法修改当前的从消息循环来做到这一点。你可以在对话框生命期中用一个WH_MESSAGE钩子来捕获并且处理这些消息   
  BOOL   CALLBACK   DllDlgProc(   HWND   hwndDlg,   UINT   uMsg,   WPARAM   wParam,   LPARAM   lParam   )   
  {   
        switch   (   uMsg   )   
        {   
            case   WM_INITDIALOG:   
                    hHook   =   SetWindowsHookEx(   WH_GETMESSAGE,   GetMsgProc,   
                                                                        NULL,   GetCurrentThreadId()   );   
                    return   TRUE;   
    
            case   WM_COMMAND:   
                    if   (LOWORD(wParam)   ==   IDOK   ||   LOWORD(wParam)   ==   IDCANCEL)     
                    {   
                  
            DestroyWindow(   hwndDlg   );   
                          hwndDllDlg   =   NULL;   
                    }   
                    return   TRUE;   
    
            case   WM_DESTROY:   
                    UnhookWindowsHookEx(   hHook   );   
                    return   FALSE;   
        }   
        return   FALSE;   
  }   
  LRESULT   FAR   PASCAL   GetMsgProc(int   nCode,   WPARAM   wParam,   LPARAM   lParam)   
  {   
        LPMSG   lpMsg   =   (LPMSG)   lParam;   
    
        if   (   nCode   >=   0   &&   PM_REMOVE   ==   wParam   )   
        {   
              //   Don't   translate   non-input   events.   
              if   (   (lpMsg->message   >=   WM_KEYFIRST   &&   lpMsg->message   <=   WM_KEYLAST)   )   
              {   
                    if   (   IsDialogMessage(hwndDllDlg,   lpMsg)   )   
                    {   
                          //   The   value   returned   from   this   hookproc   is   ignored,     
                          //   and   it   cannot   be   used   to   tell   Windows   the   message   has   been   handled.   
                          //   To   avoid   further   processing,   convert   the   message   to  

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 谁能帮我看一下关于ATL编写COM组件
  • 怎样用ATL写一个含有其它组件的进程外COM
  • 如何在ATL的COM组件里为MFC的MDI程序创建一个MDI子窗口?
  • 采用ATL写的COM组件,Debug没问题,Release就出问题了。
  • ATL能不能继承VB编写的COM组件再封装成COM组件?
  • 用ATL写的COM组件在VC里怎样使用?!
  • 用ATL编写COM组件,如何操作DATE类型
  • 写ATL组件时发现一个难以理解的问题?
  • 关于ATL组件用web方式调用,我遇到一个小问题,请帮忙指点一下
  • 为何我用ATL开发的com组件在release版编译后出问题

相关文章

  • 2017-06-04 ATL/WTL'MSG_WM_SETCURSOR':undeclaredidentifier
  • 2017-06-05 ActiveXOndraw函数画圆问题
  • 2017-06-04 Com的Linking错误,不知为什么??
  • 2017-06-05 一个简单的DLL问题
  • 2017-06-05 请问DLL(VC6。0开发)有没有大小的限制?
  • 2017-06-04 超菜问题,VC中使用Excel,不懂勿顶
  • 2017-06-04 为什么我自己写的OCX控件中用定时器要出问题
  • 2017-06-04 急问IE插件问题
  • 2017-06-05 vcexcel问题
  • 2017-06-04 请问各们大哥们一个问题,分不够另加

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 如何拦截同一进程内其他线程异常
    • COM中的IDispatch接口是在客户端实现,还是在COM对象实现?
    • 用WUA接口如何获取windows系统补丁包的类型,比如重要,推荐?
    • howto怎样在线程中修改状态栏
    • CreateToolhelp32SnapshotTH32CS_SNAPMODULE,peth32ProcessID死锁!!!
    • AfxBeginThread和CreateThread这两个函数有什么区别,分别用在什么场合?
    • VARIANT类型怎样表示一个Guid的值。
    • dll中输出函数如何将参数传回?
    • 向老手求教急:VC中如何使用SSTab控件来实现多个View之间的切换?(火攻心)
    • 哪个高手可以详细讲一下进程和线程吗?多谢

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有