初学ATL,发现在控件中可以捕获鼠标事件,却不能用OnChar,OnKeyDown捕获键盘事件,不知怎样获得键盘消息?还有,想要做一个类似于记事本功能的控件,该怎样去做,希望大侠们指点。

解决方案 »

  1.   

    http://www.graphics.net.cn/document/vc/010/003.asp
      

  2.   

    ATL中还是可以进行消息映射的,比较简单
    比如BEGIN_MSG_MAP(CxxxControl)
    MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
    MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
    COMMAND_HANDLER(IDC_BUTTON_LOGIN, BN_CLICKED, OnLogin)
    CHAIN_MSG_MAP(CComCompositeControl<CWebIMClient>)
    ALT_MSG_MAP(1)
    MESSAGE_HANDLER(WM_CHAR, OnEditChar)
    END_MSG_MAP()
      

  3.   

    首先谢谢两位高手的帮助,我看了aa3000(杀手K)提供的文章,但按照文章中的方法还是不行。还有,我已经将MESSAGE_HANDLER(WM_CHAR, OnChar)加入了消息映射,但还是无法触发键盘事件。
      

  4.   

    use keyboard hook
    The container redirects keyboard and mouse inputs only when the control is active,
      

  5.   

    回复:jiangsheng(蒋晟.Net[MVP])
             可以接收到鼠标消息,而不能接收到键盘消息。
      

  6.   

    键盘消息需要自己处理一下,PreTranslate好像,自己看看ATL生成HTML控件的例子
      

  7.   

    that's why I mentioned keyboard hook