dll是导出类吧?不是导出方法吧?导出类的话,继承一下dll中的导出类,在派生类中重写PreTranslateMessage不就有消息了?
解决方案 »
- dll中对象的inline问题,谢谢
- fatal error CVT1100....怎么解决这类问题?
- Visual C++ 5.0开发技术内幕,我想买~
- 求IE5_LIB
- D版盘的MSDN哪个版本和.NET2003配?
- 关于IO完成端口的疑问。另附其它,求见解。高分相赠
- 高难度问题,欢迎大家指教!!!----(给分是最高分)
- 如何获取程序自己的文件名?不管用户怎么改总能获取当前自己的名字
- The C++ Programming Language和C++ Primer有没有简体中文版?
- DECLARE_MESSAGE_MAP()中的疑问,请帮忙,谢谢!
- 编了一个程序一运行就报“Debug Library”
- web Browser中嵌入U3D的HTML程序,如何抓到html的句柄,而不是web browser的
额 不是导出类。我是做平台的嘛。dll封装了个界面,别人调用我这边一个函数来打开界面,我函数里面打开方式是非模态的。因为要嵌入到他那边的一个界面里做子对话框
这样的话调用者怎么能得到dll中的PreTranslateMessage消息?我没理解错吧?
估计理解错了吧- -
是这样的,我这边导出个接口,别人调用接口就回打开我封装的界面,界面里有各种界面控件操作,其中界面里有几个消息操作需要在PreTranslateMessage里实现。我模态打开的时候调试时进去这个函数的,也能截获到消息 如:鼠标左键按下,双击等。我会根据这些消息做些控件变化,如图片切换,或者全屏。
但问题出现了,现在必须换成非模态打开,然后调试发现PreTranslateMessage根本不进去了,也就截获不了消息。用hook的话可以截获消息然后传送给PreTranslateMessage。但公司部让用hook。现在我想知道还有其他方法解决PreTranslateMessage进步了的问题么
编辑词条
目
录
1定义
2例子
1 定义
函数功能:该函数决定一个消息是否指定给指定的对话框,如果是,则处理消息。
函数原型:BOOL IsDialogMessage(HWND hDlg,LPMSG IpMsg);
参数: hDlg:标识对话框。 IpMsg:指向一个含有将被检测的消息的MSG结构。
返回值:如果消息被处理,则返回值为非零值;如果消息没有被处理,则返回值为零。
备注:尽管IsDialogMessage函数是为无模态对话框而扩展的,但可以用含有控制的任何一个窗口来使用它。当 IsDialogMessage处理一个消息时,它检测键盘信息并把它们转变成对响应对话框的选择命令。例如当按下tab时选择下一个控制或控制组,当按下down时选择控制组的下一个控制。因为IsDialogMessage 函数要执行消息所有必要的转变和传送,IsDialogMessage函数处理的消息不必传送给TranslateMessage或 DispatchMessage函数处理。
IsDialogMessage函数把WM_GETDLGETDLGCODE发送到对话框应用程序,决定应该处理哪个键。 lsDialogMessage函数把DM_GETDEFID和DM_SETDEFID消息发送到窗口。这些消息在WINUSERH头文件中定义为WM_USER和WM_USER+1所以就有与应用程序定义的有一样值的消息发生冲突。
速查:Windows NT: 3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;
头文件:winuser.h; 库文件:usgr32.lib:Unicode:在Windows NT上实现为Unicode和ANSI两种版本。
怎么截取啊,新手不懂。根hook原理一样吗
A modeless dialog box does not disable its owner window. Therefore, the user can continue to work with the owner window while the modeless dialog box is displayed.
A modeless dialog receives its messages through the application's main message loop.
An application typically calls the IsDialogMessage() function to process keyboard input for the modeless dialog box. IsDialogMessage() handles changing the focus between controls using the keyboard.
老兄,我用接口导出函数也试了。单纯c++也走通了。但是我们这更棘手点。跨语言,我这边呢是子模块,调用我的主模块是delphi写的那该怎么办啊
你的解决方法是不是跟这个网页里说的方法一样?http://bbs.csdn.net/topics/80222883
那楼主的最下面说了解决方法就是导出接口
怎么截取啊,新手不懂。根hook原理一样吗跟PreTranslateMessage的原理一样
有些时候消息不走PreTranslateMessage
但是理论上只要有消息就要走WndProc
怎么截取啊,新手不懂。根hook原理一样吗跟PreTranslateMessage的原理一样
有些时候消息不走PreTranslateMessage
但是理论上只要有消息就要走WndProc版主,MFC里是不是该调用windowproc?是在子对话框里调用还是主对话框调用?还有子对话框的消息是不是被主对话框拦截了?我这边负责主对话框的人总是说他那边没拦截。我该怎么回答。。新手勿怪问题多啊
怎么截取啊,新手不懂。根hook原理一样吗跟PreTranslateMessage的原理一样
有些时候消息不走PreTranslateMessage
但是理论上只要有消息就要走WndProc版主,MFC里是不是该调用windowproc?是在子对话框里调用还是主对话框调用?还有子对话框的消息是不是被主对话框拦截了?我这边负责主对话框的人总是说他那边没拦截。我该怎么回答。。新手勿怪问题多啊
SetWindowLong(.., GWL_WNDPROC, ...);