MFC/VC DLL导出对话框,焦点混乱问题
2017-07-20 09:40
337 查看
vs创建dll,然后在dll里面创建对话框,并通过导出函数的方式创建时,会碰到各种各样的问题。比如edit控件获取不了焦点,无法输入;子对话框无法移动;各种button的焦点混乱等各种问题。
原因分析:
dll中创建的mfc对话框底层有自己的窗口map列表,exe中的某些消息有可能传递不到dll中,因此需要将exe中的程序传递到dll,具体的底层原因,以后在分析加入
原因分析:
dll中创建的mfc对话框底层有自己的窗口map列表,exe中的某些消息有可能传递不到dll中,因此需要将exe中的程序传递到dll,具体的底层原因,以后在分析加入
//dll中导出函数: BOOL WINAPI FilterDllMsg(LPMSG lpMsg) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); TRY { return AfxGetThread()->PreTranslateMessage(lpMsg); } END_TRY return FALSE; } //如果是dll导出的非子对话框在exe的app中如下调用: BOOL CScreenCapApp::PreTranslateMessage(MSG* pMsg) { if (CWinApp::PreTranslateMessage(pMsg)) return(TRUE); return(FilterDllMsg(pMsg)); } // 如果dll导出的是子对话框,则需要在相应父对话框的PreTranslateMessage内调用,如下: BOOL CYourDialog::PreTranslateMessage(MSG* pMsg) { // 传递给子对话框的消息和传递给父对话框的消息是有交集的,因此注意某些消息需要只交给一方处理。 // ? 不只为何先处理Prexxx,再调用Filter不行 if (FilterDllMsg(pMsg)) return(TRUE); return(CDialogEx::PreTranslateMessage(pMsg)); }
相关文章推荐
- VC扩展mfc dll中子对话框不能获取焦点问题
- 控制台应用程序调用MFC DLL产生的对话框,解决对话框dlg.DoModal报错问题
- VC对话框焦点转换问题
- 【VC MFC开发】Dll 中对话框的控件无法接受到按键消息的解决办法
- MFC扩展dll里导出函数时资源切换的问题
- DLL/OCX中的MFC对话框不能处理Tab和回车键的问题
- VC对话框焦点转换问题
- MFC不同dll中对话框的调用问题
- 创建MFC常规dll,通过导出函数显示颜色信息对话框
- 在vc中的MFC regular dll中使用ado的导入问题
- MFC扩展DLL调用对话框,测试的时候报错问题的解决
- DLL/OCX中的MFC对话框不能处理Tab和回车键的问题
- 关于在MFC对话框,循环中失去焦点后不响应的问题
- 在DLL中使用资源 - 主要是解决DLL的对话框导出问题
- MFC扩展dll里导出函数时资源切换的问题
- DLL/OCX中的MFC对话框不能处理Tab和回车键的问题 .
- VC对话框焦点转换问题
- VC++引用MFC DLL出现的问题
- MFC模式对话框与非模式对话框 消息处理顺序 与非模式对话框的焦点问题、显示、关闭以及交互问题
- 在MFC “共享MFC 规则DLL”中(创建MFC DLL中选第一个),使用MFC对话框注意问题