在C++的dll接口函数定义:
int SetRFSB(void * sbcs, HWND mhd);
int ReadTagEPC(uchar sx = 0, uchar cc = 0, uchar *zz = NULL, uchar ln = 0, uchar *ym = NULL);
而在ReadTagEPC中读到数据就会向SetRFSB中的mhd窗口发送WM_RF_READTAG消息我以前用vc的时候先在头文件中自定义#define WM_RF_READTAG WM_USER + 101这个消息
然后在cpp文件中定义ON_MESSAGE(WM_RF_READTAG, OnRfReadTag),然后在SetRFSB函数中指定窗口的句柄就可以了现在换成C#平台调用,不知道该怎么处理这个WM_RF_READTAG消息,求高人相助,高速解决办法!!!!
int SetRFSB(void * sbcs, HWND mhd);
int ReadTagEPC(uchar sx = 0, uchar cc = 0, uchar *zz = NULL, uchar ln = 0, uchar *ym = NULL);
而在ReadTagEPC中读到数据就会向SetRFSB中的mhd窗口发送WM_RF_READTAG消息我以前用vc的时候先在头文件中自定义#define WM_RF_READTAG WM_USER + 101这个消息
然后在cpp文件中定义ON_MESSAGE(WM_RF_READTAG, OnRfReadTag),然后在SetRFSB函数中指定窗口的句柄就可以了现在换成C#平台调用,不知道该怎么处理这个WM_RF_READTAG消息,求高人相助,高速解决办法!!!!
解决方案 »
- 关于播放列表的问题
- 一个Remoting远程获取屏幕的示例
- 求一个简单的正则表达式
- 请高手帮忙```请教重写datagridview控件```!!!!!!!!!!`````
- 数据库连接是这样的,每当我在页面上使用两个以上的SqlDataReader时,就已有打开的与此命令相关联的 DataReader,必须首先将它关闭 急!
- XML文件导入数据库 为什么总提示“对于不返回任何基表信息的 SelectCommand 不支持动态 SQL 生成”,网上找不到答案的问题,郁闷中
- winform 中 datagrid 单击选中整行 而不是单元格
- c#---你是高手但都不一定能准确回答
- 我们刚做好的PPC小游戏,大家捧场哦~~呵呵
- C#中有类似VB.net的GetObject()函数,获取已运行的COM对象吗?
- 关于抽象工厂方法的问题!
- 再来一帖关于弹出窗口
c#下,处理消息,你可以参考2个方法。
创体内消息,可以重载WndProc方法,整个进程的消息处理,例如vc的PerTranslateMessage的可以参考msdn中的IMessageFilter
例如创体内public const int WM_USER = 0x400;
public const int WM_RF_READTAG = WM_USER + 101;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_RF_READTAG)
{
//your code here
}
base.WndProc(ref m);
}
WndProc 继承自Control,收到针对本窗口自身的消息
PreFilterMessage监视窗体消息,对消息进行分析
public partial class Form1 : Form, IMessageFilter
{
int WM_LBUTTONDOWN = 0x0201; public Form1()
{
InitializeComponent(); Application.AddMessageFilter(this);
} public bool PreFilterMessage(ref Message m)
{
if (m.Msg == WM_LBUTTONDOWN)
MessageBox.Show("WM_LBUTTONDOWN");
return false;
} protected override void WndProc(ref Message m)
{
if (m.Msg == WM_LBUTTONDOWN)
MessageBox.Show(" WM_LBUTTONDOWN");
base.WndProc(ref m);
}
}
HWND mdh指定为当前应用程序的主窗体的句柄
IntPtr mdh = Process.GetCurrentProcess().MainWindowHandle;其他参看1#