阅读:1431回复:17
VXD用SHELL_PostMessage,app怎么办呢?
在VXD中断处理程序中用SHELl_PostMessage向app发送一个自定义消息,那么app的相关处理程序应该如何编写呢?
请高手指点: SHELL_PostMessage(hWnd,WM_My_MESSAGE,0,0,NULL,NULL); |
|
|
沙发#
发布于:2002-08-13 13:27
app是mfc的? 是的 |
|
|
板凳#
发布于:2002-08-13 13:52
可以在mainframe的BEGIN_MESSAGE_MAP的下面,加消息。 是这样加么? BEGIN_MESSAGE_MAP(CSC200TESTDlg, CDialog) //{{AFX_MSG_MAP(CSC200TESTDlg) ON_WM_PAINT() ON_WM_QUERYDRAGICON() #define ON_WM_MY_MSG() \\ { WM_My_MESSAGE, 0, 0, 0, AfxSig_is, \\ (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(LPCREATESTRUCT))&OnSC200Message } //}}AFX_MSG_MAP END_MESSAGE_MAP() |
|
|
地板#
发布于:2002-08-13 14:11
不行啊,请详细一些吧,谢谢了.
|
|
|
地下室#
发布于:2002-08-14 09:48
ft 请详细一些吧,我会给你分的、 |
|
|
5楼#
发布于:2002-08-14 09:58
好的,谢谢,我马上试试
|
|
|
6楼#
发布于:2002-08-14 10:03
出错:
WM_MY_MESSAGE没有定义 |
|
|
7楼#
发布于:2002-08-14 10:17
编译成功了,可我还是有点疑问,为什么你写的那个
#define ON_WM_MY_MSG() \\ { WM_My_MESSAGE, 0, 0, 0, AfxSig_is, \\ (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(LPCREATESTRUCT))&OnMyMsg }, 是用{}呢?还有末尾有个逗号,我去掉逗号就会出错? |
|
|
8楼#
发布于:2002-08-14 10:50
编译都通过了,可运行还是没有执行我的cpp中断服务程序。
我想会不会是我的deviceiocontrol传递窗口句柄有问题。 在cpp中: CWnd* Main_CWnd; Main_CWnd=AfxGetMainWnd(); PVOID inBuf; inBuf=Main_CWnd->m_hWnd; DeviceIoControl(hDevice,W32IF_PASS_EVENT,inBuf,sizeof(PVOID),NULL,0,NULL,NULL); 在VXD中 先定义了: DWORD* PostMsghWnd; //Ring3层应用程序的hWnd HANDLE hWnd; 然后: case W32IF_PASS_EVENT: PostMsghWnd=(DWORD*)pDIOCParams->dioc_InBuf; hWnd=(HANDLE)*PostMsghWnd; //获得主窗口句柄 status=0; break; |
|
|
9楼#
发布于:2002-08-14 11:34
这样不行的,inbuf必须是传递地址好像。
|
|
|
10楼#
发布于:2002-08-14 11:37
实际呢,我也没有这样亲自做过的,没有自己的消息呀。 :D 我已经给你分了,谢谢你的帮助。 |
|
|