动态生成的控件为什么收不到鼠标消息?该怎么处理
动态生成的控件为什么收不到鼠标消息?
我从CComboBox派生了一个控件(VC自动生成的代码)
但是这个控件如果是动态Create出来,我派生的那个类就收不到鼠标消息,
如果是对话框资源上的,就能响应
这个是怎么回事啊
谢谢!!
//.h 文件
#pragma once
// CMyComboBox
class CMyComboBox : public CComboBoxEx
{
DECLARE_DYNAMIC(CMyComboBox)
public:
CMyComboBox();
virtual ~CMyComboBox();
protected:
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
};
//.cpp 文件
// MyComboBox.cpp : implementation file
//
#include "stdafx.h "
#include "tr.h "
#include "MyComboBox.h "
// CMyComboBox
IMPLEMENT_DYNAMIC(CMyComboBox, CComboBox)
CMyComboBox::CMyComboBox()
{
}
CMyComboBox::~CMyComboBox()
{
}
BEGIN_MESSAGE_MAP(CMyComboBox, CComboBox)
ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()
// CMyComboBox message handlers
void CMyComboBox::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
//无法到达这里!!!!!!!!
CComboBox::OnLButtonDown(nFlags, point);
}
------解决方案--------------------
void CMyComboBox::OnLButtonDown(UINT nFlags, CPoint point)
是通过类向导影射过来的吗?
------解决方案--------------------
你可能需要在Resource.h里自定义一个ID,然后用该ID Create你的CComboBox
------解决方案--------------------
没道理啊.应该是可以的啊.你看看create的时候给定的控件属性是不是有问题.
最好先再弄一个资源上的控件,得到它的属性,再把属性付给你新建的.
------解决方案--------------------
1005看下是不是有重了的.
------解决方案--------------------
你点ComboBox的向下的小箭头试试
不能用OnLButtonDown来响应Combox的操作
void CMyCombo::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
AfxMessageBox( "serh ");
CComboBox::OnLButtonDown(nFlags, point);
}
------解决方案--------------------
up
------解决方案--------------------
把ON_WM_LBUTTONDOWN()
改成 ON_MESSAGE(WM_LBUTTONDOWN, OnLButtonDown)试试
------解决方案--------------------
试试其他消息有没响应
------解决方案--------------------
帮顶
------解决方案--------------------
顶,我也遇到过这样的问题,后来有个高手帮忙解决了,再后来就忘了,明天帮你找找。
我从CComboBox派生了一个控件(VC自动生成的代码)
但是这个控件如果是动态Create出来,我派生的那个类就收不到鼠标消息,
如果是对话框资源上的,就能响应
这个是怎么回事啊
谢谢!!
//.h 文件
#pragma once
// CMyComboBox
class CMyComboBox : public CComboBoxEx
{
DECLARE_DYNAMIC(CMyComboBox)
public:
CMyComboBox();
virtual ~CMyComboBox();
protected:
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
};
//.cpp 文件
// MyComboBox.cpp : implementation file
//
#include "stdafx.h "
#include "tr.h "
#include "MyComboBox.h "
// CMyComboBox
IMPLEMENT_DYNAMIC(CMyComboBox, CComboBox)
CMyComboBox::CMyComboBox()
{
}
CMyComboBox::~CMyComboBox()
{
}
BEGIN_MESSAGE_MAP(CMyComboBox, CComboBox)
ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()
// CMyComboBox message handlers
void CMyComboBox::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
//无法到达这里!!!!!!!!
CComboBox::OnLButtonDown(nFlags, point);
}
------解决方案--------------------
void CMyComboBox::OnLButtonDown(UINT nFlags, CPoint point)
是通过类向导影射过来的吗?
------解决方案--------------------
你可能需要在Resource.h里自定义一个ID,然后用该ID Create你的CComboBox
------解决方案--------------------
没道理啊.应该是可以的啊.你看看create的时候给定的控件属性是不是有问题.
最好先再弄一个资源上的控件,得到它的属性,再把属性付给你新建的.
------解决方案--------------------
1005看下是不是有重了的.
------解决方案--------------------
你点ComboBox的向下的小箭头试试
不能用OnLButtonDown来响应Combox的操作
void CMyCombo::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
AfxMessageBox( "serh ");
CComboBox::OnLButtonDown(nFlags, point);
}
------解决方案--------------------
up
------解决方案--------------------
把ON_WM_LBUTTONDOWN()
改成 ON_MESSAGE(WM_LBUTTONDOWN, OnLButtonDown)试试
------解决方案--------------------
试试其他消息有没响应
------解决方案--------------------
帮顶
------解决方案--------------------
顶,我也遇到过这样的问题,后来有个高手帮忙解决了,再后来就忘了,明天帮你找找。