Posted on 2006-04-01 22:30
Tauruser 阅读(4737)
评论(8) 编辑 收藏 引用
一个窗体,在窗体上添加了Windows Media Player控件,想实现窗体大小调整时,WMP也随着变化。于是在窗体OnSize()信息下,添加m_wmpplayer.MoveWindow(0,0,cx,cy)函数。
void
CSysuTVFormView::OnSize(UINT nType,
int
cx,
int
cy)
{
CFormView::OnSize(nType, cx, cy);
//
TODO: 在此处添加消息处理程序代码
m_wmpplayer.MoveWindow(
0
,
0
,cx,cy);
}
但是DEBUG时总是提示出错。如果忽略错误的话可以正常通过运行,如果才可以让解决DEBUG时出现错误?提示debug assertion failed! 位置如下。
void
CWnd::MoveWindow(
int
x,
int
y,
int
nWidth,
int
nHeight, BOOL bRepaint)
{
ASSERT(::IsWindow(m_hWnd)
||
(m_pCtrlSite
!=
NULL));
if
(m_pCtrlSite
==
NULL)
::MoveWindow(m_hWnd, x, y, nWidth, nHeight, bRepaint);
else
m_pCtrlSite
->
MoveWindow(x, y, nWidth, nHeight);
}
另外,运行的时候,如果我变大窗体,没有问题。但是如果调小窗体的时候就会出现水平和垂直滚动条。这并不是我想要的,怎样才可去掉那两个滚动条呢?
对于第一个问题,在CSDN上问了三天,还没有人给也我解决方案。但是小明给了我一个解决方案。
在窗体的资源上删除WMP控件。并在OnCreate()用Create方法创建WMP。
int
CSysuTVFormView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if
(CFormView::OnCreate(lpCreateStruct)
==
-
1
)
return
-
1
;
m_wmpplayer.Create(NULL, WS_VISIBLE,
CRect(
50
,
50
,
100
,
100
),
this
,
0
);
//
return
0
;
}
这样子之后,再DEBUG就再没有提示报错了。但是,新的问题还是继续出现。
随便再窗体上加一个控件,如输入框,按钮等。DEBUG的时候,又重新报错了。当然RELEASE时没有报错。继续想不明白中……
对于第二个问题,问过学校教MFC的一个老师,他倒是给我这样的答复。这个答复和PX给我的一样。都是跟我说,网络电视的界面并不一定要提供可以自由拉伸的功能。只要可以提供固定大小,和全屏播放就行了。再一方面说,很多这方面的软件,为了美观对是要求固定大小的。
所以,在考虑因定大小中。但这个问题总应该有解决的方法,不能因为这样就放弃去了解如果解决这个问题吧。