我在VC的对话框程序中加入了一个图片框,连接的对象是继承自CStatic类的一个自定义类的一个实例,在里面添加ON_PAINT消息什么的都正常,今天尝试让这个空间响应鼠标单击的事件,就在这个类里面添加了ON_LBTDOWM的消息,可以运行时发现在控件上单击鼠标时,并没有进入void OnLButtonDown(UINT nFlags, CPoint point)这个函数,这是为什么呢?

解决方案 »

  1.   

    估计是消息发送给了CStatic所在的对话框了,而对话框不会把鼠标消息发给控件类。
    应该可以在对话框上处理鼠标消息,判断鼠标位置或焦点是否处于CStatic上,再进一步处理。
      

  2.   

    void CXXStatic::PreSubclassWindow()
    {
    // TODO: Add your specialized code here and/or call the base class
    DWORD dwStyle = GetStyle();
    ::SetWindowLong(GetSafeHwnd(), GWL_STYLE, dwStyle | SS_NOTIFY);
    CStatic::PreSubclassWindow();
    }
      

  3.   

    还可以在主界面上增加LBN消息,然后判断point的位置,在控件的位置里则处理消息