• 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 > ActiveX中创建的非模态对话框显示后,不能相应键盘操作?怎么解决?

ActiveX中创建的非模态对话框显示后,不能相应键盘操作?怎么解决?

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

佚名通过本文主要向大家介绍了非模态对话框,非模态对话框创建,mfc非模态对话框,模态和非模态对话框,mfc创建非模态对话框等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: ActiveX中创建的非模态对话框显示后,不能相应键盘操作?怎么解决?
描述:

我的客户端是不能修改的,最好在控件中作协修改。


解决方案1:

加入对WM_GETDLGCODE消息的处理试试看。

解决方案2:

没有别的办法,最粗鲁的办法就是钩子了!哈哈!

解决方案3:

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 WM_NULL 
            // before returning.
            lpMsg->message = WM_NULL;
            lpMsg->lParam  = 0;
            lpMsg->wParam  = 0;
         }
      }
   }
   return CallNextHookEx(hHook, nCode, wParam, lParam);
} 
参考文档
微软知识库文章Q233263 PRB: Modeless Dialog Box in a DLL Does Not Process TAB Key


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

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

  • 请问在非MFC程序中怎么调用系统控件?
  • 100分求助MFC编写的DLL非模态窗体中中使用ACTIVEX无法释放问题!!
  • Excel插件弹出的无模态对话框,Edit控件不能输入?
  • A组件的界面如何做为模态对话框在B组件的界面里的弹出?
  • Excel插件弹出的无模态对话框,Edit控件不能输入?
  • 使用atl开发ActiveX控件,如何弹出模态对话框
  • 带OCX的非模态对话框的初始化求助
  • 关于atlactivex的模态对话框的一个奇怪问题
  • 非模态对话框设为child风格图像会乱,怎么办?
  • vs2005dll非模态对话框Tab切换回车键响应

相关文章

  • 2017-06-04 服务程序如何提供接口
  • 2017-06-04 关于AsynchronousPluggableProtocols中NamespaceHandlers的问题
  • 2017-06-05 如何在線程函數中調用其他類的函數?
  • 2017-06-04 VS2008中用ATL设计了一个简单的COM组件,仅仅完成几个简单的算术运算。制作好后该组件不能在其他的计算机上注册,请问为什么,怎么办?
  • 2017-06-04 mfc做的ocx控件,在ie中使用,我怎么能够在另外的程序中关闭该ocx所在的ie窗口?
  • 2017-06-04 有高人知道SSLVPN的客户端activex插件的实现原理么?
  • 2017-06-04 关于ActiveMovie,求救?急!
  • 2017-06-05 兄弟正在学习编写动态连接库(Dll),但是不知道如何下手,手边的资料也讲的不太清楚,请问!
  • 2017-06-04 求助OCX控件的调试问题?
  • 2017-06-04 Atl工程中提示尚未调用coinitialize

文章分类

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

最近更新的内容

    • 求助:newActiveXObject"TimwpDllTimwpCheck"无法创建对象是什么原因?
    • CreateEvent的问题,急急急啊!!
    • 如何在C++项目内存取activex的属性
    • 如何編程实现导出Foxmail里的邮件?给出思路者也有分!!!
    • 如何强制执行Onsubmithandler
    • ======实现2个接口A和B,其中A接口的一个属性的类型就是接口B,怎么实现?======
    • 如何在单文档中使用ActiveX控件那?
    • userbreakcalledfrom
    • 请大家帮忙,关于进程的问题。
    • 谁有上传文件组件的VB原代码

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

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