vs2012偷梁换柱法之改变一个没有m_hWnd的active控件窗口大小
来源:互联网 发布:unity3d格式 解包 编辑:程序博客网 时间:2024/06/05 09:48
在插入一个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
阅读全文
0 0
- vs2012偷梁换柱法之改变一个没有m_hWnd的active控件窗口大小
- vs2012偷梁换柱法之改变一个没有m_hWnd的active控件窗口大小
- 控件大小随窗口大小改变
- 让FormView上的控件大小随父窗口改变
- MFC----窗口的缩放及控件随拖动改变大小
- EasySize类-----改变窗口中各个控件的大小
- Delphi让控件随着窗口的大小而改变
- mfc中控件随着窗口的大小改变而改变大小
- C#窗口控件大小随窗口大小而改变
- 设置控件随窗口大小而改变
- MFC 控件随窗口大小而改变
- 设置控件随窗口大小而改变
- 设置控件随窗口大小而改变
- vim 改变窗口的大小
- 禁止改变窗口的大小
- vim改变窗口的大小
- vim 改变窗口的大小
- 随着窗口大小的改变调整控件的位置和大小
- SharedPreferences数据存储类的简单使用
- 隐式类型转换(C语言)
- odoo初学遇到问题小集锦
- Linux服务器运维:使用Crontab定期清理tomcat日志
- Python3.5——文件读与写详解(上)
- vs2012偷梁换柱法之改变一个没有m_hWnd的active控件窗口大小
- 微信小程序支付 java
- 安装office2016后文档表格不能显示图标
- trafodion sqlci (core dumped)
- Java高级篇(四一)------Servlet生命周期
- linux复制指定目录下的全部文件到另一个目录中,linux cp 文件夹
- 快排非递归
- 求学之道
- 对redis的理解