让动态创建的ActiveX控件响应Windows消息
2014-03-17 15:17
190 查看
当我们通过
CWnd::CreateControl()
动态创建
ActiveX
控件时,
Windows
消息并不会被发送给我
们的由
CWnd
派生得控件类。例如,即使我们为
WM_KILLFOCUS
消息创建了句柄,这个句柄
也是不会被调用的。(不信你试试
:))
引起这个问题的原因时,
CWnd::CreateControl()
并不会使我控件的
HWND
子类化。
知道了原因,要解决问题就不难了。我们只要在控件创建之后使它子类化就行了。通过一下步
骤可以实现:
1.
当然是添加控件啦,先生成控件的
C++
包容类。
2.
再要创建控件的类中声明成员变量,此成员变量是包容类的指针对象。
3.
在包容类的头文件中添加:
//{{AFX_MSG(CMyClass)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
CMyClass
是实际的类名。
4.
在包容类的
CPP
文件的
#include
段下面添加:
BEGIN_MESSAGE_MAP(CMyClass,
CWnd)
//{{AFX_MSG_MAP(CMyClass)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
5.
删除工程目录下的
.clw
文件,在工程中打开
ClassWizard
,先选
yes
,在选
Add
All
。
6.
现在你就可以使用
ClassWizard
为控件包容类添加消息映射和处理函数了。
完成这些修改后,你必须创建控件并且使它子类化,下面是个例子:
void
CSDIApp2View::OnInitialUpdate()
{
CView::OnInitialUpdate();
m_pFlexGrid
=
new
CMSFlexGrid;
CRect
rect;
GetClientRect(&rect);
m_pFlexGrid->Create(NULL,
WS_CHILD
|
WS_VISIBLE,
rect,
this,
IDC_FLEXGRID);
HWND
hWnd
=
m_pFlexGrid->Detach();
m_pFlexGrid->SubclassWindow(hWnd);
}
CWnd::CreateControl()
动态创建
ActiveX
控件时,
Windows
消息并不会被发送给我
们的由
CWnd
派生得控件类。例如,即使我们为
WM_KILLFOCUS
消息创建了句柄,这个句柄
也是不会被调用的。(不信你试试
:))
引起这个问题的原因时,
CWnd::CreateControl()
并不会使我控件的
HWND
子类化。
知道了原因,要解决问题就不难了。我们只要在控件创建之后使它子类化就行了。通过一下步
骤可以实现:
1.
当然是添加控件啦,先生成控件的
C++
包容类。
2.
再要创建控件的类中声明成员变量,此成员变量是包容类的指针对象。
3.
在包容类的头文件中添加:
//{{AFX_MSG(CMyClass)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
CMyClass
是实际的类名。
4.
在包容类的
CPP
文件的
#include
段下面添加:
BEGIN_MESSAGE_MAP(CMyClass,
CWnd)
//{{AFX_MSG_MAP(CMyClass)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
5.
删除工程目录下的
.clw
文件,在工程中打开
ClassWizard
,先选
yes
,在选
Add
All
。
6.
现在你就可以使用
ClassWizard
为控件包容类添加消息映射和处理函数了。
完成这些修改后,你必须创建控件并且使它子类化,下面是个例子:
void
CSDIApp2View::OnInitialUpdate()
{
CView::OnInitialUpdate();
m_pFlexGrid
=
new
CMSFlexGrid;
CRect
rect;
GetClientRect(&rect);
m_pFlexGrid->Create(NULL,
WS_CHILD
|
WS_VISIBLE,
rect,
this,
IDC_FLEXGRID);
HWND
hWnd
=
m_pFlexGrid->Detach();
m_pFlexGrid->SubclassWindow(hWnd);
}
相关文章推荐
- 在VC中,让动态创建的ActiveX控件响应Windows消息。
- 在VC中,让动态创建的ActiveX控件响应Windows消息[转]
- C++ 动态创建按钮及 按钮的消息响应
- MFC动态创建控件及添加消息响应
- MFC动态创建按钮及添加消息响应
- MFC动态创建按钮及添加消息响应
- MFC 动态创建控件及添加消息响应函数
- VC++6.0动态创建按钮并响应其消息
- 动态创建控件的消息响应添加
- MFC动态创建控件及添加消息响应
- MFC动态创建控件及添加消息响应
- MFC 动态创建按钮及响应按钮消息
- 动态创建按钮及添加消息响应
- 动态创建的CListCtrl控件的消息响应
- MFC动态创建控件及添加消息响应
- 【转载】MFC动态创建控件及其消息响应函数
- MFC中动态创建多个按钮并实现其消息响应
- MFC动态创建按钮及添加消息响应
- MFC动态创建按钮及添加消息响应
- MFC动态创建控件(按钮)及添加消息响应