OnSize()加入处理函数后,DEBUG报告出错

  一个窗体,在窗体上添加了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给我的一样。都是跟我说,网络电视的界面并不一定要提供可以自由拉伸的功能。只要可以提供固定大小,和全屏播放就行了。再一方面说,很多这方面的软件,为了美观对是要求固定大小的。
  所以,在考虑因定大小中。但这个问题总应该有解决的方法,不能因为这样就放弃去了解如果解决这个问题吧。

你可能感兴趣的:(OnSize()加入处理函数后,DEBUG报告出错)