Posted on 2006-04-01 22:30
Tauruser 閱讀(4781)
評論(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給我的一樣。都是跟我說,網絡電視的界面并不一定要提供可以自由拉伸的功能。只要可以提供固定大小,和全屏播放就行了。再一方面說,很多這方面的軟件,為了美觀對是要求固定大小的。
所以,在考慮因定大小中。但這個問題總應該有解決的方法,不能因為這樣就放棄去了解如果解決這個問題吧。