vs2012偷梁换柱法之改变一个没有m_hWnd的active控件窗口大小
来源:互联网 发布:央视官网mac版 编辑:程序博客网 时间:2024/06/06 08:45
在插入一个Axtivex控件之后,我们有时会需要改变其大小,有的控件可以轻松是使用GetDlgItem(IDC_XXX)来获取其矩形的面积,但有些可能就会出错,当我在插入Windows media player控件时,就遇到了这种问题,经过仔细探究,其原因请参看:
1、一个没有m_hWnd的active控件窗口如何改变大小?
2、Activex调试以及m_hWnd为空 解决办法
3、ActiveX 控件窗口而不创建直到在 Internet Explorer 中可见
其实可以大概明白原因,给我灵感的是在 一个没有m_hWnd的active控件窗口如何改变大小?中起到的一个范例,最终获得一种不太乎完美但至少可以work的解决方案,下面介绍其:
1、在一个对话框上插入media player 控件,同时插入一个组框(Group Box)IDC_STATIC1,和media player控件一样大小,media player控件完全覆盖组框控件IDC_STATIC1,并将组框控件的visible属性设为FALSE, transparent属性设为TRUE,在Onsize中添加(依照我的工程Test来说,结尾给出其源码链接)如下代码:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void CTestDlg::OnSize(UINT nType, int cx, int cy)
{
CDialogEx::OnSize(nType, cx, cy);
// TODO: 在此处添加消息处理程序代码
if (m_Player.GetControlUnknown() == NULL) return;
IOleObjectPtr pOleObj(m_Player.GetControlUnknown ());
if (pOleObj != NULL)
{
if (m_changed)
{
int i = 0;
for (int index=IDC_OPENBTN; index <= IDC_STATIC1; index++ )
{
if (index != IDC_STATIC1)
ReSize(NULL, m_rectControls[i++], index);
else
ReSize(&m_Player, m_rectControls[i++], NULL);
}
Invalidate();
}
}
}
{
CDialogEx::OnSize(nType, cx, cy);
// TODO: 在此处添加消息处理程序代码
if (m_Player.GetControlUnknown() == NULL) return;
IOleObjectPtr pOleObj(m_Player.GetControlUnknown ());
if (pOleObj != NULL)
{
if (m_changed)
{
int i = 0;
for (int index=IDC_OPENBTN; index <= IDC_STATIC1; index++ )
{
if (index != IDC_STATIC1)
ReSize(NULL, m_rectControls[i++], index);
else
ReSize(&m_Player, m_rectControls[i++], NULL);
}
Invalidate();
}
}
}
源码链接:http://download.csdn.net/detail/johnnyhu90/6312769
- vs2012偷梁换柱法之改变一个没有m_hWnd的active控件窗口大小
- vs2012偷梁换柱法之改变一个没有m_hWnd的active控件窗口大小
- 控件大小随窗口大小改变
- 让FormView上的控件大小随父窗口改变
- MFC----窗口的缩放及控件随拖动改变大小
- EasySize类-----改变窗口中各个控件的大小
- Delphi让控件随着窗口的大小而改变
- mfc中控件随着窗口的大小改变而改变大小
- C#窗口控件大小随窗口大小而改变
- 设置控件随窗口大小而改变
- MFC 控件随窗口大小而改变
- 设置控件随窗口大小而改变
- 设置控件随窗口大小而改变
- vim 改变窗口的大小
- 禁止改变窗口的大小
- vim改变窗口的大小
- vim 改变窗口的大小
- 随着窗口大小的改变调整控件的位置和大小
- Web前端优化最佳实践及工具集锦
- stl--<map>的用法
- c语言指针用法难点
- 人体艺术之时钟
- CHAR,VARCHAR,NVARCHAR,数据库字段类型
- vs2012偷梁换柱法之改变一个没有m_hWnd的active控件窗口大小
- 近期读到的java代码总结
- nyoj 76-超级台阶
- POJ 2828 线段树 单点更新,单点查询
- 内存的问题
- iOS开发知识要点
- 解决更新SDK出现的Failed to fetch URL
- android手把手教你开发launcher(三)——启动安装的应用程序
- 使用枚举做为类的字段时与数据库的交互