c++6.0中,定义了一个消息句柄
INT nReplyMsg = RegisterWindowMessage("Reply Message");
然后用
BEGIN_MESSAGE_MAP(CSCDemoDlg, CDialog)
//{{AFX_MSG_MAP(CSCDemoDlg)
ON_LBN_SELCHANGE(IDC_LIST_FUNC, OnSelchangeListFunc)
ON_LBN_SELCHANGE(IDC_LIST_TITLE, OnSelchangeListTitle)
ON_NOTIFY(TVN_SELCHANGED, IDC_TREE_STOCK, OnSelchangedTreeStock)
ON_BN_CLICKED(IDC_CLEAR_PREV_ASK, OnClearPrevAsk)
ON_BN_CLICKED(IDC_USERNAME, OnUsername)
//}}AFX_MSG_MAP
ON_REGISTERED_MESSAGE(nReplyMsg, OnReply)
END_MESSAGE_MAP()
映射到OnReply方法上LRESULT CSCDemoDlg::OnReply(WPARAM wParam, LPARAM lParam) //消息处理
{
  .......
}请问在C#中如何实现这个功能?

解决方案 »

  1.   

    重写WndProc方法,自己判断消息值。
      

  2.   

    我现在必须要这么用啊。 
    因为我要调用的c++的程序中, 
    就是用消息方法映射的,BEGIN_MESSAGE_MAP(CSCDemoDlg, CDialog) 
    //{{AFX_MSG_MAP(CSCDemoDlg) 
    ON_LBN_SELCHANGE(IDC_LIST_FUNC, OnSelchangeListFunc) 
    ON_LBN_SELCHANGE(IDC_LIST_TITLE, OnSelchangeListTitle) 
    ON_NOTIFY(TVN_SELCHANGED, IDC_TREE_STOCK, OnSelchangedTreeStock) 
    ON_BN_CLICKED(IDC_CLEAR_PREV_ASK, OnClearPrevAsk) 
    ON_BN_CLICKED(IDC_USERNAME, OnUsername) 
    //}}AFX_MSG_MAP 
    ON_REGISTERED_MESSAGE(nReplyMsg, OnReply) 
    END_MESSAGE_MAP(), 
    而不是在窗口接收消息句柄然后作相应处理的, 
    我也没法啊,高手指教,如何处理啊。 
      

  3.   

    WIN32Msg.MSG_EADY  怎么定义的?怎么赋值的 还可以通过spy++ 看看WIN32Msg.MSG_EADY  发送到你的窗口没
      

  4.   

    麻烦高手们到
    http://topic.csdn.net/u/20090808/21/ae38a060-eb6f-4fd2-a542-319aa9a94a38.html
    讨论啊
      

  5.   


    //很怀疑LZ你是否了解"#define"的用法,如果不了解,先什么都不要做了,先快去学习//先看这个,从
    #define BEGIN_MESSAGE_MAP(theClass, baseClass) \
    ....
    static const AFX_MSGMAP_ENTRY _messageEntries[] ={//一至到这里
    //其实差不多就是定义了一个数组
    //ON_COMMAND 、ON_REGISTERED_MESSAGE等 其实就是往这个数组初使化数据//最后的这个END_MESSAGE_MAP()其实是调用一个过程去解析当前的窗口信息
    //如果数组有相应该的窗口信息,就调用相应的程序去执行。///最后说一下,C#没有#define且指针受到限制,要使用委托或是事件等去实现
      

  6.   

    //最后的这个END_MESSAGE_MAP()其实是调用一个过程去解析当前的窗口信息
    //如果数组有相应该的窗口信息,就调用相应的程序去执行。我也知道这个原理,关键是,我在c#中如何做到?
    根据一个消息句柄然后自动映射到一个方法上面啊?
      

  7.   

    用一个大switch或者一个dictionary
    C#没有宏支持。
      

  8.   

    C# 不需要你用消息映射……而且不许你用。C# 下面的概念是事件和委托。若需要C# 和本地C++方法之间传递消息,请使用 HwndSource 类。
      

  9.   

    C#里定义时间就是先定义一个委托 然后声明委托,然后写你自己的函数 ,最后委托+=函数名 这样就ok了